I'm developing my own OS and had trouble with the PAE
support in Bochs. If Bochs is compiled with
"--enable-PAE", then CPUID will report that PAE is
supported, but when the guest OS enables PAE the paging
system behaves exactly like it isn't enabled, causing
page fault exceptions until it triple faults.
Using the debugger and stepping through the code it's
possible to enable PAE and then paging, but stop before
executing the first instruction after paging is enabled
(and immediately before the page fault). This allows
you to use the debugger's memory manipulation commands
(setpmem, x and xp) to test how Bochs is emulating the
This bug effects both Bochs 2.1.1 and the new Bochs 2.2
Beta. I've tried Bochs 2.1.1 on both Windows 98 (cygwin
on Pentium IV) and Gentoo Linux (GCC on Dual Pentium
III) with the same results. The new Bochs 2.2 Beta I've
only tried on Gentoo Linux (GCC on Dual Pentium III).
My OS's code works fine on real computers when PAE is
used, and also works fine on Bochs when PAE isn't used.
I'm not sure if Bochs has ever actually supported PAE
(in which case the existance of the "--enable-pae"
compile time option is a bug), or if Bochs should
support PAE properly.
My email address is "btrotter[AT]gmail.com"..
Log in to post a comment.