Commit Graph

709 Commits

Author SHA1 Message Date
gbeauche
9c16ab1514 Remove obsolete and broken Cygwin/X11 hacks. Forbid builds of the Windows
version from within the Unix/ directory.
2005-07-03 13:39:06 +00:00
gbeauche
b7004b1199 Add necessary configury + support code to support slirp in SheepShaver,
the user-space network emulation layer. Enable it on all Unix supported
platforms where I know it works.
2005-07-03 13:05:36 +00:00
gbeauche
2cf7fd2a88 First round of patches to increase ethernet code portability. 2005-07-03 08:23:42 +00:00
gbeauche
029d86ce4c Fix build with CodeWarrior in MacOS (9 under SheepShaver ;-) 2005-07-02 22:54:07 +00:00
gbeauche
7cc1bbc7b8 Issue a SysError(dsOldSystem) if we are trying to use MacOS < 8.1.0 with a
NewWorld ROM. That may be 8.1.0 included but original iMac had a NewWorld
ROM compatible system.

Otherwise we will crash because the boot routine is trying to execute code
through unitialized descriptor that points to 0x13ff, which is obviously
wrong (and unaligned on word-boundaries for 68k code).
2005-07-02 17:51:43 +00:00
gbeauche
2881c20813 Hopefully fix the remaining issue in the High Resolution Timing support
code and re-enable it on Linux platforms (they have clock_nanosleep). Why
did I trigger an interrupt inside a held lock? Hmmm, we should probably
add an _ack semaphore like we do e.g. for ethernet.
2005-07-01 23:15:11 +00:00
gbeauche
245c691102 Check for <stdint.h> ourselves + build with -mdynamic-no-pic on MacOS X. 2005-07-01 06:16:00 +00:00
gbeauche
f1ef1322b3 Add B2 Unix/m4 symlink 2005-07-01 06:15:21 +00:00
gbeauche
a60b0fb78c Restore clobbered registers before calling SDL_PumpEvents(). 2005-06-30 22:26:12 +00:00
gbeauche
df960a814e HFS+ is case insensitive (sic!). At least, it pointed out to not remove
ppc_asm.s file but rather the temporary ppc_asm.out.s variant.
2005-06-30 22:19:01 +00:00
gbeauche
ec8661f431 Fix a damn silly bug. On some occasions, we could have spcflags() set to
EXEC_RETURN | HANDLE_INTERRUPT. And then, we handled the interrupt, but
EXEC_RETURN was set so we returned very quickly without completing the
interrupt routine. As a side effect, this occasionnaly hung the emulator
most likely with {ethernet,audio}-based applications that trigger a lot
of interrupts.

The fix is to always honour EXEC_RETURN flag at first, of course.
2005-06-30 15:29:11 +00:00
gbeauche
fd69df24f3 Re-enable spinlocks on {i386,x86_64} since they are now used only for really
small atomic operations (add/sub). This implementation should be enough for
that purpose.
2005-06-30 13:29:43 +00:00
gbeauche
08c5f8b713 Improve idle wait mechanism. Now, the emulator thread can be suspended
(idle_wait) until events arrived and notified through TriggerInterrupt().
i.e. we no longer sleep a fixed amount of time on platforms that support
a thread wait/signal mechanism.
2005-06-30 10:17:58 +00:00
gbeauche
c9b044aeaf Completely avoid any form of nested interrupt processing. 2005-06-30 09:09:59 +00:00
gbeauche
55f5e3a41b Fix CR save/restore in EmulOp thunk. I don't know what it fixes for real
but that was definitely wrong to only preserve CR2 there.
2005-06-30 07:34:17 +00:00
gbeauche
ea42af0568 Consume the packet even if we could not allocate a message block for it in
the Ethernet interrupt. The BeOS version does that, likewise for MOL. Otherwise,
we end up into an infinite loop reporting the memory allocation failure.

I think this is now the expected behavior as we wouldn't have stats
(num_rx_no_mem) for it if we couldn't get out of the EtherIRQ. ;-) Besides,
the packet will be resent for reliable networks.
2005-06-30 06:38:09 +00:00
gbeauche
7ac6ad2f46 Clean-ups: comments, ticks per sec output, don't restore r13 twice. 2005-06-28 16:50:30 +00:00
gbeauche
38d03d02e9 The alternate stack trick never worked as you can't modify an active stack.
i.e. it returned EPERM and ran into stack corruption to eventually crash the
emulator. This is noticeable in !hw_mac_cursor_accl mode (e.g. fullscreen DGA).

In order to the sigalstack() to be effective, we must kludge the kernel to
think it's running on another stack. In practise, we provide another stack
for the SIGUSR2 handler. sigusr2_handler_init() fulfills that purpose.

I hope this fixes remaining issues forever. At some point, I had multiple
*_init() handlers in case this is necessary.
2005-06-28 16:47:32 +00:00
gbeauche
a8ba24aecf Use fast spinlocks only for small enough atomic operations. Otherwise, you
run into some performance problems in e.g. video graphics experience because
of busywaits in the current spin_lock() implementation.
2005-06-25 11:40:29 +00:00
gbeauche
198925c5ae clean-ups from previous experiment with sched_yield(), this one caused a
slow-down too.
2005-06-25 11:36:35 +00:00
gbeauche
52138d2014 We HAVE_PTHREADS even if we use our own pthreads implementation, this also
induces availability of locking primitives. I will merge the !HAVE_PTHREADS
case (a la Basilisk II) for EMULATED_PPC when I get back to home.
2005-06-25 11:06:24 +00:00
gbeauche
b92ce82a32 Rewrite SheepThreads locks & semaphores. They now look much better and avoid
busy waits for acquiring spin locks.
2005-06-25 11:00:30 +00:00
gbeauche
e991e59fc1 fix test_and_set, aka fixes X async replies when clipboard active 2005-06-25 10:58:47 +00:00
gbeauche
2de44f1910 Fix for MacOS X assembler, why don't Apple use GNU as? 2005-06-25 06:33:39 +00:00
gbeauche
d0da2a0dda - Restore TOC on EMUL_OP_EXEC_RETURN from Execute68k
- Restore r13 on EMUL_RETURN, though I never saw r13 clobbered
- Increase stack frame allocated to EmulOp processing on par with BeOS
- Factor GetResource wrappers with a macro + restore r13 too
2005-06-24 22:58:55 +00:00
gbeauche
d8a33b0952 Direct Color visual is OK for fbdev dga. 2005-06-24 22:31:28 +00:00
gbeauche
26ee263b6f Don't fake the TVECT value on non-BeOS native systems. This is important
for systems that use a global r2 as the TLS register, e.g. Linux/ppc with
newer glibc. Also remove the syscall junk which were simply workarounds
for this bug. Remove a duplicate r2 restoration in EmulOp.

BTW, it's possible to get SheepShaver running on Linux/ppc systems with
NPTL rather than SheepThreads.
2005-06-23 16:23:31 +00:00
gbeauche
b9b90fce11 fix last commit 2005-06-23 11:56:43 +00:00
gbeauche
2deca51ca4 Add code to gather some stats on register usage. 2005-06-23 11:37:01 +00:00
gbeauche
c33f09b2d8 Fix crash in FBDev DGA mode when it failed to initialize (here, that was
because fb visual was Direct Color instead of True Color). We used to
initialize the_buffer* even if !open_display. Report that gracefully with
the dedicated STR_OPEN_WINDOW_ERR.
2005-06-22 16:40:24 +00:00
gbeauche
c41f403f56 Rework sheepshaver_cpu object allocation and get rid of POSIX'ish functions. 2005-06-22 16:38:15 +00:00
gbeauche
c4a7b10650 op_invoke*() symbols are expected to be in demangled form, i.e. "C" linkage 2005-06-22 16:35:59 +00:00
gbeauche
f887fb7bac Enable build of the JIT with GCC 2.9x compilers (e.g. "2.96" from MDK 8.1). 2005-06-22 15:37:25 +00:00
gbeauche
ae52321fe7 HOST_FLOAT_WORDS_BIG_ENDIAN is a tristate and, when defined, can still be
0, so little endian format. i.e. don't check that with a simple #ifdef...
2005-06-22 15:33:22 +00:00
gbeauche
32b5b4f0bd Integrate C++ demangler from libiberty so that to handle G++ 2.9X generated
symbols.
2005-06-22 15:30:54 +00:00
gbeauche
f226f793dd Extend internal math library from GNU libc to accomodate older systems
with glibc 2.2.X or simply no C99 capable C library. Fix vrfiz instruction
to really truncate on float values.
2005-06-22 12:32:32 +00:00
gbeauche
28a167b3bd Avoid <limits> to determine vector register numeric_limits<>. This fixes
build with ancient compilers like gcc "2.96".
2005-06-22 12:27:01 +00:00
gbeauche
3aa78832fc pointer-to-member-functions fixlets, NULL may be (void *)0 on ancient
compilers which is not suitable here.
2005-06-22 12:25:43 +00:00
gbeauche
c686f5451c Include <sys/mman.h> for fbdev dga without VOSF acceleration. 2005-06-22 12:24:36 +00:00
gbeauche
e616062d6d Apple GCC uses __ppc__ as the arch token 2005-06-14 06:35:00 +00:00
gbeauche
46f9e6d2ea Support JIT on Mach/ppc platforms. Mach/i386 (Darwin/x86) is to follow. 2005-06-14 06:32:52 +00:00
gbeauche
ef30f8e882 remove duplicate 2005-06-11 16:47:00 +00:00
gbeauche
e423a07632 Recognize POWER5 CPUs. ;-) 2005-06-08 12:12:50 +00:00
gbeauche
89643dbce0 Enable VidMode extension by default though some Xservers may still be
broken. Probably run-time check for the right VidMode version? My tests
were done with X.org 6.8.2 (VidMode 2.2)
2005-05-12 11:21:10 +00:00
gbeauche
0bce152c20 - Sync with latest B2 video_vosf.h updates.
- Enable VidMode extension with FBDev DGA graphics.
- Factor out FBDev/XF86 DGA code.
- Fix pointer grab in fbdev DGA mode, thus fixing scrolling screens in
  lower VidModes.
- Only select VidModes that match the requested resolutions, exactly.
- Fix VideoQuitFullScreen() in non FBDev mode.
2005-05-12 11:20:00 +00:00
gbeauche
1853c38130 fix inline asm for gcc4 2005-04-24 17:22:49 +00:00
gbeauche
8db2a3ef62 implement lvsl/lvsr instructions 2005-04-15 17:03:49 +00:00
gbeauche
ac6b7d760e What a silly thing I wrote! Really nuke the generated file, not the original
source. IOW, don't commit stuff when you are ill.
2005-04-07 22:35:47 +00:00
gbeauche
8f80b5ddba remove generated ppc_asm.S on make clean 2005-04-03 15:35:20 +00:00
gbeauche
8e512ca7fe Better lock and zero VOSF data, especially for DGA mode. Also make sure
that we really update the whole screen when sub-8bpp modes are used
2005-04-02 09:54:16 +00:00
gbeauche
b46eb9ae45 Only support True Color frame buffers. Make it possible to run-time switch
depth in FBDev DGA fullscreen mode.
2005-03-28 16:19:28 +00:00
gbeauche
f9e3fd28a1 better logics in sigstack allocation on native platforms 2005-03-28 09:50:58 +00:00
gbeauche
88b493bf38 fix make modules for Linux NetDriver 2005-03-28 09:06:46 +00:00
gbeauche
0f4440f99f Handle "screen fbdev/WIDTH/HEIGHT" to force use of FBDev DGA instead of XF86
DGA mode. In other words, root user can now use FBDev DGA though it's always
recommended to run SheepShaver with a normal user. Increase "ramsize" bounds
in the GUI and fully migrate to new "screen" modes. Remove "windowmodes" and
"screenmodes" defaults.
2005-03-28 09:05:28 +00:00
gbeauche
5810c6a764 Use "screen TYPE/WIDTH/HEIGHT" prefs item by default on Unix systems. The
former options (windowmodes/screenmodes) are migrated if the user uses the
GUI. Also make a note about EXPERIMENTAL state for jit68k.
2005-03-27 22:32:46 +00:00
gbeauche
abd2c5406f Add "screen" prefs item similar to Basilisk II. Don't ignore SEGV by default
as this could hide real bugs.
2005-03-27 22:08:33 +00:00
gbeauche
08e30a894e disable 68k DR emulator for now (not stable enough yet) 2005-03-27 22:06:52 +00:00
gbeauche
d27832cb1c - Implement fullscreen DGA via fbdev access under Linux. Besides, r/w access
to /dev/mem is required on Linux to use XF86 DGA mode. Otherwise, there is
now a fallback to fbdev.
- Forward port some features from Basilisk II (set_window_name,
disable_mouse_accel).
- Don't SIGSTOP the emulation thread on suspend since that would completely
stop the process on Linux. Use a frame buffer lock instead (as B2 does)
2005-03-27 19:05:18 +00:00
gbeauche
0bc6418ea6 Implement screen win/WIDTH/HEIGHT prefs item that overrides any other value
for windowmodes and screenmodes. Necessary for arbitrary full screen mode
sizes.
2005-03-27 14:53:04 +00:00
gbeauche
fbe378f780 Add custom video modes for full screen in unsual resolutions (e.g. 1400x1050).
X11 and SDL infrastructures have yet to be implemented
2005-03-27 13:44:45 +00:00
gbeauche
ca7a87465b Disable high-res timings as it could still hang. The advantage is that we
now can use special mutexes to debug deadlocks
2005-03-27 13:41:46 +00:00
gbeauche
d9a8a5c10f cross-compilation fixes 2005-03-24 23:39:19 +00:00
gbeauche
35a29f57df rearrange for win32 cross-compilation 2005-03-24 23:38:10 +00:00
gbeauche
2d6df7d54d Respin snapshot with functional Windows port + extra SDL keysym translations
in case keycodes were not used (e.g. includes key-'3')
2005-03-20 23:58:43 +00:00
gbeauche
86b049678f Windows specific configure script and Makefile 2005-03-20 23:45:17 +00:00
gbeauche
0db0d48bf0 Avoid the use of floating-point when loading/storing from/to memory. This
could have caused some rounding thus alterations to integer registers on
context switches when lfd/stfd instructions were used. e.g. cygwin compilers
defaulted to i686 code generation and exhibed this behaviour, you could also
see this behavior with -march=i586 -mtune=pentiumpro. GCC is perfectly right
to do those optimizations.
2005-03-20 23:07:11 +00:00
gbeauche
1fb076bc7b Check that we are running a Windows NT kernel >= 4.0 and drivers are
installed correctly (namely cdenable.sys)
2005-03-19 19:09:44 +00:00
gbeauche
9383e5bd50 Enable build with gtk2 and default to that UI if found. Otherwise, it's
still possible to select GTK1 as --with-gtk=gtk1 or --with-gtk=gtk.
2005-03-19 09:59:30 +00:00
gbeauche
b29b5e4e23 let it build against gtk2 2005-03-19 09:35:01 +00:00
gbeauche
8071d90849 workaround weird bug lying somewhere in cygwin generated micro-ops for
FP load/store of doubles
2005-03-19 07:18:18 +00:00
gbeauche
7fcb230d67 the current ethernet code is not direct addressing clean, so enable it only
if real addressing mode is available (e.g. this excludes win32 platforms for
now)
2005-03-19 04:31:59 +00:00
gbeauche
c044b1d8eb add windows specific sysdeps.h as they are stable enough now. lowered constant
offset to 0x02000000 so that we can cope with the new RAM_BASE value.
2005-03-18 00:03:32 +00:00
gbeauche
2990a3ddfc add missing AboutWindow file for Windows, that have yet to be fully
implemented however
2005-03-18 00:01:37 +00:00
gbeauche
cf16210d3a add other symlinks to B2/Windows files 2005-03-17 23:56:04 +00:00
gbeauche
0f90a78b5a Always set RAM_BASE to 0x20000000 for now as there could be some weird
problems depending on the amount of memory requested. Also fix
initialization of the system dependent timers. Remove unixism.
2005-03-17 23:48:50 +00:00
gbeauche
068e2075fc fix for native compilation under windows 2005-03-17 23:45:28 +00:00
gbeauche
536c81f641 fix when cross-compiling or using cygwin 2005-03-17 23:44:48 +00:00
gbeauche
287296b363 it makes more sense to dump the crash dump header to stderr 2005-03-17 23:40:01 +00:00
gbeauche
dd7b09ebe8 Use a mutex to protect wakeup_time instead of a semaphore, do we want some
sort of barrier synchronisation? Anyhow, the current implementation looks
reasonable enough now when using old LinuxThreads without TLS.

XXX: in the past, the sem_post in sigsuspend_handler would not release the
calling thread thus entering into a mutual waiting condition.
2005-03-16 00:35:51 +00:00
gbeauche
260614a873 fix initialization of timer thread that could be put in indefinite suspended
state from the start.
2005-03-15 20:46:50 +00:00
gbeauche
cd31ea2d80 mention improvements to the altivec code 2005-03-14 00:32:12 +00:00
gbeauche
cbf0c3debf shorten vsldoi native code by one instruction, aka. avoid superfluous
shuffle of stale vector value
2005-03-14 00:30:44 +00:00
gbeauche
4918fe8d2d default to 8 MB cache size on non-{alpha,powerpc} platforms 2005-03-13 23:41:42 +00:00
gbeauche
05a7453d54 MMX/SSE/SSE2 optimizations are now converted to full inline assembly code,
aka avoid use of (possibly broken) GCC intrinsics. Add some SSE2 optimizations.
Translate VSLDOI, MFVSCR, MTVSCR instructions. AltiVec Fractal Carbon now
shows more than 1 GFlops performance!
2005-03-13 12:49:30 +00:00
gbeauche
7cc49ca739 fix vsldoi implementation and testsuite 2005-03-13 11:38:35 +00:00
gbeauche
4d96076c62 fix SheepShaver wrappers in PowerPC CPU tester 2005-03-13 11:23:52 +00:00
gbeauche
fa6c3a521b Try to document major changes between released snapshots 2005-03-09 00:12:27 +00:00
gbeauche
e7d8a54e21 Enable high precision timings on POSIX systems supporting clock_nanosleep().
Since pthread_suspend_np() is not available to Linux (but NetBSD 2.0), thread
suspend is implemented likewise to boehm-gc.
2005-03-05 19:07:35 +00:00
gbeauche
48213aa5eb Revert to no nested native ppc interrupt processing, also filter out cases
where InterruptFlags is 0.
2005-03-05 18:33:30 +00:00
gbeauche
fb42e00b8d Don't require an instruction skipper to fake SCSI globals 2005-03-05 15:44:03 +00:00
gbeauche
9019e71cfc Preserve all necessary registers on interrupt, thus also permitting nested
interrupts to occur. SheepShaver locks should now be reduced.
2005-03-05 15:25:10 +00:00
gbeauche
663facbf97 Fix native Linux/ppc with recent enough glibc that supports TLS; r2 is used
in that case. Tell me if I broke other arches, e.g. r13 is no longer saved
in Video and Ethernet stubs, though it seems to be OK.

Colateral feature: SheepShaver should now run on Linux/ppc64 with relevant
32-bit runtime. Native Linux/ppc64 support is harder as low mem globals are
32-bit in mind and e.g. the TLS register there is %r13, %r2 is the TOC
(PowerOpen/AIX ABI)
2005-02-27 21:52:06 +00:00
gbeauche
3f1eb78c6e having both ppc_asm.S and ppc_asm.s in the same dir on MacOS X is a bad idea... 2005-02-21 22:29:49 +00:00
gbeauche
4aa9a22f41 native NetBSD/ppc support 2005-02-20 18:26:39 +00:00
gbeauche
c602bcb201 Move Linux/asm_linux.S to ppc_asm.S suitable for Linux, MacOS X and NetBSD 2005-02-20 18:25:45 +00:00
gbeauche
81204ca2d9 NetBSD/ppc paranoia checks 2005-02-20 18:25:05 +00:00
gbeauche
8500381648 Initial support for NetBSD/ppc in native mode (some crashes occur but I
could boot MacOS 9.0.4)
2005-02-20 18:08:50 +00:00
gbeauche
436522186e Implement SheepThreads on NetBSD/ppc so that sigaltstack()s are really used 2005-02-20 18:06:40 +00:00
gbeauche
6d5303c868 Support FreeBSD 5.3:
- fix implementation of offsetof() with GCC >= 3.4 and C++ code
2005-02-13 18:18:59 +00:00
gbeauche
7df6429591 Support NetBSD 2.0 for x86:
- implement trunc() function, isless() and isgreater() macros
- execute genexec.pl through a real perl executable
- disable generation of debug info from dyngen u-ops
2005-02-13 15:32:11 +00:00
gbeauche
df0d5d2a41 Happy New Year 2005! 2005-01-30 21:48:22 +00:00
gbeauche
f401bb1494 really invalidate caches when ROM was patched in native mode 2005-01-30 21:25:24 +00:00
gbeauche
26314e240e Add InitAll() which covers common initializations so that to avoid duplicate
code and possible bugs (e.g. on BeOS/PPC). Likewise for ExitAll().
2005-01-30 21:19:07 +00:00
gbeauche
f891b23e32 add PowerPC,G4 node 2005-01-30 21:13:23 +00:00
gbeauche
126e549397 add FP regs & state to preserved context on interrupt 2005-01-30 21:12:07 +00:00
gbeauche
9b17e04150 Fix Kernel Data for Gossamer ROMs: PVR, CPUClockSpeed et al. 2005-01-30 18:49:48 +00:00
gbeauche
a79ecf38ef workaround direct access to FCBS from Apple Personal Diagnostics in MacOS 9 2005-01-30 17:39:44 +00:00
gbeauche
4316979264 fix NULL pmf initialization 2005-01-22 23:24:28 +00:00
gbeauche
5a2246b224 take care when only compiling in SDL audio support with X11 graphics 2005-01-19 20:26:01 +00:00
gbeauche
fb3f855d29 better handling of no-dyngen cases in makefiles 2005-01-10 22:50:54 +00:00
gbeauche
2f947f5667 Append disassembler to dyngen, if available 2004-12-21 23:27:11 +00:00
gbeauche
f5a9e6e110 add facility to debug basic blocks extracted from *-ops.o 2004-12-21 23:20:31 +00:00
gbeauche
f2d7689435 direct addressing fixes to video.cpp way to handle the VSL service owner 2004-12-19 23:05:34 +00:00
gbeauche
6b89caf030 little endian fixes to gamma handling code 2004-12-19 15:14:22 +00:00
gbeauche
6ecaec47d9 Don't overwrite our serial drivers (9.0) 2004-12-19 09:26:30 +00:00
gbeauche
7944aaf2de FindLibSymbol() returns an address in MacOS address space. Likewise for
Mac_sysalloc(). i.e. make it return an uint32.
2004-12-19 09:01:04 +00:00
gbeauche
ec8304c597 enable 64-bit NATMEM_OFFSET 2004-12-19 08:19:27 +00:00
gbeauche
c704fa4c7d append jit srcs for test-powerpc, no need to prepend in a wrong way 2004-12-19 08:10:51 +00:00
gbeauche
8677229f60 exp2f/log2f implementations if not existing 2004-12-18 23:45:33 +00:00
gbeauche
0802f4d93d fix build on macosx, it's a native ppc arch too 2004-12-18 23:27:15 +00:00
gbeauche
a83a597585 enable build of the powerpc-tester without JIT 2004-12-18 22:36:16 +00:00
gbeauche
17ffad1d63 s/vm_page_size/vm_get_page_size/ 2004-12-18 22:21:04 +00:00
gbeauche
a8a235345c implement mcrxr instruction 2004-12-18 22:13:47 +00:00
gbeauche
2747c0b5e2 Shut up remaining warnings as we are now sure pointers are allocated in
MacOS address space. TODO: add checks to be sure?
2004-12-18 18:43:25 +00:00
gbeauche
6255bd24c3 direct addressing & 64-bit fixes 2004-12-18 18:40:43 +00:00
gbeauche
f9937854be ethernet seems to work with sheepnet, even on kernel 2.6/x86_64! 2004-12-18 18:40:04 +00:00
gbeauche
1c915bbc19 Don't restrict MacOS X Xserver detection on native versions since SheepShaver
can run remotely and drawing to an X window on MacOS X.
2004-12-18 18:34:56 +00:00
gbeauche
83f594ec16 patch the right branch instruction, it seems it doesn't much matter whether
we return success (0) or error (-1) in the previous casse.
2004-12-16 23:14:25 +00:00
gbeauche
dfa16d9686 disable power management for now (opcode fe0f) 2004-12-16 22:59:38 +00:00
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