Hi,
I'm going to keep adding results to this post...
Enable Everything: Every "./configure" option enabled
Status: Compiled, didn't run. Error message was:
Code: Select all
[CTRL ] add param 'pending_INIT' to bx_list_c 'cpu0': list capacity exceeded
Fix: I couldn't find one..
80486sx_db: --enable-cpu-level=4 --disable-fpu
Status 1: Failed to compile, error message was:
Code: Select all
dbg_main.cc: In function 'void bx_dbg_lin_memory_access(unsigned int, bx_address, bx_phy_address, unsigned int, unsigned int, unsigned int, Bit8u*)':
dbg_main.cc:586: error: expected initializer before '*' token
dbg_main.cc:588: error: 'xmmdata' was not declared in this scope
dbg_main.cc: In function 'void bx_dbg_phy_memory_access(unsigned int, bx_phy_address, unsigned int, unsigned int, Bit8u*)':
dbg_main.cc:624: error: expected initializer before '*' token
dbg_main.cc:626: error: 'xmmdata' was not declared in this scope
Fix 1: Wrapping the 2 pieces of code with "#if BX_SUPPORT_SSE > 0" and #endif" seems to fix this.
Status 2: Failed to compile, error message was:
Code: Select all
cpuid.cc: In static member function 'static void bx_cpu_c::CPUID(bxInstruction_c*)':
cpuid.cc:281: error: 'class bx_cpu_c' has no member named 'msr'
cpuid.cc:307: error: 'class bx_cpu_c' has no member named 'msr'
Fix 2: Hehe. Don't use "--enable-apic"..
Status 3: Working very nicely!
80486sx: --enable-cpu-level=4 --disable-fpu --disable-debugger
Status 1: Failed to compile, error message was:
Code: Select all
gui/enh_dbg.o: In function `Close_cb(_GtkWidget*, void*)':
/ostest/bochs-20081201/gui/enh_dbg_os_specific.h:1342: undefined reference to `bx_dbg_quit_command'
Fix 1: Put the following 2 lines at the start of both "enh_dbg.cc" and "enh_dbg_os_specific.h"; and put an "#endif" at the end of both these files:
Code: Select all
#include "../config.h"
#if BX_DEBUGGER
Status 2: Works perfectly!
pentium_db: --enable-cpu-level=5 --enable-fpu --disable-mmx
Status: Worked fine!
Note: When you select "Show FPU/MMX registers" from the "options" menu, it dislays FPU and MMX registers, even though MMX is disabled. I'd consider this a minor quirk rather than a bug...
pentium: --enable-cpu-level=5 --enable-fpu --disable-mmx --disable-debugger
Status: Worked fine!
p3_db: --enable-cpu-level=6 -enable-mmx --enable-global-pages --enable-pae --enable-large-pages --enable-mtrr
Status: Worked fine!
p3: --enable-cpu-level=6 -enable-mmx --enable-global-pages --enable-pae --enable-large-pages --enable-mtrr --disable-debugger
Status: Worked fine!
p4_db: --enable-cpu-level=6 --enable-global-pages --enable-pae --enable-large-pages --enable-mtrr --enable-sse=2 --enable-daz --enable-xsave
Status: Worked fine!
p4b_db: Exactly the same as "p4_db" above, but with "--enable-x86-64" instead of "--disable-x86-64"
Status: Compiled, didn't run. Error message was:
Code: Select all
[CTRL ] add param 'pending_INIT' to bx_list_c 'cpu0': list capacity exceeded
Fix: Still haven't found one..
p4b_db: Exactly the same as "p4b_db" above, but with " --disable-debugger"
Status: Compiled, didn't run. Error message was:
Code: Select all
[CTRL ] add param 'pending_INIT' to bx_list_c 'cpu0': list capacity exceeded
Fix: Still haven't found one..
Enable Almost Everything: Every "./configure" option enabled, except "--enable-x86-64"
Status: Worked fine!
Misc/general Notes
Some notes for all versions:
- In the register display window, it says "EFLAGS = ???????" when it should say "CS = ???????".
- SMP looks very impressive with 8 CPUs (one button per CPU). However, normally I hack my copy of Bochs to support many more CPUs (up to 255 sometimes) because it's the only way to test if my OS supports a large number of CPUs properly, and it's the easiest way to find things like re-entrancy problems and live-lock. Now that Qemu is dead (won't compile on modern versions of GCC and won't work on 64-bit OSs if you do switch to an old version of GCC) I'll be looking forward to see how the graphical debugger handles it...
- If you have the debugger in a window (not full screen) and you keep resizing the window by moving the right border left and right (e.g. skinny, wide, skinny, wide), then the register dump grows leaving the disassembly and the memory display with decreasing space, until eventually you can't reduce the size of the window anymore. Once you reach this state, it's fun to maximize it (make it fill the screen) and then restore it again (so it's not full screen) - in this case it restores the window to it's previous size, but then the window grows on it's own until it's too large for the screen and only stops growing when it's about 2.5 times wider than the screen. Note: I'm using 1680 * 1050 screen resolution, so I'm guessing the window keeps growing until it's 4096 pixels wide.
Conclusion
With a few changes, everything works well unless you attempt to emulate a 64-bit CPU. Attempting to emulate a 64-bit CPU never works, even if the debugger is disabled. It'd be interesting to see if the original CVS version of Bochs was able to emulate a 64-bit CPU...
Until this is fixed, I can't really test any other combinations of configure options, so I'm going to give up for today.
Cheers,
Brendan