|
From: Tomasz J. <to...@je...> - 2004-05-15 19:55:08
|
I've finally managed to run the newest snapshot of SheepShaver on
another PC (will probably also work on the previous one). I had to
modify the generated Makefile and replace -O2 with -O1 everywhere. Not
it works fine with JIT. It seems that there is a bug in GCC (3.3.2) or
your code is too hackish. However when I removed -O2 altogether,
SheepShaver did not compile at all.
This is a result of 'make' (last lines):
=========
c++ -I../kpx_cpu/include -I../kpx_cpu/src -DUSE_JIT -I../include -I.
-DHAVE_CONFIG_H -D_REENTRANT -DDATADIR=\"/usr/local/share/SheepShaver\"
-g -I/usr/X11R6/include -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2
-I/usr/lib/glib/include -I/usr/X11R6/include -c
../kpx_cpu/src/cpu/jit/cxxdemangle.cpp -o obj/cxxdemangle.o
c++ -o dyngen obj/dyngen.o obj/cxxdemangle.o
./dyngen -o basic-dyngen-ops.hpp obj/basic-dyngen-ops.o
c++ -I../kpx_cpu/include -I../kpx_cpu/src -DUSE_JIT -I../include -I.
-DHAVE_CONFIG_H -D_REENTRANT -DDATADIR=\"/usr/local/share/SheepShaver\"
-g -I/usr/X11R6/include -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2
-I/usr/lib/glib/include -I/usr/X11R6/include -c
../kpx_cpu/src/cpu/jit/basic-dyngen.cpp -o obj/basic-dyngen.o
c++ -I../kpx_cpu/include -I../kpx_cpu/src -DUSE_JIT -I../include -I.
-DHAVE_CONFIG_H -D_REENTRANT -DDATADIR=\"/usr/local/share/SheepShaver\"
-g -I/usr/X11R6/include -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2
-I/usr/lib/glib/include -I/usr/X11R6/include -fomit-frame-pointer
-mpreferred-stack-boundary=2 -falign-functions=0 -mmmx -msse -msse2
-finline-limit=10000 -fno-reorder-blocks -fno-optimize-sibling-calls -c
../kpx_cpu/src/cpu/ppc/ppc-dyngen-ops.cpp -o obj/ppc-dyngen-ops.o
../kpx_cpu/src/cpu/ppc/ppc-dyngen-ops.cpp: In static member function
`static
void op_V2DI::set(powerpc_vr&, int, long long unsigned int)':
../kpx_cpu/src/cpu/ppc/ppc-dyngen-ops.cpp:1400: error: unable to find a
register to spill in class `GENERAL_REGS'
../kpx_cpu/src/cpu/ppc/ppc-dyngen-ops.cpp:1400: error: this is the insn:
(insn 15 14 17 0 0xbd201898 (set (mem/s/j:DI (plus:SI (mult:SI (reg:SI
60)
(const_int 8 [0x8]))
(reg/f:SI 59)) [0 <variable>.j S8 A64])
(reg:DI 61)) 59 {*movdi_2} (nil)
(expr_list:REG_DEAD (reg:DI 61)
(expr_list:REG_DEAD (reg:SI 60)
(expr_list:REG_DEAD (reg/f:SI 59)
(nil)))))
../kpx_cpu/src/cpu/ppc/ppc-dyngen-ops.cpp:1400: confused by earlier
errors, bailing out
make: *** [obj/ppc-dyngen-ops.o] Error 1
==========
I haven't measured how much faster is the newest version, but it still
suffers from some strange 'stops'. Sometimes you need to wait several
seconds until you can regain control of the emulated system (no response
from mouse or keyboard). Beside this, it is reasonably fast.
There is also problem with configuration interface. In video modes tab
there is one checkbox that is not described (the 6th one). Selecting
only 'Windowed 800x600' result in termination of application and
message:
SheepShaver.ok: video_x.cpp:1166: bool VideoInit(): Assertion `cur_mode
!= -1' failed.
Jerzu
|