Commit Graph

363 Commits

Author SHA1 Message Date
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