asvitkine
06ac24df65
Fix Leopard build.
2008-11-21 01:09:28 +00:00
asvitkine
5505a5dc62
Change < to - in qsort compare functions to correctly return 0 for equality.
2008-09-14 19:54:36 +00:00
asvitkine
bf7408e151
Fix prefs
2008-07-20 07:29:46 +00:00
asvitkine
c23511080e
[patch from Kelvin Delbarre]
...
Software cursor mode is now supported, although currently the existing hardware
cursor mode is used whenever possible. (Software mode will be used if you are
running with a recent version of SDL's Quartz video driver, since a bug in SDL
1.2.11 and later prevents the hardware cursor from working properly with that
driver.)
In hardware cursor mode, the hot-spot is now determined heuristically. Formerly
it could not be determined and was always (1,1), an annoyance for many cursors
other than the arrow.
In hardware cursor mode, the cursor will now be hidden when requested by the
emulated OS (such as when you are typing in a text field).
In hardware cursor mode, some cursor image formats that the code does not handle
correctly will now be rejected, causing the emulated OS to revert temporarily to
software cursor mode. Formerly you would just end up with random garbage for a
cursor. This typically happened for grayscale or color cursors; rejecting images
with rowBytes != 2 eliminates the worst cases.
2008-06-25 02:52:52 +00:00
asvitkine
d885e5ccf4
[patch from Kelvin Delbarre] SDL's Quartz video implementation maps command
...
clicks to right-clicks and option-clicks to middle-clicks, a feature intended
for Mac users with single-button mice who are running SDL-based games that
require a multi-button mouse. This is unhelpful in SheepShaver, where we want
command-clicks and option-clicks to be passed through unchanged to the emulated
Mac OS. We can disable the unwanted behavior by setting an environment variable
SDL_HAS3BUTTONMOUSE intended for this very purpose.
A similar change in main_windows.cpp is NOT required, because only the Quartz
video implementation is involved.
By SDL convention, putenv is used in preference to setenv, although for Unix
platforms it doesn't matter.
2008-06-22 20:30:12 +00:00
asvitkine
e8e2f3727a
Don't profile by default - as this is no use to non-developers.
2008-06-20 00:50:33 +00:00
asvitkine
1002714623
Add frameskip 0 ("Dynamic") to MacOSX Prefs Editor, and fix line endings
...
and deprication warnings in the Objective-C code. Also, don't specify array
size with a macro in a header file.
2008-06-17 04:26:56 +00:00
gbeauche
b083b08fd1
Cope with recent run-time assembler changes.
2008-02-12 14:52:25 +00:00
gbeauche
b5746b4f68
Add SSSE3 optimizations (Intel Core 2 CPUs and newer) for LVX, STVX, VPERM.
...
This brings an overall +10% performance improvement in AltiVec Fractal Carbon.
2008-01-01 21:51:56 +00:00
gbeauche
c581996f82
Detect SSE 4.1 and SSE 4.1.
2008-01-01 13:34:47 +00:00
gbeauche
054c37ca0c
Happy New Year!
2008-01-01 09:47:39 +00:00
gbeauche
19e145ad16
Sync with new SIGSEGV API.
2007-12-30 09:18:40 +00:00
gbeauche
38501abd6a
Fix build with new MacOS X extfs implementation (in C++).
2007-12-30 09:15:00 +00:00
asvitkine
dc524bb30a
use the new SDL 1.2.12 env variable to allow the OS to launch the screensaver
...
when sheepshaver is running - must be linking to sdl 1.2.12 or later for it
to take effect
2007-08-27 21:45:13 +00:00
asvitkine
5b161928ed
copy prefs stuff into app bundle
2007-07-28 15:50:30 +00:00
asvitkine
059540bbb8
more prefs stuff
2007-07-28 15:46:17 +00:00
asvitkine
eae5f4ec20
support new prefs editor handling (rerun autogen)
2007-07-28 15:44:36 +00:00
asvitkine
9fd74d26cf
make unix root textbox larger in os x prefs editor
2007-07-28 15:23:12 +00:00
asvitkine
3c07ca5344
Standalone NIB, used for the PrefsEditor within SheepShaver
2007-07-28 15:17:46 +00:00
asvitkine
e90be61f19
Preparing for built-in Cocoa prefs editor
2007-07-28 14:53:08 +00:00
gbeauche
1cf3b07fe6
Use semaphores to suspend the redraw thread while switching video mode.
2007-07-21 11:41:07 +00:00
gbeauche
efa32be9ec
Optimize invalidate_cache_range() for short ranges.
2007-07-21 10:25:51 +00:00
asvitkine
ff172bd87d
Some changes to PrefsEditor stuff to ease future integration with SheepShaver.
2007-07-16 02:38:53 +00:00
gbeauche
8da1a472ae
Add native audio support (without SDL) from Nigel's Basilisk II port to MacOS X.
2007-06-13 16:34:13 +00:00
gbeauche
7adb1cace9
Add mips cxmon files
2007-06-13 12:11:55 +00:00
gbeauche
3d69ce66be
ifdef() constructs cause problems, make sure to automatically include the m4 directory while
...
regenerating the configure script (provided no ACLOCAL_FLAGS are passed). i.e. ./autogen.sh
now just works, even on MacOS X!
2007-06-13 12:09:05 +00:00
gbeauche
b20a76f580
merge PPC_PROFILE_REGS_USE fixes from KPX branch
2007-02-17 09:01:31 +00:00
gbeauche
8e0088c4c6
generate lwarx/swcx. native code only for uniprocessor emulation
2007-02-17 08:59:56 +00:00
asvitkine
c6560c2152
fix configure.ac unix script to not fail when AM_PATH_GTK and AM_PATH_ESD
...
are not defined (such as is usually the case on Mac OS X)
2007-01-24 14:33:52 +00:00
asvitkine
3b28326f7e
ifndef so prefs editor compiles
2007-01-24 03:36:48 +00:00
asvitkine
b1f1592f44
OSX Cocoa PrefsEditor - code and Xcode project
2007-01-24 03:35:51 +00:00
asvitkine
be4aba2f82
Fix Master of Orion II
2007-01-21 17:21:23 +00:00
gbeauche
9999881c78
Enable JIT in non-constructor so that a user-defined value can be set later
2007-01-21 13:44:27 +00:00
gbeauche
3b6a579f33
Optimize lwarx/stwcx for uniprocessors and generate code for them. There is
...
no performance increase even though those two instructions represented approx
18M of untranslated instructions on a simple boot to MacOS.
2007-01-18 07:02:35 +00:00
gbeauche
b9486d35e3
Rearrange powerpc_registers struct and nuke fp_result register which is
...
only needed for JIT (and to be handled differently in the future).
2007-01-17 07:05:19 +00:00
gbeauche
69d3fcba95
Update for new instr_info_t format
2007-01-17 06:56:09 +00:00
gbeauche
5b0b60da76
Remove specialised decoders. This will be done differently, if necessary.
2007-01-17 06:20:36 +00:00
gbeauche
e4af8a1909
Report SSSE3 instead of SSE4 (to be released later).
2007-01-15 07:00:16 +00:00
gbeauche
9dfecc4279
Update CPU table to kernel 2.6.17+ code (POWER6, Cell, PA6T). Fix detection
...
of the CPU string (separator is actually ','). Fix detection of CPU clock
frequency when it is expressed as a float.
2006-10-26 05:25:19 +00:00
gbeauche
954593d1c0
Generate spcflags checks at the start of the block. This makes better
...
opportunities when CR cache is implemented.
2006-07-30 16:29:10 +00:00
gbeauche
bcf7f9a2cd
Add throw() specs for Linux glibc platforms
2006-07-30 09:49:21 +00:00
gbeauche
2c27914196
Fix op_record_cr6_VD() to use less branches (gcc 4.1.2 build fix on x86-32)
2006-07-19 22:21:46 +00:00
gbeauche
874bab017c
Fix for parallel build (make -j20 here)
2006-07-19 06:00:26 +00:00
gbeauche
7705f85655
Add missing implementations for VAVGUB & VAVGUH. Optimize VSEL too.
2006-07-17 21:47:18 +00:00
gbeauche
07bf6fe6c1
Fix typo for ANDPS, ANDPD, ANDSS, ANDSD
2006-07-17 21:46:15 +00:00
gbeauche
a23f846bec
symlink codegen_x86.h
2006-07-17 07:43:54 +00:00
gbeauche
c8a273332f
Fix for 32-bit x86, was generating setcc CC,%dh instead of %dl.
...
i.e. force use of ecx & edx -- though it was fine in 64-bit mode, of course
2006-07-17 07:34:33 +00:00
gbeauche
e07e2196e3
Use new code generator. The gain is only 10%, bottlenecks are elsewhere.
...
Optimize Altivec vector splat instructions after Agner's guide.
2006-07-17 06:56:38 +00:00
gbeauche
ceb43ce19a
Define global XMM registers for SIMD & FPU (64-bit mode)
2006-07-17 06:52:13 +00:00
gbeauche
4e624209d3
Add new code generator for testing purposes (i386, x86_64) -- It's to be
...
used for mid-level optimizations
2006-07-17 06:49:07 +00:00
gbeauche
c306dfc4fd
Make VSCR an uint32, don't bother splitting it into NJ, SAT values since
...
the gain is almost nil and actually hurts performance in JIT mode.
2006-07-17 06:46:56 +00:00
gbeauche
cc12787047
Prepare for new code generator and mid-level optimizations.
2006-07-16 12:47:38 +00:00
gbeauche
7cfee5a2be
Move processor capability information to utils-cpuinfo.[ch]hpp. Add new
...
utils-sentinel.hpp for helper functions to be called at program initialization
and termination.
2006-07-16 12:28:01 +00:00
gbeauche
9bc307c3fd
Fix for new code generator -- FIXME: backend macros should be enabled only
...
in ppc-jit.cpp (e.g. define a new ENABLE_JIT_TARGET_ASM macro?)
2006-07-16 12:23:03 +00:00
gbeauche
6113436ea4
Remove obsolete code (HAVE_STATIC_DATA_EXEC).
2006-07-16 12:18:59 +00:00
gbeauche
a2e0cc10c0
forgot to commit this __op_PARAM? change
2006-07-16 12:09:40 +00:00
gbeauche
5d7ef13a9c
Fix gen_op_invoke*() for 64-bit offsets on x86-64. Drop CPUPARAM since it's
...
now cached to a host register.
2006-07-09 15:19:32 +00:00
gbeauche
a5296875f1
Optimize alignment routine for x86 & x86_64.
2006-07-09 15:18:08 +00:00
gbeauche
d75a91497d
Fix debugging of generated code to include the block chainer trampoline.
2006-07-09 15:17:15 +00:00
gbeauche
7d5898f97a
Some minor optimizations: xchg (unused), movdqa in sse2 code.
2006-07-09 12:19:50 +00:00
gbeauche
abc911eaa7
Remove use of global register A0 (now aliased to T0). This makes it possible
...
to cache the CPU context pointer to a register and thus rendering generated
code CPU context independent. Not useful to SheepShaver, but it is for
another project for threads emulation on plain x86-32.
Note: AltiVec performance may drop a little on x86 but this will be restored
(and even improved) in the future.
2006-07-09 12:15:48 +00:00
gbeauche
d0a64733ef
Use -fno-align-functions to really disable function alignment (a value of 0
...
used the default alignment, e.g. 16 bytes on x86_64). This is purely cosmetics
and only helps reading the resulting disassembly.
2006-07-06 00:07:47 +00:00
gbeauche
d5bd143e40
Remove obsolete vminfp & vmaxfp (too long sequences)
2006-07-06 00:04:33 +00:00
gbeauche
c677dff47a
Add more micro asm optimisations to x86{,-64} (mulhw, mulhwu, slw, srw, cntlzw
...
and subf* series). Also now enable the optimzations on x86_64 by default.
2006-07-06 00:01:04 +00:00
gbeauche
e39e80b44b
cosmetics
2006-07-04 23:27:06 +00:00
gbeauche
0123552ddc
Use extra precision (e.g. long double) for fma operations though this
...
inhibits some underflow conditions.
2006-07-04 23:23:42 +00:00
gbeauche
98dea63921
Fix fmadd et al. to set FPSCR[VXISI] only if any of the multiply operands
...
is an inifinity (2.1.5 -- don't set based on the intermediate result)
2006-07-04 23:20:46 +00:00
gbeauche
e020d63591
Fix frsp FPSCR[OX] condition
2006-07-04 23:17:37 +00:00
gbeauche
78952866b4
Fix mtfsb0 & mtfsb1 (VEX's xlc_dbl_u32 + code review)
2006-07-04 10:41:48 +00:00
gbeauche
c022ff87e6
remove dead code (fdivs was never used)
2006-07-04 08:58:40 +00:00
gbeauche
9f6edc436b
Fix mismerge from kpx branch
2006-07-04 08:54:53 +00:00
gbeauche
7efab4276f
Improve FPU emulation accurracy. However, PPC_ENABLE_FPU_EXCEPTIONS is still
...
set to 0 until generated code is optimized enough (current slow down factor
is 3x vs. previous core, expectations are about 50% slower FP code).
The main benefit is exception bits are accurate. All glibc test-fenv,
test-arith{,f}, test-double, test-float pass on ppc, and mostly on x86_64
with gcc 4.0.1. Yes, this is also compiler dependent.
FIXME: find a real Mac application that depends on precise FPSCR bits... I
think I don't want to care optimizing yet until someone shows me a real world
application.
2006-07-04 07:19:18 +00:00
gbeauche
0a74d0559a
Fix fnmadds & fnmsubs emulation + try to provide optimized fma routines for
...
better precision
2006-07-04 07:06:18 +00:00
gbeauche
dc88ee271d
Use lrint() for fctiw on x86-64. This is because some glibc use AMD optimized
...
math library where floor(), ceil() et al. don't set the inexact flag correctly
2006-07-04 06:59:28 +00:00
gbeauche
dc3df920c5
Fix fctiw emulation (VEX's jm-ppc-test -f, handle current rounding mode)
2006-07-04 06:58:24 +00:00
gbeauche
de5389bc0e
Fix vminfp & vmaxfp emulation (VEX's jm-ppc-test -a, triggered nan bugs)
2006-07-04 04:47:04 +00:00
gbeauche
39ee6ba1aa
Fix vctsxs & vctuxs emulation (VEX's jm-ppc-test -a, triggered inf/nan bugs)
2006-07-04 04:37:15 +00:00
gbeauche
0a2f9d3f03
Add fsel instruction emulation (VEX's jm-ppc-test -f)
2006-07-04 04:25:02 +00:00
gbeauche
635ee55a5d
Fix floating-point single precision load/store (VEX's jm-ppc-test -f)
2006-07-04 04:21:02 +00:00
gbeauche
d9eb35f026
updates
2006-05-14 20:46:19 +00:00
gbeauche
e339993b22
Updates. It's high time for a new snapshot.
2006-05-14 17:14:09 +00:00
gbeauche
c512377a12
Add 1GB item to GUI
2006-05-14 16:14:29 +00:00
gbeauche
bd6ec66354
Add missing "etherguid" prefs item for Basilisk II Ethernet support (b2ether).
2006-05-14 16:13:16 +00:00
gbeauche
3f3891ab31
Move up NATMEM_OFFSET to 0x11000000. This is arbitrarily determined to be
...
the base of the largest free block. Turns out SDL libraries are loaded around
0x10000000 so we have some luck here.
2006-05-14 15:58:11 +00:00
gbeauche
8a27c90e15
Temporary workaround for Windows (shndx_text is not unique...)
2006-05-14 14:12:57 +00:00
gbeauche
d26f8ad8e2
Fix for DIRECT_ADDRESSING mode (Windows)
2006-05-14 13:48:05 +00:00
gbeauche
7ef09b90bb
NQD dirty boxes, BeOS backend -- no-op.
2006-05-14 08:35:35 +00:00
gbeauche
5e4c2b7bb9
NQD dirty boxes, X11 backend.
2006-05-14 08:32:33 +00:00
gbeauche
757f849ad0
Optimize generated code to NQD & CheckLoad functions. They don't call into
...
68k or MacOS code, so they don't need to be a termination point. i.e. don't
split into two basic blocks and thus avoid a full hash search.
Also add missing NQD_unknown_hook NativeOp from previous commit.
2006-05-14 07:21:10 +00:00
gbeauche
74a5024be4
NQD dirty boxes, generic code
...
+ while we are at it, also rename a few NQD related NativeOps.
2006-05-13 17:12:18 +00:00
gbeauche
484469962b
Don't let SDL catch SIGINT and SIGTERM signals. This is not suitable for
...
SheepShaver since we are typically translating SDL_QUIT events to PowerOff()
on MacOS side. And, if MacOS is not fully booted, it's not really convenient
to shut it down, even with ctrl-C. i.e. you had to kill -9 it.
2006-05-09 19:53:31 +00:00
gbeauche
0af4721cb6
Don't read from 0xf8000090 during MacOS (8.5, 9.0) installation. Is this an
...
OpenFirmware check for OldWorld 604-based machines?
XXX I have code pending that makes it possible to use PowerMac ID #3035 and
model 510 (PowerMac G3 Series). However, I have a regression with one of my
MacOS 8.6 disks. This is non-standard anyway since it was installed from the
iMac DV 8.6 discs ("yellow" not generic) with MOL -- SheepShaver can't cope
with it.
So I am not surprised it breaks. Otherwise, 8.5 -> 9.0.4 were fine with it.
BTW, the "regression" is Native Resource Manager is not installed and the
boot gets mad later. FWIW, it's the same as for MacOS 9.1. A resource is
very likely not loaded.
2006-05-08 23:32:58 +00:00
gbeauche
0a37b8f5e9
Fix MacOS X GUI (new fake DarwinSys*() functions)
2006-05-08 17:20:20 +00:00
gbeauche
8bd38cff75
Also nuke MacOS X GUI binary and bundle for make clean
2006-05-08 17:19:45 +00:00
gbeauche
12195c32b5
Define UNALIGNED_PROFITABLE on x86 platforms
2006-05-07 16:54:58 +00:00
gbeauche
75f3bdea68
Fix NQD_bitblt_hook() to perform sign check correctly
2006-05-07 10:49:48 +00:00
gbeauche
bc13355b57
Add linker scripts from Basilisk II and make it possible to allocate up to
...
1 GB of Mac memory. Only tested on Linux/x86_64 so far but with a somewhat
interesting (MacOS, ROM, RAM size) matrix.
XXX: It should be possible to allocate up to 1.5 GB by relocating the ROM
base to something like 0x60800000.
2006-05-06 10:42:51 +00:00
gbeauche
6da4032ab7
Add a few FE0A opcode patches. This slightly improves stability.
2006-05-06 10:30:00 +00:00
gbeauche
80c87484f3
Add 'nsrd' 1 and 'gpch' 650 patches for MacOS 7.5.3 Revision 2.2
2006-05-06 09:23:28 +00:00
gbeauche
3bd5d0c787
Instructions that trap are now an end-of-block condition. This should avoid
...
the compilation of illegal instructions and thus stopping execution earlier.
2006-05-06 07:19:39 +00:00
gbeauche
e88961bc45
Review MacOS 8.6 vs 9.0 patches:
...
- 'boot' 3: set boot stack pointer only once at the correct place
- 'gpch' 750: fix FE0A opcode replacement (selector #$0a is virt2phys on pgidx)
- 'gpch' 750: remove bogus patch for SonyVars
- Mark patches "9.0" verified accordingly vs. 8.6
2006-05-05 19:05:24 +00:00
gbeauche
4578abcbd4
Add native GetNamedResource() and Get1NamedResource() patches for PPC Unix.
...
Only tested on MacOS X so far. It shouldn't be a problem for Linux/PowerPC.
2006-05-03 22:11:49 +00:00
gbeauche
812682fda6
update
2006-05-03 21:53:47 +00:00
gbeauche
f3ba2f0d64
Don't access ROM85 as it it was a pointer to a ROM version number (8.0, 8.1)
...
aka. fix bogus AppleShare extension, it was trying to dereference 0x3fff.
XXX: why is this code called in the first place?
2006-05-03 21:53:33 +00:00
gbeauche
21f35a34f0
Add patches for native GetNamedResource() and Get1NamedResource(). This will
...
be useful to fix a bug in the AppleShare extension (see DRVR .AFPTranslator
in Basilisk II)
Unrelated improvement: call sheepshaver_cpu::get_resource() directly, don't
get it through another global function.
2006-05-03 21:45:14 +00:00
gbeauche
0f5f874e11
Huh, committed wrong changelog for configure.ac, it should have been the
...
following: fix build of the CPU emulator (check for additional math functions)
2006-05-02 19:36:57 +00:00
gbeauche
8123813cad
Add SLiRP support to SheepShaver for Windows
2006-05-02 19:35:39 +00:00
gbeauche
22110cb4f3
Make GetMainWindowHandle() a globally exported function as it is used e.g.
...
in clip_windows.cpp & video_sdl.cpp
2006-05-02 19:34:04 +00:00
gbeauche
e5051464bf
Move likely() definitions to dyngen-exec.h, they are only used in the CPU
...
core where it's most useful (give a stronger hint to gcc4)
2006-05-02 19:33:10 +00:00
gbeauche
b9b1fd4e22
Don't build a built-in GUI with --enable-standalone-gui was requested
2006-05-02 05:50:38 +00:00
gbeauche
085253dc9b
- Fix build on ppc (paranoia.cpp -- one extra STR_SIGUSR2_INSTALL_ERR left)
...
- Fix for GTK+ 1.2 GUI on ppc (notebook's panes redraw)
- Add run-time detection of the underlying arch for "jit" detection (MacOS X)
2006-05-01 23:01:53 +00:00
gbeauche
9b60acb2da
Port --enable-standalone-gui support to SheepShaver
...
Others changes include:
- Factor out STR_SIG_INSTALL_ERR messages
- Process command line arguments early (prior to calling PrefsInit())
- GUI: set start_clicked only if the "Start" button was clicked
- GUI: save changes to the "Input" pane when the "Start" button was clicked
2006-05-01 22:33:34 +00:00
gbeauche
a7888c6c64
fix underquoted definitions
2006-04-06 22:36:43 +00:00
gbeauche
5678c1d37d
Detect SSE3 & SSE4.
2006-04-01 22:14:33 +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
d475faf4ba
Copy constants to 32-bit addressable data pool. This fixes -pie builds on
...
x86_64: program resides above 32-bit barrier and JIT generated code wants
(knowingly) to access globals directly.
2006-01-28 22:03:31 +00:00
gbeauche
d9b4b31490
Merge from KPX: new exit() handling code
2006-01-28 22:00:10 +00:00
gbeauche
e0589a097e
fix new/delete mismatch in slow_allocator, also use that for lazy_allocator
2006-01-28 21:59:41 +00:00
gbeauche
022d09375f
Merge from KPX: new exit() handling code; make "syscall" illegal for MacOS
...
emulation (SheepShaver)
2006-01-28 21:57:52 +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
f8c3b2c6bb
no-stack-frame optimization for linux/i386 too since it now works there too
2006-01-22 20:07:47 +00:00
gbeauche
f2d3692c08
updates
2006-01-22 16:46:41 +00:00
gbeauche
f32e053178
Apply the no-stack-frame optimization in op_invoke_*() to MacOS X for Intel
...
templates. This avoids mis-aligninment of the stack, and useless reservation
of space on it for function args. Indeed, we now pre-allocate 16 stack-slots
in op_execute() for this purpose.
2006-01-22 00:12:39 +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
1f195045a1
__DATA,__data section may be empty (MacOS X 10.4.4 for Intel)
2006-01-22 00:07:22 +00:00
gbeauche
89700e74e2
update icon with transparency
2006-01-21 18:04:03 +00:00
gbeauche
7755bd2873
rename extfs volume name to "Unix"
2006-01-21 17:26:27 +00:00
gbeauche
46ee842be3
don't trigger interrupt through deleted cpu object (XXX may need locks)
2006-01-21 17:18:53 +00:00
gbeauche
a9468a9644
fix encoding of lis r0,0x9e00
2006-01-19 22:24:09 +00:00
gbeauche
d85590c972
adapt for older MIPSpro preprocessor
2006-01-18 23:50:16 +00:00
gbeauche
357467c97b
<cpu/jit/dyngen-exec.h> is necessary because it contains the definitions of
...
DYNGEN_FAST_DISPATCH for the direct_chaining_possible() test... [otherwise,
it was a performance regression]
2006-01-18 23:45:31 +00:00
gbeauche
73c6d2d2c0
apply the no-stack-frame optimization in op_invoke_*() to MacOS X hosts too
2006-01-18 23:06:48 +00:00
gbeauche
1313fe589b
fix for MacOS X/ppc (simply for completeness, the CPU emulator is not used
...
natively by default)
2006-01-18 23:00:59 +00:00
gbeauche
b6600ca3fe
recognize POWER5+ CPUs (e.g. p5-520)
2006-01-18 22:12:26 +00:00
gbeauche
2e7f194ff2
add generic roundf() from glibc (for IRIX/mips with older libm)
2006-01-17 23:09:18 +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
0a9a210c30
Disable direct block chaining if DYNGEN_FAST_DISPATCH is not defined. Note
...
this is a workaround prior to enabling it on mips and the future JIT.
2005-12-12 21:44:50 +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
c71bc8cc4c
avoid unaligned memory accessed when patching the ROM (IRIX/mips)
2005-12-12 20:46:31 +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
6416914c15
fix overflows for lve[bhw]x input values and vector values on 64-bit hosts
2005-12-11 20:57:45 +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
4866e89c3a
factor out and fix mips case for external function invocation as t9 shall
...
be set so that gp can be recomputed in the called function
2005-12-11 17:25:42 +00:00
gbeauche
92f7738f80
- Add possibility to skip a test category (ALU, FPU, VMX). This will only
...
generate target code without executing it, and not comparing results
- Fix aligned_vector_t, we can't rely on THIS pointer to be 16-byte aligned
- Also fix dummy_vector alignment
2005-12-11 17:21:07 +00:00
gbeauche
37ee682c0f
fix for mipspro compilers
2005-12-11 17:15:12 +00:00
gbeauche
63d4506a4d
add "fast" pointers to non-virtual member functions for MIPSpro compilers
2005-12-11 17:12:59 +00:00
gbeauche
dd2b9a95d5
Align PowerPC registers struct manually, i.e. don't depend on non-portable
...
compiler extensions (e.g. GCC __attribute__((aligned(N)))).
2005-12-06 22:25:13 +00:00
gbeauche
d8aa8a7459
Port JIT to IRIX/mips (initial code from QEMU)
2005-12-05 22:24:13 +00:00
gbeauche
1670c6e84d
ahem, forget this extra difference between multiarch & jit dispatcher
2005-12-05 22:10:46 +00:00
gbeauche
ecc90b0916
Better mechanism to dispatch arch-dependent JIT headers as we can't use
...
raw arch names (e.g. mips expands to 1, thus not finding the header)
2005-12-05 20:37:46 +00:00
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