Commit Graph

273 Commits

Author SHA1 Message Date
gbeauche
a7888c6c64 fix underquoted definitions 2006-04-06 22:36:43 +00:00
gbeauche
b288f6278e Helper macros to annotate likely branch directions. Colateral effect: this
also fixes build with GCC 4.1 (ppc-dyngen-ops.cpp) since the branches are
re-ordered in a way there is now only one exit-point in op_jump_next_A0().
2006-04-01 21:41:19 +00:00
gbeauche
d4210ef902 Check whether compiler supports byte bit-fields. If so, we can enable slirp
emulation code since it pure C+sockets code.
2006-01-27 23:48:08 +00:00
gbeauche
6ddf123991 Adapt for new non-blocking I/O error message 2006-01-24 23:50:19 +00:00
gbeauche
02525acf32 Use FIONBIO only on pretty ancient systems. 2006-01-24 23:47:09 +00:00
gbeauche
51a09ecc21 Don't mis-align the stack on x86 platforms (most visible on MacOS X for Intel) 2006-01-22 00:08:32 +00:00
gbeauche
7755bd2873 rename extfs volume name to "Unix" 2006-01-21 17:26:27 +00:00
gbeauche
b6600ca3fe recognize POWER5+ CPUs (e.g. p5-520) 2006-01-18 22:12:26 +00:00
gbeauche
bde3eb7972 fix framework detection on OSX/intel with newer compiler that compiler that
fully obsoleted nested functions support (my fault anyway)
2006-01-15 11:41:23 +00:00
gbeauche
d9fc0aa5ad Look for g++ in /usr/freeware/bin (IRIX/mips for the JIT). Avoid false
positives in GCC detection, i.e. knowingly cause a syntax error if #error
was not good enough (MIPSpro CC). Fix dyngen g++ version detection if
main compiler is not g++
2005-12-12 21:22:40 +00:00
gbeauche
5c287d301d remove obsolete cygwin bits and fix allocation of NanoKernel region on
IRIX (aka make it POSIX compliant)
2005-12-11 23:18:47 +00:00
gbeauche
8372abd132 arrangements for non-gcc compilers 2005-12-11 18:15:34 +00:00
gbeauche
d19908c9d9 JIT now works on IRIX/mips, you need GCC for the synthetic opcodes:
CC=cc CXX=CC ./configure --with-dgcc=g++

Also merge MIPSPro optimization flags from Basilisk II tree.

Note that I only verified the emulator works through the testsuite
(all tests passed, including AltiVec emulation)
2005-12-11 18:15:05 +00:00
gbeauche
d3e8f634b2 Fix build of test-powerpc on non-{x86,ppc} platforms 2005-12-04 17:46:52 +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
dfb7f52abd The JIT works in Darwin/x86 too. 2005-11-30 21:42:22 +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
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
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
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
ff28c42565 Check for CoreFoundation framework, which is not available in Darwin. 2005-07-10 15:43:33 +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
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
e259aeb504 Tweaks to build slirp on MacOS X. Yeah, there is now ethernet there! ;-) 2005-07-03 22:42:48 +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
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
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
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
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