gbeauche
d3e8f634b2
Fix build of test-powerpc on non-{x86,ppc} platforms
2005-12-04 17:46:52 +00:00
gbeauche
45cb124844
We really need a way to specify a member alignment for AltiVec emulation
...
testing. Extra fixlets for IRIX/mips and other CPU emulator in non-JIT mode
2005-12-04 17:45:41 +00:00
gbeauche
8c12552fda
GCC fixes for IRIX/mips (unsupported __generic intrinsic and probably not
...
using the fixincludes-patched internal/math_core.h file)
2005-12-04 17:44:21 +00:00
gbeauche
41ab82edce
Better IRIX support: add audio & slirp networking. Fix configure to use -lm
...
when searching for C99 functions (roundf() et al.).
2005-12-04 16:26:57 +00:00
gbeauche
f75d445700
Some compilers don't permit the use of C99 extensions from C++. This is the
...
case for MIPSPro (IRIX) for fegetround(), isinf() et al., though they are
available in the math library.
2005-12-04 16:10:01 +00:00
gbeauche
28ed73f212
Fix build in pure interpreter mode (IRIX/mips)
2005-12-04 16:07:52 +00:00
gbeauche
7a24d4c8b6
Use #pragma pack() on IRIX and enforce a means to pack structs
2005-12-04 15:58:52 +00:00
gbeauche
b17b4d7584
dos2unix
2005-12-04 15:53:55 +00:00
gbeauche
dfb7f52abd
The JIT works in Darwin/x86 too.
2005-11-30 21:42:22 +00:00
gbeauche
954643b582
Modernize tarball VERNAME
2005-11-30 07:25:37 +00:00
gbeauche
e2391d5753
Always use the complete non-stubs Ethernet driver (XXX probably do that
...
only in Emulated PPC mode for performance reasons?)
2005-11-30 07:24:53 +00:00
gbeauche
09c61e2354
Makefile fixes. Also checkout Basilisk II tree while preparing the
...
SheepShaver sources tree as it's better to have the tarball having
the B2 sources inside too.
2005-11-30 00:29:29 +00:00
gbeauche
34b8843a1c
Remaining references to V2.2 changed (XXX needs to be factored out)
2005-11-30 00:02:25 +00:00
gbeauche
f8fd76ba35
Copyright and URL changes
2005-11-29 23:59:36 +00:00
gbeauche
4cda58b38a
NEWS improvements
2005-11-29 23:55:05 +00:00
gbeauche
bc463966c8
V2.3-Pre (snapshot)
2005-11-29 23:48:18 +00:00
gbeauche
6fb46cd1c3
Move to V2.3 (snapshot) versioning since V2.2 was already CVS-released 4
...
years ago. Add missing changes.
2005-11-29 23:46:43 +00:00
gbeauche
42d6693435
Support "b2ether" devices (from Basilisk II tree)
2005-11-29 23:01:09 +00:00
gbeauche
4ddc2368d1
add "CD-ROM Drive" label
2005-11-29 20:55:33 +00:00
gbeauche
71d0871858
aha, I forgot a hunk
2005-11-27 23:59:07 +00:00
gbeauche
5a5defb9d8
Build Windows GUI with GTK
2005-11-27 23:54:26 +00:00
gbeauche
37da272071
Ethernet and Serial support (merge from Basilisk II tree)
2005-11-27 22:29:32 +00:00
gbeauche
13e7e02786
Force DIB driver for SDL/Windows (HACK from Basilisk II tree), improves
...
responsiveness for me.
2005-11-27 20:40:52 +00:00
gbeauche
bc550cd3cd
Windows fixes for "new" Ethernet API. The full driver is needed because of
...
DIRECT_ADDRESSING mode.
2005-11-27 20:36:30 +00:00
gbeauche
cd568e8bd3
fix for new ethernet API
2005-11-27 20:22:19 +00:00
gbeauche
90670c2652
warning fixes, aka don't redefine log2() et al. if already defined (Win32)
2005-11-27 20:20:25 +00:00
gbeauche
c1c4345594
fix regression introduced from JIT/Mach support
2005-11-27 20:14:22 +00:00
gbeauche
49143b5e81
fix ether_dummy.cpp build
2005-11-27 20:09:59 +00:00
gbeauche
d27fdd7afb
cleanupsCVS: ----------------------------------------------------------------------
2005-11-27 20:02:06 +00:00
gbeauche
9ec35ab23e
Do use predecode cache in case the JIT is disabled by the user ("jit" option)
2005-11-27 16:20:17 +00:00
gbeauche
b5562ede18
GUI cosmetics from Basilisk II, add missing "slirp" ethernet option
2005-11-27 16:01:59 +00:00
gbeauche
dcc027791c
"Keyboard/Mouse" is the more logical way
2005-11-27 15:03:01 +00:00
cebix
b8a4568cae
modernized Linux sound device selection (synced to B2)
2005-11-24 17:26:00 +00:00
gbeauche
5f7021a179
don't grab in -mdynamic-no-pic when using icc, note that you need at least
...
version 9.0.25 (build 20050809) to have a working binary
2005-08-18 22:32:31 +00:00
gbeauche
a0c918ae5d
ahem, fix typo :)
2005-07-25 20:03:07 +00:00
gbeauche
81ba8f90d0
force -finline-functions to get inlining really operating with gcc < 3.3.6
...
on x86 or you may get a _ZN9bit_fieldILi0ELi0EE7extractEj undefined symbol
2005-07-25 19:46:24 +00:00
gbeauche
74e4b16079
fix for gcc < 3.3.6 on x86
2005-07-25 19:45:26 +00:00
gbeauche
2b72c5e047
Fix for broken MacOS X headers (at least in 10.2) when compiling with the
...
CPU emulator.
2005-07-14 18:09:30 +00:00
gbeauche
d8dc5827d3
Initial JIT support for Darwin/x86. Seems there is still a problem though.
2005-07-11 07:06:31 +00:00
gbeauche
d08df6e659
Darwin/x86 fixes
2005-07-11 06:52:51 +00:00
gbeauche
ff28c42565
Check for CoreFoundation framework, which is not available in Darwin.
2005-07-10 15:43:33 +00:00
gbeauche
6eacaf2e82
Fix asm clobbers for newer gcc 4.0.1, don't use -msse to enable xmm clobbers
...
(likewise for -mmmx vs. mmx registers). Instead, since GCC won't generate
MMX/SSE code without explicit intrinsics use of vectorization, we know
those register won't be clobbered outside of the __asm__ code. So, it's safe
as is (we could also remove all sse/mmx clobbers).
2005-07-09 21:53:26 +00:00
gbeauche
4cb11c7c9f
Fix detection of GCC versions, avoid AC_EGREP_CPP (J.P. Larocque)
2005-07-06 05:26:01 +00:00
gbeauche
896cdc1fb7
Add upcoming 7448 and new PPC970FX CPU ids.
2005-07-06 05:11:56 +00:00
gbeauche
4d97079af9
Map latest 7447A CPU to a plain G4 (7400)
2005-07-06 04:58:34 +00:00
gbeauche
2975867e09
forgot to commit a hunk
2005-07-04 17:46:31 +00:00
gbeauche
284bda9357
updates for next snapshot
2005-07-04 11:38:17 +00:00
gbeauche
0f358518df
New paranoia checks that better match was SheepShaver is doing with threads
...
and sigaltstack(). At least, this time we force use of threads and also
alter r1 to see whether the current threading model relies on it or not.
2005-07-04 06:09:59 +00:00
gbeauche
29207d9cf2
Move sigregs handling to dedicated header
2005-07-04 05:34:33 +00:00
gbeauche
d80a943daf
Don't use sem_t definition from our local "semaphore.h" layer. Copy the
...
definitions from original LinuxThreads.
2005-07-03 23:28:30 +00:00
gbeauche
811b8d6648
Bad MacOS X, we need our our semaphore.h from Basilisk II to get POSIX
...
unnamed semaphores emulation with named Mach semaphores.
2005-07-03 22:44:30 +00:00
gbeauche
97eaae096c
Fix typo for AO_transmit_packet() thunk.
2005-07-03 22:43:11 +00:00
gbeauche
e259aeb504
Tweaks to build slirp on MacOS X. Yeah, there is now ethernet there! ;-)
2005-07-03 22:42:48 +00:00
gbeauche
f346839f86
Add the complete NDRV variant for DIRECT_ADDRESSING modes. We could use
...
this one for all cases but I'd prefer keep it that way. i.e. the old
driver in REAL_ADDRESSING mode (with the D(bug()) facility), and the new
NDRV for DIRECT_ADDRESSING mode (e.g. Windows).
2005-07-03 22:04:18 +00:00
gbeauche
97726bd1e7
Minor tweaks to support compilation of ether.cpp within MacOS. i.e. mostly
...
migrate the Ethernet driver to the MacOS side. This is enabled for
DIRECT_ADDRESSING cases. I didn't want to alter much of ether.cpp (as it
would have required to support that mode). Of course, in REAL_ADDRESSING
mode (the default) and for debugging purposes, the old driver is still
available.
2005-07-03 22:02:01 +00:00
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
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
gbeauche
175dfeea02
fix lfs/stfs breakage introduced with latest FPR type change
2003-11-04 20:56:21 +00:00
gbeauche
8c40d739b6
Add some statistics for interrupt handling, Execute68k/Trap, MacOS & NativeOp
2003-11-04 20:48:29 +00:00
gbeauche
42e1cabc94
Move variables for compile statistics to powerpc_cpu private data
2003-11-04 20:45:46 +00:00
gbeauche
30bd089279
PowerPC floating-point registers are now an union of uint64 & double. This
...
eases FP load/stores.
2003-11-04 15:03:15 +00:00
gbeauche
8ddf749ed5
fix vm_do_read_memory_8()
2003-11-04 15:00:02 +00:00
gbeauche
a42281aad1
Implement partial block cache invalidation. Rewrite core cached blocks
...
execution loop with a Duff's device. Gather some predecode time statistics.
This shows that only around 2% of total emulation time is spent for
predecoding the instructions.
2003-11-03 21:28:32 +00:00
gbeauche
f0ea192460
Optimized pointers to non virtual member functions. This reduces space
...
and overhead since runtime checks are eliminated. Actually, it yields
up to 10% performance improvement with specialized decoders.
2003-11-02 14:48:20 +00:00
gbeauche
d956d3c4ca
add specialized instruction decoders (disabled for now)
2003-11-01 17:07:17 +00:00
gbeauche
066af7452a
fix ppc-execute.o dependency
2003-11-01 17:03:55 +00:00
gbeauche
89d0f9ca29
Integrate spcflags handling code to kpx_cpu core. We can also remove
...
oldish EXEC_RETURN handling with a throw/catch mechanism since we
do have a dependency on extra conditions (invalidated cache) that
prevents fast execution loops.
2003-11-01 15:15:31 +00:00
gbeauche
9ce43c6cf3
Fix ASYNC_IRQ build but locks may still happen. Note that with a predecode
...
cache, checking for pending interrupts may not be the bottle neck nowadays.
2003-10-26 14:16:40 +00:00
gbeauche
60d34a6816
Rewrite interrupts handling code so that the emulator can work with a
...
predecode cache. This implies to run in interpreted mode only while
processing EmulOps or other native (nested) runs.
Note that the FLIGHT_RECORDER with a predecode cache gets slower than
without caching at all.
2003-10-26 13:59:04 +00:00
gbeauche
d766049d59
- enable multicore cpu emulation with ASYNC_IRQ
...
- move atomic_* operations to main_unix so that they could use spinlocks or
other platform-specific locking mechanisms
2003-10-26 09:14:14 +00:00
gbeauche
7312739738
fix MakeExecutable patch for little endian systems
2003-10-26 08:48:48 +00:00
gbeauche
46a1b4ada5
allow DGA & Xshm only on local displays
2003-10-26 07:54:02 +00:00
cebix
5f0a739cc7
- fixed compilation problems under BeOS
...
- boot drive wasn't set correctly
2003-10-26 00:32:31 +00:00
gbeauche
ccf89d9efb
Preserve CR in execute_68k(). This enables MacOS 8.6 to work. ;-)
2003-10-19 21:37:43 +00:00
gbeauche
cb13fe3007
Log both r24 (m68k emulator PC) & stack pointer in SheepShaver mode only
2003-10-19 21:36:21 +00:00
gbeauche
9a05805a27
- Fix ADDME & ADDZE decoders, add RA==R0 testers
...
- Increase predecode cache size to 32K entries
- Enable PPC_EXECUTE_DUMP_STATE for predecode cache as well
2003-10-18 13:43:25 +00:00
gbeauche
1b9876889e
- Record address range of block to invalidate. i.e. icbi records ranges
...
and isync actually invalidate caches
2003-10-12 06:44:04 +00:00
gbeauche
7e0dccc544
- Handle MakeExecutable() replacement
...
- Disable predecode cache in CVS for now
- Fix flight recorder ordering in predecode cache mode
2003-10-12 05:44:17 +00:00
gbeauche
a3036b0c9d
Really enable flight_recorder with predecode cache on
2003-10-11 16:43:42 +00:00
gbeauche
7e20a8d205
- Add support for FLIGHT_RECORDER with predecode cache
...
- Always enable predecode cache & flight recorder for now
2003-10-11 09:57:52 +00:00
gbeauche
b05c68e90e
Move PPC emulator config to here
2003-10-11 09:34:35 +00:00
gbeauche
ebb67f0421
- Minor optimization to execute_ppc() as we apparently don't need to move
...
target PC into CTR.
- Fix breakage introduced during little endian fixing. We now assume that
MacOS doesn't rely on any PPC register that may have been saved on top
of it stack. i.e. register state is saved onto native stack.
2003-10-11 09:33:27 +00:00
gbeauche
1012da75dd
- Cleanups & make sure PPC emulator config is setup in sysdeps.h
...
- Log r24 in SheepShaver mode as this represents the 68k emulator PC
2003-10-11 09:03:03 +00:00
gbeauche
be50ff1b42
Adapt ROM patches space to Gossamer ROMs layout. Weird that it passed the
...
other day.
2003-10-07 19:28:09 +00:00
gbeauche
ad0aea0403
fix parcels decoder
2003-10-06 21:23:53 +00:00
gbeauche
0cb51c42dd
cleanups :-)
2003-10-06 21:01:22 +00:00
gbeauche
974ebd5d91
- Add checks against ROM patches space
...
- Make sure to also load the floppy disk driver with Gossamer ROMs so
that exfs feature can work too
2003-10-06 21:00:48 +00:00
gbeauche
c9b8dd6628
tm_task is actually correct for both nw & gossamer ROMs
2003-10-05 23:49:19 +00:00
gbeauche
84ce1f2b0d
fix tm_task patch for Gossamer ROMs
2003-10-05 23:38:07 +00:00
gbeauche
3768573d35
Add support for Gossamer ROMs (DTG3)
2003-10-05 23:05:05 +00:00
gbeauche
19053d4992
little endian fixes, note that trampolines are still not 64-bit clean either
2003-09-29 22:50:31 +00:00
gbeauche
663b536257
Little endian fixes to Serial trampolines.
2003-09-29 22:49:23 +00:00
gbeauche
7ac3170cb4
More little endian fixes
2003-09-29 22:48:22 +00:00
gbeauche
aafd6e4898
Little endian fixes to FindLibSymbol(). This is not 64-bit clean and this
...
needs to go through a more appropriate thunking mechanism.
2003-09-29 22:47:39 +00:00
gbeauche
5229b42622
basic implementation for missing functions (signbit/isless/isgreater) in
...
older C libraries
2003-09-29 22:45:31 +00:00
gbeauche
1713a26a3f
NULL is the null pointer to member function
2003-09-29 22:42:53 +00:00
gbeauche
792bef8e61
Make older & bogus compilers happy. aka. force "static" storage class
...
for SPIN_LOCK_UNLOCKED constant.
2003-09-29 22:41:50 +00:00
gbeauche
c7dd356f7f
VSLNewInterruptService() returns a serviceID in big endian format
2003-09-29 20:31:47 +00:00
gbeauche
3d4ed54488
first round of little endian fixes
2003-09-29 20:30:21 +00:00
gbeauche
b8b139faf2
- Share EmulatorData & KernelData struct definitions
...
- Introduce new SheepShaver data area for alternate stacks, thunks, etc.
- Experimental asynchronous interrupts handling. This improves performance
by 30% but some (rare) lockups may occur. To be debugged!
2003-09-29 15:46:09 +00:00
gbeauche
2d92ad6dfb
spinlocks from QEMU
2003-09-29 08:27:56 +00:00
gbeauche
1c2fa89e31
use B2 sigsegv API instead of rewriting yet another sigsegv handler for x86
2003-09-29 07:05:15 +00:00
gbeauche
5b57fde6ce
New NativeOps for DisableInterrupt() & EnableInterrupt().
2003-09-28 21:27:55 +00:00
gbeauche
3851071ecd
Try to handle XLM_IRQ_NEST atomically in emulated PPC views. Fix placement
...
of fake SCSIGlobals (disabled for now). Switch back to mono core emulation
until things are debugged enough. Implement get_resource() et al.
2003-09-28 21:27:34 +00:00
gbeauche
2a86a4f62a
Handle dcbz. Ignore unaligned load/store multiple. Fix icbi/isync.
2003-09-28 21:22:59 +00:00
gbeauche
4e5e13d92d
make do_execute() a template so that execution loop prologues/epilogues
...
can be performed in derived engines
2003-09-28 21:22:09 +00:00
gbeauche
2f13888ea8
plain interpretive mode for debugging purposes
2003-09-28 21:21:07 +00:00
gbeauche
28ae4b0028
Disable SIGUSR2 handler in EMULATED_PPC mode for now
2003-09-28 21:20:38 +00:00
gbeauche
9914de4a09
Define HAVE_PTHREADS, if available
2003-09-28 21:19:06 +00:00
gbeauche
2a756136e4
more tests
2003-09-21 22:13:09 +00:00
gbeauche
2cc3b4edab
fix xoris
2003-09-21 21:45:05 +00:00
gbeauche
089247fcff
Merge in cpu core:
...
- make cache invalidation routines public
- fix shift instructions, especially for invalid shift counts
- fix mullwo to set overflow only if the product can't be represented in
32 bits
2003-09-15 22:48:57 +00:00
gbeauche
09c674f63a
factor out -I usage
2003-09-14 22:11:42 +00:00
gbeauche
b5b471b4f1
add PowerPC emulator tester
2003-09-14 22:10:58 +00:00
gbeauche
fb8fbf71ed
PowerPC emulator fixes:
...
- make divw. behaviour more realistic (vs ppc 7410) when rB == 0
- fix carry/overflow computations to fix SUBFME handling
- fix nand duplicate with wrong operand
2003-09-14 22:09:13 +00:00
gbeauche
cb1dd6dac5
- Integrate new NativeOp instructions to be used as trampolines to call
...
native functions from ppc code.
- Little endian fixes in emul_op.cpp
- Add new 'gpch' 750 patch to workaround crash with MacOS 8.6
- Don't crash in Process Manager on reset/shutdown with MacOS 8.6
- We also have an experimental interrupt thread in emulation mode
2003-09-07 14:33:54 +00:00
gbeauche
15a1208483
Handle new ppc emulator
2003-09-07 14:26:15 +00:00
gbeauche
6ff594e32d
Handle manual updates with kpx_cpu core
2003-09-07 14:25:48 +00:00
gbeauche
029a7fd85b
Merge in old kpx_cpu snapshot for debugging
2003-09-07 14:25:05 +00:00
gbeauche
10aa71cb58
Handle --enable-ppc-emulator. Add Kheperix cpu emulator to sources
2003-09-07 14:21:20 +00:00
gbeauche
3f9b589eea
Add byteswap routines
2003-09-07 14:19:25 +00:00
gbeauche
9e7670c922
Import VOSF from Basilisk II for faster and more accurate video refresh.
...
There may be some bugs left though. Rework sigsegv_handler() a little to
accomodate VOSF way of life.
TODO: merge video drivers infrastructure from B2.
2003-05-22 22:12:05 +00:00
gbeauche
d29a00c17f
Don't call FE0A opcode in Shutdown Manager: handle better NewWorld ROMs.
...
i.e. don't force a "bra" if there was no "beq" beforehand.
2003-05-21 19:31:57 +00:00
gbeauche
f47379e887
Force installation of floppy driver with NewWorld ROMs otherwise we fail
...
to open it and further install ExtFS & NQD acceleration.
2003-05-21 18:57:17 +00:00
gbeauche
dd4877eaf2
Fix import and call to IOCommandIsComplete()
2003-05-20 20:30:50 +00:00
gbeauche
5843470f9f
Finally enable boot on MacOS 8.6 Update CD from iMac DV
...
- Don't read PVR at ROM_BASE + 0x314600
- Generated code for FC1E and FE0A don't really match comments
- Move FC1E routine base to ROM_BASE + 0x36fb00
- Recognize iMacUpdate 1.1 ROM (nwrom v1.2.1)
2003-05-17 08:42:34 +00:00
gbeauche
0e223c55a3
Correctly print offset to current parcel, not next
2003-05-14 22:11:59 +00:00
gbeauche
94ec8c82ca
Use vm_acquire/vm_acquire_fixed/vm_release API. Prepare use of SIGSEGV
...
handlers and instruction skippers. Fix test prior to including posix_sem.cpp.
2003-05-13 16:59:57 +00:00
gbeauche
5bd60842d6
Make EmulOp() and check_load_invoc() extern "C" so that we are C++ name
...
mangling independent for asm_linux.S
2003-04-12 10:14:09 +00:00
gbeauche
43f1cdb401
Sync with changes from cxmon and B2. I have yet to find out why my old
...
disk image (8.1 based) no longer boots completely. :-/
2003-01-04 12:23:39 +00:00
gbeauche
def097803e
- B2_TOPDIR: new macro specifying where Basilisk II directory can be found.
...
Update "links" rule to take care of it and don't PREFIX with current path
if B2_TOPDIR yields an absolute path.
(Simply cosmetic so that I can have multiple SS work dirs, effortlessly ;-)
2002-05-09 09:55:45 +00:00
gbeauche
665c64b4aa
Add support to decode parcels-based ROMs
...
- include/rom_patches.h (DecodeROM): Declare.
- rom_patches.cpp (DecodeROM): Define.
- Unix/main_unix.cpp, BeOS/main_beos.cpp (decode_lzss): Move to...
- rom_patches.cpp (decode_lzss): ... here.
- Unix/main_unix.cpp (main): Call DecodeROM().
- BeOS/main_beos.cpp (SheepShaver::load_rom): Call DecodeROM().
2002-04-21 15:07:09 +00:00
gbeauche
05d3e990a5
- Do match APPLE_16_BIT to the underlying X depth (either 15 or 16 bpp)
2002-04-21 11:47:18 +00:00
gbeauche
e89d481489
Match changes from glibc 2.2 (?)
...
- #define status as __status
- #define spinlock as __spinlock
2002-04-21 11:42:30 +00:00
gbeauche
d1b8e62cc9
- Invert AC_CHECK_LIB for readline and termcap so that the test program
...
for readline detection is actually linked against -ltermcap -lreadline.
Also add other term libs and finally prefer ncurses over the rest.
2002-04-21 11:21:26 +00:00
cebix
b7e0269519
added dummy Set_pthread_attr()
2002-02-21 15:12:12 +00:00
cebix
8e4d5e5f40
Imported sources
2002-02-04 16:58:13 +00:00