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 |