fixes a bug in exception handling in v8086 mode
Here are comments from the author:
Since the bug of bochs-2.0.win32 was found and
corrected, it reports. cpu/exception.cpp of src : Within
an interrupt() function, when present is the V8086 mode,
a bug is in the portion which processes 386 (286)
int/trap gate. From the V8086 mode, this portion is
performed, when it is going to execute an int imm
command. The portion in which push_32 () is called in
the state of VM=1 is still a mistake. Although this
push_32 () tends to write in to the stack of a protected
mode, if it is still VM=1 of EFLAGS, the
write_virtual_dword() function called out of push_32 () will
take out a segment protection exception. After
performing clear_VM() etc., it is necessary to make it
call push_32 () correctly, since EFLAGS is saved locally.
Syntax error fixes:
[x] fixed error with array bounds in virt_timer.cc
[x] fixed error with returning value from void functions
[x] fixed const class member initialization (according C++ standard)
[x] for-loop local variable declaration moved out of loop
(for VC 6.0 compliance)
Removed already committed patch from Dirk Thierbach
Replaced the patch from Vitaly Vorobyov by set of splitted patches.
Now any of his patches could be committed separatelly from others !
running on a 32 bit host. The problem was that the FPU code uses native pointers to
represent addresses. The assumption that an emulated address is the same size as a
native pointer breaks down when emulating 64 bit addresses on a 32 bit host. The
patch replaces the occurrences of such an address with a bx_address type.
Once this patch has been reviewed by other developers, it will be committed to the
main cvs branch.
* renamed CPU_ID to BX_CPU_ID.
with this new name there is no possibility for name contentions and BX_CPU_ID
definition could be moved out to NEED_CPU_REG_SHORTCUTS block
* returned back `unsigned BX_CPU::which_cpu(void)` function
* added BX_CPU_ID parameter for
BX_INSTR_PHY_READ(a20addr, len);
BX_INSTR_PHY_WRITE(a20addr, len);
now it will be
BX_INSTR_PHY_READ(cpu_id, a20addr, len);
BX_INSTR_PHY_WRITE(cpu_id, a20addr, len);
It uses special gcc attribute regparm, available on gcc3.2 on x86.
I get about 7% increase when booting windows 95.
The patch still need some integration work before being included
in the main code.
- added "ioaddr" and "irq" to the "usb1" bochsrc option
- number of ports is limited to 2 for a USB UHCI root hub
- the PCI configuration space is now a part of the usb hub structure
bablokb says in [ 664926 ]
please remove the patch patches/patch.bochs.sh. This
patch was developed for 1.4.x and does not work
anymore with 2.0.x.
It has been superseded by bxtstart in Bochs-Tools (see
http://www.bablokb.de/bochs-tools/).
the current code page's mode. It was &'ing against fetchModeMask:
((pageWriteStamp & fetchModeMask) == fetchModeMask)
instead of against a constant mask which populates all the
relevant bits:
((pageWriteStamp & ICacheFetchModeMask) == fetchModeMask)
* Moved the check above to ::prefetch(), since nothing should change
between calls to that function. I added some code to functions
which load CS to make sure that is the case.
* Commented out several calls to invalidate_prefetch_q() in
ctrl_xfer{16,32,64}.cc. Changes to only EIP (i.e. CS is not
modified) don't matter any more. If EIP lands outside the
window of the current code page, ::prefetch() is called.
* These changes add a few percent of performance.
the text console is going to be needed. I believe this will fix
[ 614724 ] SDL can get stuck in full screen mode
I would like to get a little bit of testing feedback before committing
it at this late date.
add SVGALIB display library by Igor Popik <igipop@wsfiz.edu.pl>
While it's running, you can press F12 to escape into the runtime config
menu, and then you can change disks or quit or whatever.
Better not try it with the bochs debugger...you could get stuck.
Modified Files:
Makefile.in config.h.in configure configure.in main.cc
plugin.h gui/Makefile.in
Added Files:
gui/svga.cc
Removed Files:
patches/patch.svgalib-gui patches/patch.svgalib-gui-f12
Author: Bryce Denney
Date: Wed Nov 20 19:26:24 EST 2002
For any software interrupt, hardware interrupt, or exception, Bochs
calls the instrumentation macro BX_INSTR_INTERRUPT(). For each call
to BX_INSTR_INTERRUPT(), this patch adds instrumentation code that
looks up each interrupt in the Ralf Brown x86 interrupt list and
prints the name of the interrupt in English. This output can be very
useful in telling what a user space program is doing.
For a whole lot of configure options, I put #if...#endif around code that
is specific to the option, even in files which are normally only compiled
when the option is on. This allows me to create a MS Visual C++ 6.0
workspace that supports many of these options. The workspace will basically
compile every file all the time, but the code for disabled options will
be commented out by the #if...#endif.
This may one day lead to simplification of the Makefiles and configure
scripts, but for the moment I'm leaving them alone.
More details inside the file itself.
- add new keyboard init code from Adam Sulmicki
- changed last cli() to #asm cli #endasm
- remove unused cli() function
- don't panic on shutdown status 0x09. just do the normal post