Commit Graph

630 Commits

Author SHA1 Message Date
gbeauche
873377726b fix regression introduced in the load of OldWorld ROMs when Direct Addressing
mode was impemented
2004-12-12 18:45:44 +00:00
gbeauche
0c8d0cd8be SheepShaver icon for Windows 2004-12-11 11:19:55 +00:00
gbeauche
ce1420dcce use native windows critical sections to implement atomic interrupt flags
handling and B2_mutexes
2004-12-11 10:17:48 +00:00
gbeauche
22efcbc6e4 native windows threads, set a higher thread priority to the tick thread,
implement Pause/ResumeEmulator()
2004-12-11 09:42:34 +00:00
gbeauche
ef8e363c5c new NATMEM_OFFSET (0x02000000) makes it possible to allocate space for
the MacOS DR emulator code, though the usual limitations exist there
2004-12-11 08:59:57 +00:00
gbeauche
27eb7cccae Windows-specific prefs items 2004-12-07 22:43:21 +00:00
gbeauche
3cd6c38e99 native windows version of SheepShaver (does not depend on cygwin.dll) 2004-12-07 22:40:30 +00:00
gbeauche
292b839e47 add Windows-specific localizable strings 2004-12-07 22:36:29 +00:00
gbeauche
9e96bd8241 fix cntlzw masks, fix build with cygwin/gcc 2004-11-26 00:13:05 +00:00
gbeauche
6287978c19 enable build of the cpu tester from the SheepShaver tree 2004-11-25 19:14:15 +00:00
gbeauche
6d68826725 cope with cygwin assembler'isms 2004-11-25 00:29:36 +00:00
gbeauche
3caa663fc8 try to cope with cygwin assembler 2004-11-25 00:25:53 +00:00
gbeauche
a6109dbec5 fix i386 offsets for direct patching. Fix Cygwin support. 2004-11-25 00:24:07 +00:00
gbeauche
53dfcecb54 16-byte aligned memory allocator only for sheepshaver_cpu 2004-11-25 00:21:09 +00:00
gbeauche
73a3269ea5 Merge in Win32 (COFF) executable support from QEMU. Also add Mach parser
but it's unlikely to work, simply keep it in sync.
2004-11-24 23:07:55 +00:00
gbeauche
602851a68e move ppc-execute-impl.cpp dep down after DYNGENDEPS is defined
(fix parallel build, tested as make -j5)
2004-11-24 22:57:10 +00:00
gbeauche
f6d5e64088 cosmetics (only include <stddef.h> for size_t definition) 2004-11-24 22:49:15 +00:00
gbeauche
061b9512f3 fix coff symbol table decoding 2004-11-24 22:48:38 +00:00
gbeauche
a5837cd989 check for <fenv.h> 2004-11-24 22:48:02 +00:00
gbeauche
7114f0d4cd a.out definitions for the cygwin coff object analyzer 2004-11-23 23:18:54 +00:00
gbeauche
ba20dc55d7 fix build with dyngen JIT 2004-11-22 23:35:05 +00:00
gbeauche
bf2185c208 fix build on unixish platforms 2004-11-22 23:17:32 +00:00
gbeauche
26a128bf6a use new ieeefp.hpp wrapping over <fenv.h> 2004-11-22 22:55:50 +00:00
gbeauche
ddcd7a8df8 Implement some <fenv.h> functions on systems that don't support them
yet. This includes Cygwin/x86. The code is derived from the GNU C Library.
2004-11-22 22:54:53 +00:00
gbeauche
a9928fe707 Cygwin support. Only generate NATMEM_OFFSET definitions in Direct Addressing
mode. Merge sshpty.c support detection code from Basilisk II.
2004-11-22 22:51:54 +00:00
gbeauche
1eab606dcb Cygwin Direct Addressing hack. 2004-11-22 22:40:26 +00:00
gbeauche
22af21e7fa Add .exe extensions accordingly. Fix build without dyngen JIT support 2004-11-22 22:23:55 +00:00
gbeauche
0a61d5ea64 Add missing symlinks. Fix LN_S with source dirs contains spaces. 2004-11-22 22:21:33 +00:00
gbeauche
40fcbdc172 Avoid use of Host2MacAddr() with static data as it may need to force
a 32-bit address truncation on 64-bit platforms with DIRECT_ADDRESSING
or with platforms with particular Direct Addressing modes (a.g. Cygwin)
2004-11-22 22:16:09 +00:00
gbeauche
e1bbf0714b PPC_REENTRANT_JIT is only valid with JIT enabled 2004-11-22 22:09:05 +00:00
gbeauche
114f5ff6c7 Use BUILD_SHEEPSHAVER_PROCEDURE to allocate static procedures into the
SheepShaver globals. Fix build of sheepshaver_glue.cpp without JIT.
2004-11-22 22:04:38 +00:00
gbeauche
7be8af917c Try to explain the SheepShaver globals 2004-11-22 21:50:45 +00:00
gbeauche
d6c7e0eb23 New SheepShaver globals layout, move ZeroPage into the middle. Since it is
a read-only page, it can also be used to detect overlaps between Procedure
space and Data space.

Provide native Windows implementation of shared MacOS KernelData allocation.
This is moved under main() so that to avoid a weird linking error. This native
implementation is independent of Cygwin IPC (and possible background server)
2004-11-22 21:33:32 +00:00
gbeauche
40367bd931 new SheepShaver globals layout 2004-11-22 21:22:58 +00:00
gbeauche
970bc59e40 fix build without dyngen enabled 2004-11-21 20:50:51 +00:00
gbeauche
ba11daf004 Inherit clip_unix.cpp from Basilisk II, now they are identical. 2004-11-15 23:41:08 +00:00
gbeauche
3ace37f4eb Implement Direct Addressing mode similarly to Basilisk II. This is to get
SheepShaver working on OSes that don't support maipping of Low Memory globals
at 0x00000000, e.g. Windows.
2004-11-13 14:09:16 +00:00
gbeauche
9e330d5615 fix cpuid test on x86_64 and newer binutils 2004-11-11 07:25:45 +00:00
gbeauche
62f9a4bbba fix build on 32-bit platforms 2004-11-10 10:23:38 +00:00
gbeauche
c3333e8ef6 fix deps for parallel build (tested make -j4) 2004-11-10 07:24:33 +00:00
gbeauche
5d79c5a5f2 fix build on 64-bit platforms with gcc3.4, especially on x86_64 2004-11-10 06:47:17 +00:00
gbeauche
c45fa9c75e fix build on FC2/x86_64 (Bob Deblier) 2004-09-27 19:08:23 +00:00
gbeauche
4f78562642 SDL audio support 2004-07-19 19:42:21 +00:00
gbeauche
a83dfd52d0 fix gc_mask2 patch for gossamer 2004-07-14 08:24:07 +00:00
gbeauche
4d60dea4ee Revert last change until I can check myself... 2004-07-11 08:12:21 +00:00
gbeauche
58e74f3ca0 Enable ethernet everywhere, several users got it to work. Hangs may be
unrelated to ethernet code anyway and ethernet driver should be endian
safe nowadays.
2004-07-11 07:54:56 +00:00
gbeauche
18a039b610 Notify upper execution levels that we invalidated the translation cache,
even partially. i.e. Always get out of compiled code on any cache invalidate
2004-07-11 06:44:52 +00:00
gbeauche
623a804814 Remove "native" EmulOp stuff as it is useless and duplicates functionalities 2004-07-11 06:42:28 +00:00
gbeauche
c1c16e9997 Use Nigel's "extfs" implementation on MacOS X 2004-07-10 07:38:51 +00:00
gbeauche
b60874907e Better PowerPC / POWER CPU detection from Linux cpu_specs[] table. 2004-07-10 06:15:42 +00:00
gbeauche
9a93480546 Remap any newer G4/G5 processor to plain G4 for compatibility 2004-07-07 04:33:37 +00:00
gbeauche
cdd4462cd3 MacOS X bundle stuff. make SheepShaver_app to build the .app. 2004-07-07 04:13:37 +00:00
gbeauche
ba0b428bba MacOS X bundle stuff 2004-07-07 04:07:09 +00:00
gbeauche
ebdb5d29fd get timebase-frequency on osx too. 2004-07-04 05:19:44 +00:00
gbeauche
9545f93d3d More accurate Gestalt 'cput' values (G4, 750FX) 2004-07-03 17:48:44 +00:00
gbeauche
0669b02e5f Introducce TimebaseSpeed which represents exact timebase-frequency instead
of supposing it to be (BusClockSpeed/4), which is no longer true on G5 et al.
2004-07-03 10:39:07 +00:00
gbeauche
ddd6402a16 fix jump crossing init of start_time 2004-07-02 15:38:54 +00:00
gbeauche
e03fe79872 Move NQD to gfxaccel.cpp, since it does not depend on a specific system
implementation.
2004-07-02 06:06:34 +00:00
gbeauche
32a6ac321c Try to recognize and handle PowerPC 970 (G5). Untested as I don't have such
platforms handy.
2004-07-01 22:55:02 +00:00
gbeauche
ecbb2163ff Better hardware cursor mapping from SDL code. 2004-06-30 22:03:34 +00:00
gbeauche
d51727009e check for egrep 2004-06-30 08:51:37 +00:00
gbeauche
39a6cdf957 Avoid corefiles. Check for large file support (> 2 GB). 2004-06-30 08:48:45 +00:00
gbeauche
0d206db2e7 Use autoconf 2.5 so that we could get m4sugar macros (AS_VAR_PUSHDEF et al.)
and more importantly correct macros for AC_SYS_LARGEFILE support.

BTW, also fix test for <linux/if.h>
2004-06-30 08:45:14 +00:00
gbeauche
41035e5064 Fix Gestalt for PowerPC 745x processors. 2004-06-30 08:17:12 +00:00
gbeauche
eb9961585b Handle 750FX, 7450, 7455, 7457. 2004-06-29 20:25:55 +00:00
gbeauche
76bb0a9d60 fix typo 2004-06-27 22:14:09 +00:00
gbeauche
4b680a1ccb Add configure macros to check for -framework Carbon and -framwork IOKit so
that we can include ../MacOSX/clip_macosx.cpp (clipboard support),
../MacOSX/sys_darwin.cpp (cdrom, floppy et al. support). Also handle new
SDL keycodes file.
2004-06-27 22:12:52 +00:00
gbeauche
b6bf86c406 Fix typo in comment here too. ;-) 2004-06-27 20:36:51 +00:00
gbeauche
794ad50b0b Symlink MacOS X sys_darwin.cpp and clip_macosx.cpp 2004-06-27 20:18:08 +00:00
gbeauche
380d4f294e Make sure to initialize alt stacks before SIGSEGV handlers 2004-06-26 16:25:22 +00:00
gbeauche
3e5c98c7d4 Performance of VOSF is heuristically determined at run-time, so have to
initialize SIGSEGV handlers early, as in Basilisk II. Besides, also add
missing call to vm_init() in case host system doesn't have MAP_ANON.
2004-06-26 15:26:18 +00:00
gbeauche
df3cf1ac52 Add --enable-sdl-static option to use static SDL libraries. Useful e.g. on
MacOS X as user might not have SDL installed and I am using self-built
libraries placed into /usr/local/lib/*. Note this can add extra dependencies
to unused libraries.
2004-06-24 16:32:12 +00:00
gbeauche
67da895ec6 Check for strlcpy(). Check for "true" better with AC_PROG_PATH 2004-06-24 16:13:53 +00:00
gbeauche
0dcb2b4516 SDL support in SheepShaver too, though it doesn't work in native mode
on Linux/ppc as libSDL is pulling in libpthread which conflicts with
our sheepthreads.
2004-06-24 15:37:26 +00:00
gbeauche
20014c1c7c Provide Host2MacAddr(), which returns address in Mac address space. 2004-06-24 15:34:59 +00:00
gbeauche
10e94e8abd Symlink dummy/clip_dummy.cpp and SDL directory. 2004-06-24 15:31:50 +00:00
gbeauche
358def87a4 Fix for new SDL code in Basilisk II. 2004-06-23 14:41:49 +00:00
gbeauche
1c8f60e63a Disable VOSF on OSX, SIGSEGV recovery is too slow. 2004-06-22 22:41:44 +00:00
gbeauche
15f0ca6a22 Force use of MacX mappings on MacOS X with Apple's X server. 2004-06-22 20:01:18 +00:00
gbeauche
5357aac108 Fix VideoExit() on OSX, there was no cancellation point in redraw_thread. 2004-06-22 19:32:00 +00:00
gbeauche
e0a76f9e38 Don't handle XLM_IRQ_NEST atomically in emulated mode. That's useless since
this variable is modified only within a single thread and interrupts are
not handled asynchronously.
2004-06-22 17:10:08 +00:00
gbeauche
1988a45a16 More realistic "mftb" implementation, aka. fix AbsoluteToNanoseconds() and
generally speaking UpTime()-based stopwatchers.
2004-06-22 15:48:50 +00:00
gbeauche
070ac7079f Always handle interrupt even if InterruptFlags == 0, though it should not
really happen in practise.
2004-06-22 14:18:35 +00:00
gbeauche
f2324520b7 Improve timing of periodic threads (from Basilisk II), aka. make 10 seconds
really last 10 seconds, not 18. ;-)
2004-06-22 12:20:17 +00:00
gbeauche
2224cc63d0 MacOS 9.0.4 support. ;-) 2004-06-20 19:10:02 +00:00
gbeauche
cb46ffe97a Get PVR information et al. through (slow) ioreg -c IOPlatformDevice 2004-06-17 05:15:25 +00:00
gbeauche
5f98a013a5 Don't bother with predecode cache when using JIT. 2004-06-15 21:37:22 +00:00
gbeauche
72b26d7ff7 Stop forced compilation when entering a new JIT execution level. 2004-06-15 21:27:46 +00:00
gbeauche
aeab320c3f Speed up testsuite with JIT compilers. Fix exit code. 2004-06-15 21:02:24 +00:00
gbeauche
6eb8c20565 Merge event2keycode() from Basilisk II, aka. make Option key mapped to
Mode_Switch work as real option key. Merge caps_on handling from B2 too.
2004-06-11 22:09:27 +00:00
gbeauche
f574a5df05 Cleanups. Rewrite gen_bc() so that no push/pop could be inserted thus
causing crahes with some compilers. However, that's slower.
2004-06-09 16:36:44 +00:00
gbeauche
301d3a3192 STATS: Account for all interrupts, but still count native interrupts. It
turns out that for a regular bootup sequence to the Finder, less than 30%
interrupts triggered were in native mode.

Default EMUL_TIME_STATS to 0, end user probably doesn't want garbage to
be printed to his console.
2004-06-05 07:09:38 +00:00
gbeauche
1a4e0d5c40 remove now obsolete code 2004-06-05 06:30:58 +00:00
gbeauche
d5f6d59ad0 When no fullscreen mode requested nor available, always try to pick the
first windowed mode matching current depth.
2004-06-05 06:28:21 +00:00
gbeauche
a9c38c3598 Add "jit68k" prefs item to enable built-in 68k DR emulator. 2004-06-03 21:52:55 +00:00
gbeauche
bf17f78ac4 Disable testandset() locks, use pthread's as SheepShaver occasionnally hangs
with spinlocks. Weird as those are derived from x86 linuxthreads.
2004-06-02 16:11:49 +00:00
gbeauche
76c06c52e0 Fix and enable NQD (bitblt, fillrect) on little-endian platforms too 2004-06-02 15:41:34 +00:00
gbeauche
c8d897b558 Disable DR Cache for now, as I don't know why it occasionnally crashes. 2004-05-31 11:00:13 +00:00
gbeauche
374101ee9e Make DR Cache executable by default in native PowerPC mode. 2004-05-31 10:55:42 +00:00
gbeauche
389dd61d0d Check for SIGSEGVs from DR Cache code too. 2004-05-31 10:08:31 +00:00
gbeauche
a533a9c455 Enable DR emulator with OldWorld ROMs too. It turned out that translated
code was also trying to access Serial memory.

Note however that I noticed some rare crashes with the DR emulator.
Probably caused by nested runs from EmulOps? We'd really want a native
68k emulator too for Execute68k() things.
2004-05-31 10:02:20 +00:00
gbeauche
7bc86b27ee Enable Apple DR emulator from NewWorld ROMs only. 2004-05-31 09:04:44 +00:00
gbeauche
0241704587 Add GUI items for "idlewait" and "gfxaccel" 2004-05-25 16:12:14 +00:00
gbeauche
6eb7262000 STR_1152x768_CTRL => "Fullscreen 1152x768" 2004-05-25 15:33:24 +00:00
gbeauche
619aa9b319 Translate LMW, STMW and DCBZ instructions. 2004-05-23 16:34:38 +00:00
gbeauche
b0aae35951 Do FOLLOW_CONST_JUMPS for bcl 20,BI,TARGET branches too, since that's an
unconditional jump and we don't need the LR in that case.

Also fix this:
SheepShaver: ../kpx_cpu/src/cpu/ppc/ppc-translate.cpp:1499: powerpc_block_info* powerpc_cpu::compile_block(unsigned int): Assertion `dg.jmp_addr[i] != __null' failed.
Aborted

aka. StuffIt Expander + pressing the 'Cancel' button.
2004-05-23 06:41:25 +00:00
gbeauche
05bd5f40b4 Fix NativeOp code generation, especially in PPC_REENTRANT_JIT mode 2004-05-23 05:28:12 +00:00
gbeauche
f376933138 Attempt to fix direct block chaining code in corner cases. e.g. really
chain only blocks within page boundaries (compare against block entry point)
2004-05-22 17:57:36 +00:00
gbeauche
d9168c9869 add and fix testandset for x86_64 2004-05-20 17:46:49 +00:00
gbeauche
3a033cf79b atomic spcflags 2004-05-20 17:19:59 +00:00
gbeauche
bd6eaf680a Get rid of old (and broken) ASYNC_IRQ / MUTICORE code 2004-05-20 12:33:58 +00:00
gbeauche
3a960764ea Don't allow "recursive" NanoKernel interrupts 2004-05-20 11:47:27 +00:00
gbeauche
ec6c98035b Better interrupt context checking code 2004-05-20 11:05:30 +00:00
gbeauche
c3f2342f47 Make NativeOp() handler a sheepshaver_cpu handler, thus getting rid of ugly
GPR macro definition.

Make the JIT engine somewhat reentrant. This brings a massive performance
boost for applications that cause many Execute68k(). e.g. audio in PlayerPRO.
2004-05-19 21:23:17 +00:00
gbeauche
76bb058d70 Use memmove() in NQD_bitblt() in order to avoid possible overlaps 2004-05-16 15:48:25 +00:00
gbeauche
ae0e7293dd Don't take an EMUL_OP mode switch for Microseconds() and SynchIdleTime() 2004-05-15 17:26:28 +00:00
gbeauche
28eb840182 "idlewait" support for Linux and NewWorld ROMs 2004-05-15 16:36:44 +00:00
gbeauche
65e1edb5b2 Fix bus frequency detection for more realistic timers.
Also add bus-frequency and timebase-frequency values to the Name Registry.
2004-05-15 11:07:11 +00:00
gbeauche
3904a421d4 Use assembly optimizations on x86 for adde/addo/etc. emulation 2004-05-14 08:25:30 +00:00
gbeauche
2ee1e604eb Revert to use hw mac cursor acceleration in windowed mode 2004-05-14 08:24:31 +00:00
gbeauche
7da40bee5c Handle SAFE_INTERRUPT_PPC to check possible nested calls (and this happens) 2004-05-12 15:54:23 +00:00
gbeauche
4571aa1c23 Typos. In EtherIRQ sheep_net case, really grab size bytes from device 2004-05-12 11:42:12 +00:00
gbeauche
8f6a408701 chmod 755 installed tunconfig 2004-05-12 11:39:00 +00:00
gbeauche
f75394db90 Direct block chaining works on all supported platforms, enabled by default 2004-05-12 11:38:16 +00:00
gbeauche
05fad61b21 Direct block chaining works on all supported platforms 2004-05-12 11:36:39 +00:00
gbeauche
81ae2fee40 Direct block chaining on x86 and amd64 too. Optimize do_execute_branch_bo<>
No need to update Program Counter if we have direct linked blocks.

TODO: remove obsolete PC-related generators
2004-05-12 10:44:04 +00:00
gbeauche
15a0779328 Size optimization: don't generate jump_next_A0() code in block chaining
mode since the only case we would reach that is when there are pending
interrupts, thus needing to exit from this basic block ASAP. Otherwise,
we jumped to linker trampolines
2004-05-11 21:53:48 +00:00
gbeauche
08bcd2653d direct block chaining, aka faster block dispatcher 2004-05-11 20:53:25 +00:00
gbeauche
6c0e2a9f2a Disable MacOS -> X11 copying of cursor in windowed mode too. You can
recompile with "mac_cursor_enabled" constant set to true. Disabling it
causes a better looking cursor that is not "disappearing" sometimes with
e.g. Microsoft Internet Explorer.
2004-05-10 16:42:37 +00:00
gbeauche
21607e19ad Provide Mac_sysalloc() and Mac_sysfree() for memory allocation in MacOS
system heap zone. Use them for network related data dynamically allocated.

TODO: check performance in emulated mode!
2004-05-10 16:16:26 +00:00
gbeauche
f32e5ee9ab Optimize for 32-bit big endian platforms 2004-05-10 15:42:35 +00:00
gbeauche
fd8b5bbb7a Tentative little-endian fixes 2004-05-10 12:05:45 +00:00
gbeauche
cbc77b202d Link keycodes & tunconfig files, DESTDIR'ify Unix/Makefile 2004-05-09 17:55:11 +00:00
gbeauche
85347b85c7 TUN/TAP support 2004-05-09 17:44:18 +00:00
gbeauche
5164fc9dfc parentesisation 2004-05-07 14:19:50 +00:00
gbeauche
2eda71a795 build fixes for x86 and some older compilers 2004-05-07 13:27:26 +00:00
gbeauche
ba7bfc478e Extend NativeOp count to 64 (6-bit value), aka fix NATIVE_FILLRECT opcpdes.
Translate NQD_{bitblt,fillrect,invrect} to direct native calls.
Use Mac2HostAddr() for converting Mac base address to native.
2004-04-22 22:54:47 +00:00
gbeauche
8b40a7e721 NQD: use ReadMacInt*() and WriteMacInt*() accessors, i.e. code should now
be little-endian and 64-bit safe.
2004-04-22 21:45:18 +00:00
gbeauche
b4ac3fb507 Basic fillrect/invrect NQD. Code may need to be factored out somehow.
Verify that bitblt NQD transfer modes are really CopyBits() ones [MB5].
2004-04-22 20:57:31 +00:00
gbeauche
04dcff8ab4 Constrain NQD to powerpc (32-bit big endian) at this time 2004-04-18 23:17:54 +00:00
gbeauche
a65a6c6db2 Start Native QuickDraw acceleration 2004-04-18 23:03:53 +00:00
gbeauche
123a5210e4 Fix nested ppc_interrupt() stack corruption problem by allocating yet
another stack when next signal is triggered. I am still unsure if
even MacOS would normally handle nested calls to NanoKernel interrupt
routine.
2004-04-14 20:25:26 +00:00
gbeauche
fd474d041d Fix DGA mode for emulated PPC targets. It currently doesn't work in native
mode as the stack is corrupted and we are jumping to garbage when moving
the mouse. Also add 1152x768 resolution from PBG4, but make timing match
the 1152x870 version.

Cleanups, further merges from Basilisk II tree.
2004-04-13 22:22:22 +00:00
gbeauche
e6a05869ac Disable VidMode extension by default as some video cards don't support it
well, thus causing a black screen. Besides, fix up sigsegv_recovery logic
2004-04-13 22:13:19 +00:00
gbeauche
61aa371b48 Handle NO_CONFIGURE variable if we are only generating the configure script 2004-04-13 22:12:27 +00:00
gbeauche
e9ca9478d2 Map window close widget to the Mac "power" key. 2004-04-11 10:46:32 +00:00
gbeauche
9b4a75139e Merge run-time depth switching code from Basilisk II. 2004-04-10 23:15:22 +00:00
gbeauche
ec2511fd99 Load XPRAM default values if signature not found. i.e. don't hang on first
boot.
2004-04-06 19:47:56 +00:00
gbeauche
689d017cbd fix for SheepThreads (native mode) 2004-02-25 22:02:59 +00:00
gbeauche
9dc6cdc70e Portability fixes: declare Set_pthread_attr() only if HAVE_PTHREADS. Merge
add_{serial,ether}_names() from B2 prefs editor for FreeBSD/IRIX.
2004-02-24 23:09:39 +00:00
gbeauche
47348e8120 16-byte aligned memory allocator will try the following functions in-order
(determined at compile-time): posix_memalign, memalign, valloc, malloc.
2004-02-24 14:09:12 +00:00
gbeauche
ae93ea2f16 Make SheepShaver work with OS 8.6 out-of-the-box with no extra patch for
the time being. i.e. ignore writes to the zero page when faking SCSIGlobals
2004-02-24 11:12:54 +00:00
gbeauche
643f9ad5e5 fix auto-detection of SSE headers on x86 2004-02-24 10:21:21 +00:00
gbeauche
b802615c36 Don't include SSE/MMX intrinsics headers if they are not available 2004-02-20 17:33:28 +00:00
gbeauche
ab5adf0bb3 Add <*mmintrin.h> detection for generic SSE2/SSE/MMX optimizations 2004-02-20 17:21:08 +00:00
gbeauche
cdab3d6975 we have to 16-byte align sheepshaver_cpu object has it contains SSE values
that require this alignment.
2004-02-20 17:20:15 +00:00
gbeauche
443231c1da First round of SSE/MMX optimizations & experimentations. AltiVec Fractal
Carbon performance increased by a factor 8 (420 MegaFlops).
2004-02-20 17:18:44 +00:00
gbeauche
2b1f76f343 handle .rodata.cst4, generate HAVE_gen_op_XXX for compile-time detection of
synthetic instruction generators available.
2004-02-20 17:16:55 +00:00
gbeauche
ea3c6801ab Experiment with generic AltiVec optimizations for V4SF, V2DI operands (+60%) 2004-02-16 23:17:27 +00:00
gbeauche
680326da55 Add --with-dgcc=COMPILER to use C++ COMPILER (gcc) suitable to compile
synthetic opcodes. Auto-detect ICC and force use of gcc for DYNGEN_CC.
2004-02-16 16:30:22 +00:00
gbeauche
0c421f0be8 Filter out specific symbols first prior to triggering the general case with
C++ symbol demangling.
2004-02-16 15:36:34 +00:00
gbeauche
7a7abb30b4 GCC 3.4 fixes 2004-02-16 15:35:37 +00:00
gbeauche
18893e22bd GCC 3.4 does not allow the lazy_allocator instantiation, the other form is
not supported by any GCC but ICC accepts it.
2004-02-16 15:34:55 +00:00
gbeauche
8b66b778e6 Fixes for GCC 3.4 2004-02-16 15:33:22 +00:00
gbeauche
d10a3586f1 Year got increased "recently". ;-) 2004-02-16 10:57:07 +00:00
gbeauche
00280fbaaa is it better? 2004-02-16 09:05:28 +00:00
gbeauche
e944110707 try to fix cvs update -d conflicts 2004-02-16 09:04:57 +00:00
gbeauche
546f65a365 Now that we have AltiVec emulation, we can pretend for a G4 processor
Also make sure to actually fix PVR code for 7400
2004-02-15 17:20:36 +00:00
gbeauche
313cddeeb2 AltiVec emulation! ;-) 2004-02-15 17:17:37 +00:00
gbeauche
d92989dc53 Add AltiVec regression testsuite 2004-02-15 17:16:57 +00:00
gbeauche
8d4108dd3a Recognize 7400 & 7410 cpus 2004-01-31 11:10:49 +00:00
gbeauche
74cf5d2686 add barrier to inlined block dispatcher 2004-01-29 21:36:31 +00:00
gbeauche
c9edbd29ee Handle .rodata.cst16 on AMD64 for FP constants. 2004-01-27 17:02:13 +00:00
gbeauche
8afa65cc96 Inline fast basic block lookups. Only check top tag as it is a hit more than
95% of the time. Overall, this improves performance by more than 2x on a P4.
2004-01-27 13:54:51 +00:00
gbeauche
41d3975f22 Don't access VIA variables in NObj resource ID 100. aka. enable MacBench 5.0
to run.
2004-01-26 22:04:01 +00:00
gbeauche
9da81c79a2 Use bswap instruction on IA-32 too. Optimize bswap_64 on little-endian
(x86 for now) systems.
2004-01-26 13:52:31 +00:00
gbeauche
6a214d48b0 Faster double load/store on ia32 2004-01-26 13:51:01 +00:00
gbeauche
ea9553ee65 Optimize rlwinm further. Translate FP instructions if we don't need to
compute exceptions.
2004-01-25 23:21:06 +00:00
gbeauche
9c6b42b014 Optimize gen_mov_32_REG_im(0) case 2004-01-24 17:50:32 +00:00
gbeauche
82808234fa Merge in FP exceptions support but disable it for now as it is incomplete
and slower. Implement mcrfs. Fix and optimize fctiw with native rounding.
2004-01-24 16:43:45 +00:00
gbeauche
3de5a15902 Don't define disasm_block() in non-JIT mode. Also make sure to disassemble
native code if we can (i.e. TARGET_NATIVE disassembler exists).
2004-01-24 11:52:54 +00:00
gbeauche
10b9ab2c34 Generate PowerPC code wrapping GetResource() replacements. That way, it's
a normal PPC function invocation that can be JIT compiled to native code
instead of nesting execute() calls which may lead to use the interpreter
(this took around 11% of total execution time on boot, downto 3%).

Also, optimize some SheepShaver EmulOps and actually report non-CTI.
2004-01-24 11:28:06 +00:00
gbeauche
60d371486b Propagate done_compile down to compile1() in case it needs to override
the end-of-block condition (e.g. sheep EmulOps)
2004-01-24 11:22:48 +00:00
gbeauche
48d844a40a Add gen_spcflags_{init,set,clear} + load/store of GPRs to T2. 2004-01-24 11:20:33 +00:00
gbeauche
6a4463b8fb We need at least for native registers, hence we are guaranteed to have
REG_T2 available. Add 16/32 sign-extension in T1. Add call generators
with (T0, T1) and (T0, T1, T2) arguments.
2004-01-24 11:18:29 +00:00
gbeauche
324fba4137 Post-merge fixups: machine state wrappers, Apple assembler perticularities. 2004-01-18 22:59:06 +00:00
gbeauche
0665ab1139 No need to map ROM executable on emulated/ppc. Make sure to detect unaligned
EA for lmw/stmw with real addr instead of relying on the signal number.
2004-01-18 22:22:28 +00:00
gbeauche
7f13ce6fed Wrappers around machine state registers within signal handlers. 2004-01-18 22:14:31 +00:00
gbeauche
07fa8c79b3 Handle dummy files. Merge in configure stuff for Mach exception filters.
Check whether struct sigaction defines sa_restorer member. Don't include
posix_sem.cpp on native Linux/ppc builds.
2004-01-18 22:12:24 +00:00
gbeauche
384648a740 Darwin function descriptors act as Linux ones 2004-01-18 22:10:09 +00:00
gbeauche
04e7fcf5d3 Handle (broken) Apple assembler. Make prologue/epilogue as macros as ';'
is the comment delimiter for Darwin assembler. Increase stack pad by
16 bytes in EMUL_OP_PROC to accomodate LR saves in Darwin EmulOp
2004-01-18 22:08:39 +00:00
gbeauche
5e154ad65f Add spinlocks for Darwin/PPC 2004-01-18 22:05:28 +00:00
gbeauche
321fcfefe5 handle dummy stuff 2004-01-18 22:04:23 +00:00
gbeauche
dcf1fc5e10 paranoia checks for native Darwin/PPC port 2004-01-18 22:04:04 +00:00
gbeauche
b8a4c842fd dummy ethernet support for SheepShaver 2004-01-18 22:03:37 +00:00
gbeauche
750f9778a4 Workaround for non conforming C++ libraries 2004-01-16 15:36:14 +00:00
gbeauche
c0874f60e8 Fix native mode, a better solution would be to also add GetResource()
patches into the native_op[] table in native mode too.
2004-01-15 23:28:59 +00:00
gbeauche
09cd7ccfd6 gcc on darwin defines __ppc__, not __powerpc__ 2004-01-14 23:16:37 +00:00
gbeauche
ea61b2a4fc DGA guards 2004-01-14 23:15:41 +00:00
gbeauche
07f0be19b5 Fix FP single operations. aka fix scrollbar & Graphing Calculator bugs. 2004-01-13 23:50:09 +00:00
cebix
5098c8ae83 Happy New Year! 2004-01-12 15:55:51 +00:00
cebix
2d5de1af9d Happy New Year! :) 2004-01-12 15:37:24 +00:00
gbeauche
76a5e63bd2 Make sure 68k procedures are stored on 16-bit word boundaries. 2004-01-10 08:46:57 +00:00
gbeauche
1b0e88041e Also cache native routine descriptor instead of recreating them at each
invokation to ExecuteNative().
2004-01-07 18:24:45 +00:00
gbeauche
9f745bd142 Fix IA-32 testandset(), make spinlock_t volatile int. 2004-01-06 15:05:35 +00:00
gbeauche
5f52e637b1 Handle "keyboardtype" prefs item from Basilisk II 2004-01-06 15:03:16 +00:00
gbeauche
261efeaa9e Look for clock_gettime() as it is faster that gettime() for GetTicks_usec()
implementation. Also look for extra pthread related functions.
2004-01-06 13:24:56 +00:00
gbeauche
88edf05381 As usual, my eye captions the error just after the commit. 2004-01-04 18:38:00 +00:00
gbeauche
6146d86bae Handle --with-mon=<monsrcdir> case
Force definition of HAVE_PTHREAD_CANCEL in native mode
2004-01-04 18:36:47 +00:00
gbeauche
dd3a208906 Emulated lmw/stmw with unaligned EA. e.g. for BBEdit under MacOS 8.6.
This may be due to some switch mode that needs to save r13 and upwards.
The faultive code seems to explicitly add 0xee to r1, which causes it to
be unaligned for upcoming lmw/stmw.
2004-01-04 18:35:21 +00:00
gbeauche
5ce5736c89 Fix pthread_join() to actually wait for children. Fix semaphores and also
provide a simple producer/consumer test program.
2004-01-04 16:27:50 +00:00
gbeauche
9723f1d495 Light implementation of pthread_mutexes 2004-01-04 06:55:50 +00:00
gbeauche
e346de3199 Fix ADB problems with unitinialized mutex 2004-01-04 05:45:50 +00:00
gbeauche
53e0c46452 PutScrap and GetScrap replacements are always enabled. 2004-01-01 11:29:38 +00:00
gbeauche
602d49159c Add TODO and debug info for 'styl' resources, and TARGETS from requestors. 2004-01-01 11:28:22 +00:00
gbeauche
b2bc1db356 Remove the "klipper" hack since it now (in KDE 3.2) checks for TIMESTAMP.
Besides, we are as smooth as before with last commits.
2003-12-31 18:23:41 +00:00
gbeauche
e291c6d065 Add fast X11 display locking routines based on spinlocks, or on pthreads
in the worst case. Optimize out GetScrap() case when we already own the
selection. i.e. make it smoother. Use our own XDisplay{Un,}Lock() routines.
2003-12-31 18:16:55 +00:00
gbeauche
ea33a5c8b0 Handle copy-paste between X11 and MacOS. X11 events handling code has to
be improved in copy mode (when we own the selection to service other clients).
Also note that older klipper has a tendency to request clipboard data
several times per second.
2003-12-31 11:37:26 +00:00
gbeauche
70c1d04b2a Declare timing functions from timer_unix.cpp 2003-12-28 17:56:03 +00:00
gbeauche
7f6078a591 Merge in Mouse Wheel support from Basilisk II. 2003-12-27 10:37:30 +00:00
gbeauche
b9b0b5248b Merge in dsp, mixer, ignoresegv prefs items from Basilisk II. Audio output
does not work with NewWorld ROMs yet.
2003-12-27 10:02:33 +00:00
gbeauche
a27aa7dc26 Sign-extend get_resource() ID parameter so that vCheckLoad sees them
correctly. e.g. for sift resources to be patched (-16497)
2003-12-27 09:42:15 +00:00
gbeauche
213b8c1b7d audio fixes 2003-12-27 09:08:51 +00:00
gbeauche
9e1d1606ff Cosmetic fixes to vm_write_memory_*() functions. 2003-12-26 17:27:47 +00:00
gbeauche
97ce4fdc75 Match Linux/ppc native version better: jump to ROM with EmulatorData in r4,
preserve CR & XER registers on EmulOp.
2003-12-25 23:54:36 +00:00
gbeauche
561046449a Fix no JIT & no decode cache case to default to interpretive mode only. 2003-12-25 23:33:15 +00:00
gbeauche
f5aed53e3c clean-ups, going to beat myself tonight 2003-12-15 15:27:01 +00:00
gbeauche
c3a706d354 There may be extra instructions before moving stuff to SCC registers. 2003-12-15 15:25:38 +00:00
gbeauche
24c4ae354c Fix SCC initialization code detection. Move up AddrMap patch space since
we clobber 40 bytes below it and it may intersect with GetScrap patch space.
2003-12-15 15:23:59 +00:00
gbeauche
ae8c08b260 Generic ROM patches from ROMTYPE_PARCELS experiments, no apparent
regession. There is no improvement either.
2003-12-14 14:23:46 +00:00
gbeauche
bbde2a2054 Use an alternate stack base while servicing PowerPC interrupts. 2003-12-05 13:37:56 +00:00
gbeauche
c3bb2eabf1 Really clear the zero page. 2003-12-05 12:41:19 +00:00
gbeauche
4755f118df Revert 32-bit EA load/stores workaround, problem was 0xffffffff read from
[PgChk]+4 which yields to 3 on 32-bit arches and something > 32-bit on AMD64
2003-12-05 12:38:44 +00:00
gbeauche
e517594a51 Fake reading from [HpChk]+4 (FIXME: the callchain reports some function
from DriverServicesLib). Also make fake SCSIGlobals map to zero page.
2003-12-05 12:37:14 +00:00
gbeauche
44e54f730a Add XLM_ZERO_PAGE globals which points to a read-only page with all bits
set to zero.
2003-12-05 12:36:11 +00:00
gbeauche
091a219280 Use a unique ExecuteNative() interface in any case, i.e. native & emulated 2003-12-04 23:37:38 +00:00
gbeauche
7a7363fd18 Forgot to add thunks.cpp to BeOS Makefile too 2003-12-04 22:34:48 +00:00
gbeauche
d1a676eb1c Fix ExecutePPC() with nw SheepRoutineDescriptor 2003-12-04 22:34:34 +00:00
gbeauche
ddbebd7111 Fix ExecutePPC() merge with new SheepRoutineDescriptor 2003-12-04 22:33:24 +00:00
gbeauche
779b4858d2 We do need <pthread.h> in any case, especially native Linux/PPC 2003-12-04 22:29:15 +00:00
gbeauche
63219873b4 Don't set WANT_JIT if not EMULATED_PPC 2003-12-04 22:28:40 +00:00
gbeauche
158f63d1e3 Force 32-bit EA in load/store operations. This fixes SheepShaver/JIT on AMD64. 2003-12-04 18:10:36 +00:00
gbeauche
5dca41d253 Add gen_invoke_CPU_im_im() to invoke do_record_step(pc, opcode). 2003-12-04 17:53:04 +00:00
gbeauche
328bb9f239 Add new thunking system for 64-bit fixes. 2003-12-04 17:26:38 +00:00
gbeauche
982424dabd Use "cpu/vm.hpp" if EMULATED_PPC, so that target optimized functions are
used to match alignment/endianess needs.
2003-12-03 15:06:09 +00:00
gbeauche
490fa2d553 Add x86 asm opts (though disabled for now) 2003-12-03 11:45:45 +00:00
gbeauche
5b0569944f Don't enable asm opts for now, this hides measurability of other generic
optimizations. Remove no longer used synthetic instructions.
2003-12-03 11:45:13 +00:00
gbeauche
0c2735dbcc fix stats reports 2003-12-03 10:59:43 +00:00
gbeauche
7ebe0347bf Add "jit" prefs item. Fix PPC_DECODE_CACHE version to fill in new min_pc &
max_pc members of block info. Increase -finline-limit to 10000 for older gcc
2003-12-03 10:52:50 +00:00
gbeauche
34f90d6b3a PowerPC tester: open results file in binary mode, aka fix pb on DOS. 2003-12-03 09:16:46 +00:00
gbeauche
8db8d10287 fix extraction of XER from QEMU engine 2003-12-03 07:27:05 +00:00
gbeauche
04214f3820 Fix decrement the CTR, then branch conditional if decremented CTR != 0.
Remove CR cache for now. Remove BC & MODE_68K hacks for SheepShaver,
that was a colateral damage of wrong branch emulation of the former.
2003-12-02 22:49:18 +00:00
gbeauche
dc79320904 cleanups 2003-12-02 15:00:40 +00:00
gbeauche
3ca595a337 PowerPC tester: add support for QEMU engine. 2003-12-02 14:57:07 +00:00
gbeauche
07c8e505c9 PowerPC tester: add support for Bart's Model 3 CPU emulator 2003-12-02 11:29:46 +00:00
gbeauche
32133b2261 Add PPC_PROFILE_GENERIC_CALLS, don't enable PPC_PROFILE_COMPILE_TIME by
default.
2003-12-01 13:51:35 +00:00
gbeauche
e2ca6270f8 Implement ISYNC, MTCRF, MCRF. 2003-12-01 13:40:38 +00:00
gbeauche
054748532a NOP'ize unimplemented instructions 2003-12-01 13:21:41 +00:00
gbeauche
dd956c78db gather some stats on untranslated instructions 2003-12-01 13:07:26 +00:00
gbeauche
32f34c07c5 fix stack allocation, really roundup to next 16 KB boundaries 2003-12-01 11:02:13 +00:00
gbeauche
f034ae704f handle ROM areas and put associated blocks into dormant state 2003-12-01 00:16:21 +00:00
gbeauche
ceb9b4a428 cleanups & optimize for constant branches (i.e. follow them). 2003-12-01 00:03:02 +00:00
gbeauche
4a3cd024ed better handling of static translation cache allocation, handle nested
execution paths from the cpu core, cleanups for KPX_MAX_CPUS == 1.
2003-11-30 17:21:53 +00:00
gbeauche
c1dba58808 fix & reenable asm compare ops for ppc 2003-11-30 17:18:17 +00:00
gbeauche
10db506aa5 handle CR cache though it's not efficient with current approach without
superblock (traces) optimization.
2003-11-30 17:17:32 +00:00
gbeauche
7594e26d36 fix new block creation on full cache that was just invalidated, add
provisions for following constants jumps in next commit.
2003-11-30 17:16:24 +00:00
gbeauche
833fc0c935 remove dead code 2003-11-30 17:13:10 +00:00
gbeauche
efad4ff3b6 Handle even more XER test masks to be preserved or to be set. 2003-11-30 09:07:36 +00:00
gbeauche
d0a2277325 Gather stats about compile time. Define KPX_MAX_CPUS to 1 for allowing
allocation of translation cache into .data section on PowerPC.
2003-11-28 22:13:50 +00:00
gbeauche
0301afb3eb first part of CR caching fixes 2003-11-28 22:11:59 +00:00
gbeauche
6a7c8f7e83 Add PowerPC tester glue for Microlib CPU core 2003-11-28 15:12:37 +00:00
gbeauche
3bea82fa1c fix merge, hunks were missing 2003-11-27 23:59:00 +00:00
gbeauche
8ca440d0b5 Fix SRAW on non PowerPC platforms. 2003-11-27 23:53:41 +00:00
gbeauche
8711c4afd6 Add support for external results file for non PowerPC platforms. 2003-11-27 23:52:19 +00:00
gbeauche
687b9c5a74 I manually synchronize with Kheperix code. 2003-11-27 20:07:33 +00:00
gbeauche
aee3e05e4b The JIT should work now but there is an extra bottleneck causing it to
not match Kheperix speeds while executing Linux/ppc binaries.

Fix x86 DYNGEN_OP_FLAGS settings. Only allocate translation cache in .data
on PPC since x86 can do jumps anywhere.
2003-11-27 11:09:38 +00:00
gbeauche
2bacb2fd01 Workaround CR expectations in MODE_68K execution 2003-11-27 11:06:23 +00:00
gbeauche
d7ac6a0e68 Fix SLW & SRW, an x86 does not work the same way as a ppc 2003-11-27 10:53:37 +00:00
gbeauche
ae2d91912c fix dummy includes 2003-11-27 10:06:27 +00:00
gbeauche
36ce9c07e6 Statically allocate the translation cache on PowerPC. This makes it possible
to generate direct bl instructions for function invokation.
2003-11-27 00:26:35 +00:00
gbeauche
e30001bc00 Fix BCCTR & BCLR. However, conditions are still wrong somehow, disabled
this case. Factored & optimized branch instructions.
2003-11-26 23:58:14 +00:00
gbeauche
2eba241021 self credit cpu emulator ;-) 2003-11-25 10:27:59 +00:00
gbeauche
73d51962f6 Merge in-progress PowerPC "JIT1" engine for AMD64, IA-32, PPC.
The merge probably got wrong as there are some problems probably due to the
experiment begining with CR deferred evaluation. With nbench/ppc, performance
improvement was around 2x. With nbench on x86, performance improvement was
around 4x on average.

Incompatible change: instr_info_t has a new field in the middle. But since
insertion of PPC_I(XXX) identifiers is auto-generated, there is no problem.
2003-11-24 23:45:52 +00:00
gbeauche
7968a20100 Handle "JIT1" engine but disable it for now since there are some problems
with SheepShaver integration from Kheperix.
2003-11-24 23:39:35 +00:00
gbeauche
09a774ae51 Add link to B2 Unix/config.{guess,sub} 2003-11-24 22:19:35 +00:00
gbeauche
2a0f750a83 Optimize memory accesses on little endian systems that can do unaligned
accesses to memory. Fix build when vm.hpp is included in a C program.
2003-11-24 21:30:17 +00:00
gbeauche
04349eebce Optimized bswap_32() for AMD64 2003-11-24 21:20:47 +00:00
gbeauche
1dbe1179c6 Merge in "keycodes" support from Basilisk II. e.g. make French keyboard
layout work correctly for me.
2003-11-21 17:01:33 +00:00
gbeauche
5b950fa2ef fix shm screen image allocation. 2003-11-20 16:24:57 +00:00
gbeauche
b7c917e6d1 little endian fixes to name registry 2003-11-20 15:54:10 +00:00
gbeauche
e9f3546539 Remove even more obsolete code. Drop TBL/TBU registers, they are manually
handled through the mftb instruction accessor.
2003-11-11 11:44:34 +00:00
gbeauche
cf0ed72f24 Remove obsolete code related to PPC_NO_FPSCR_UPDATE, PPC_LAZY_PC_UPDATE,
PPC_LAZY_CC_UPDATE, PPC_HAVE_SPLIT_CR defines.
2003-11-11 11:32:27 +00:00
gbeauche
b66d8ef433 Fix "ignoresegv" case to actually skip the faulty instruction. Merge
conditions to skip instruction on SIGSEGVfrom PowerPC native mode. The
instruction skipper takes care to set the output register to 0.
2003-11-10 16:23:58 +00:00
gbeauche
26ec1b8899 Merge Set_pthread_attr() from Basilisk II. 2003-11-10 16:05:52 +00:00
gbeauche
0260210ddf - XLM_IRQ_NEST is always in native byte order format since any write to
this variable go through {Enable,Disable}Interrupt().
- Add Ether thunks but only for WORDS_BIGENDIAN case since we do need more
complicated translation functions.
2003-11-10 15:11:44 +00:00
gbeauche
cbb8efd492 little endian fixes 2003-11-10 14:18:34 +00:00
gbeauche
cd86ff9e94 - Start emulating the FPSCR. Fix mtfsf, mffs.
- Implement mftbr so that MacOS can fully boot with extensions. However,
  using clock() is probably not the right solution. Patching UpTime from
  DriverServicesLib et al. may be a better solution.
2003-11-09 15:39:30 +00:00
gbeauche
59e6227c08 fix mullwo & divw on invalid inputs 2003-11-09 07:19:39 +00:00
gbeauche
aebcb7a6bb New testing framework faster to compile and more flexible. i.e. we now
generate 350K+ instructions. This exhausts errors for mullwo & divw.
2003-11-08 11:57:04 +00:00
gbeauche
4b73163083 Fix PPC_LAZY_CC_UPDATE build. TODO: remove since this is slower. 2003-11-04 22:01:36 +00:00