Changes in 2.5 (November 27, 2011):
Bochs repository moved to the SVN version control !
Brief summary :
! Fully configurable CPU to emulate with a single .bochsrc option !
- 10% (ST) to 50% (SMP) CPU emulation speedup !
- Implemented support for new x86 ISA extensions, Bochs is aligned with
latest published Intel Architecture Manual (rev 040, AVX rev 011):
- XSAVEOPT, AVX/AVX2/FMA/F16C, BMI1/BMI2, SMEP, INVPCID, TSC-Deadline
- VMX: VMX Preemption Timer, Pause Loop Exiting and VM Functions
- Implemented support for AMD SSE4A/XOP/FMA4/TBM instruction sets
- Networking: introduced new networking module 'slirp'
- Harddrive: fixed buffer overflow causing Bochs crash in LBA48 mode
- VGA: Added PCI ROM support to cirrus and pcivga and moved ROM loading
for the ISA case to the vga code (SeaBIOS now usable by Bochs)
- Sound: ported ES1370 soundcard emulation from Qemu
- Continuing configure rework, check for more removed configure and .bochsrc
options and their replacements !
- LGPL'd VGABIOS updated to version 0.7a
Detailed change log :
- Now you can configure CPU to emulate using a single .bochsrc option !
The option selects CPU configuration to emulate from pre-defined list
of supported configurations. When this option is used, Bochs CPU emulation
engine is automatically configured to emulate a specific real hardware CPU,
including exact CPUID matching reference hardware. Check .bochsrc example
or check user manual for list of supported configurations and more details.
* It is also possible to choose the CPU to emulate from Bochs command line
using command line interface to .bochsrc: "cpu::model <cpu_name>"
* Query for supported CPU models using command line option: -help cpu.
- 10% emulation speedup with handlers chaining optimization implemented. The
feature is enabled by default when configure with --enable-all-optimizations
option, to disable handlers chaining speedups configure with
- New way of CPUs scheduling in SMP mode brings up to 50% speedup to the
SMP emulation. New implementation uses dynamic CPU quantum value and takes
full advantage of the trace cache. Each emulated processor will execute
the whole trace before switching to the next processor.
* It is also safe to use large (up to 16 instructions) quantum values for
the SMP emulation now and improve performance even further.
- Implemented Supervisor Mode Execution Protection (SMEP), the feature can
be enabled using .bochsrc CPUID option.
- Added support for XSAVEOPT instruction, the instruction can be enabled
using .bochsrc CPUID option.
- Added support for AVX and AVX2 instructions emulation, to enable configure
with --enable-avx option. When compiled in, AVX still has to be enabled
using .bochsrc CPUID option.
- Added emulation of AVX float16 convert instructions, the feature can be
enabled using .bochsrc CPUID option.
- Added support for AVX2 FMA instructions emulation. The implementation
was ported (with few bugfixes) from QEMU patch by Peter Maydell.
The FMA instructions support can be enabled using .bochsrc CPUID option.
- Added support for Bit Manipulation Instructions (BMI1/BMI2) emulation.
The BMI instructions support can be enabled using .bochsrc CPUID option.
- Added support for AMD SSE4A/XOP/FMA4/TBM extensions emulation, the
instructions can be enabled using .bochsrc CPUID option.
- Implemented VMX preemption timer VMEXIT control (patch by Jianan Hao)
- Implemented Pause-Loop Exiting Secondary VMEXIT control.
- Implemented VM Functions support and EPTP-Switching VM Function.
- Added INVPCID instruction emulation support.
- Added APIC timer TSC-Deadline mode emulation support.
- Now you could disable x86-64 from .bochsrc so it become possible to
emulate 32-bit CPUs using Bochs binary compiled with x86-64 support.
- Updated/fixed instrumentation callbacks.
- Bugfixes for CPU emulation correctness and stability.
- Bochs Internal Debugger and Debugger GUI
- Bochs disassembler fixes / new instructions support.
- Fixed timer breakpoint handling in Bochs internal debugger.
- Fixed bug in Bochs internal debugger 'show off' command.
- Added Bochs internal debugger command 'vmexitbp' to set breakpoint on
VMX guest VMEXIT (patch by Jianan Hao). Type 'vmexitbp' in debugger
command window to switch it on/off (similar to modebp).
- Fixed linear to physical address translation by Bochs internal debugger
for EPT unrestricted guest (VMX guest with paging disabled under EPT)
- Fixed bug in GUI debugger SSE registers display.
- Correctly display current CPU mode in GUI debugger status bar.
- Turn off the mouse capture when the internal debugger or gdbstub enter
the input loop.
- Added new configure option which enables RAM file backing for large guest
memory with a smaller amount host memory, without causing a panic when
host memory is exhausted (patch by Gary Cameron). To enable configure with
- Configure and compile
- Fixed Bochs manifest for Win64 compilation using Microsoft Visual Studio
command line compiler.
- Added ability to configure CPUID family through .bochsrc.
The default family value determined by configure option --enable-cpu-level.
- Added ability to configure CPUID model through .bochsrc.
The default model value is 3.
- Added ability to configure x2apic support through .bochsrc.
The APIC configuration could be selected using new CPUID .bochsrc APIC option.
Possible configurations are: "legacy", "xapic" and "x2apic".
Configure option --enable-x2apic and Bochs 2.4.6 .bochsrc XAPIC option are
deprecated and should not be used anymore.
- Configure option --enable-vbe is deprecated and should not be used anymore.
The VBE support is always automatically compiled in, in order to enable
VBE support the .bochsrc option "vga: extension=" has to be set to "vbe".
If PCI is present, the "pcivga" device can be assigned to PCI slot.
- Configure option --enable-acpi is deprecated and should not be used anymore.
The ACPI support is always automatically compiled in if PCI is compiled in.
The ACPI still could be disabled using .bochsrc 'plugin_ctrl' option.
- Removed --enable-trace-cache configure option. The option will be always ON
for any Bochs configuration.
- Compile in MONITOR/MWAIT support by default for all cpu-level=6 configurations.
- added support for MSVC DLL plugins with a separate workspace package.
VS2008Ex can now create a BOCHS.EXE with a set of plugin DLLs.
TODO: nmake still cannot create plugin DLLs.
- removed some outdated / unmaintained parts from the Bochs code: BeOS host
support, plex86 support, networking module 'arpback', text snapshot check
- I/O Devices
- new networking module 'slirp' (user mode networking using Slirp and a
builtin DHCP server)
- Hard drive / cdrom
- fixed buffer overflow causing Bochs crash in LBA48 mode
- implemented ATA commands "READ NATIVE MAX ADDRESS" and
"READ NATIVE MAX ADDRESS EXT"
- ported ES1370 soundcard emulation from Qemu, to enable configure with
the option --enable-es1370
- sound input implemented in the sound lowlevel modules for Windows and
Linux (ALSA / OSS)
- added framework for PCI ROM support
- new bochsrc option 'pci' replaces the 'i440fxsupport' option. The 'chipset'
parameter for now only accepts the value 'i440fx'.
- added PCI ROM support to cirrus and pcivga and moved ROM loading for the ISA
case to the vga code (SeaBIOS now usable by Bochs)
- log prefix now depends on the selected extension (new prefix BXVGA for
Bochs VBE support)
- experimental USB xHCI support (written by Ben Lunt)
- LGPL'd VGABIOS updated to version 0.7a
- implemented vgabios functions with AX=0x112x (patch by Hugo Mercier)
- fixed DAC palette in 8 bpp VBE and Cirrus modes (using the same palette
as VGA mode 0x13)
- VBE: added HDTV resolutions (patch by Tristan Schmelcher)
- VBE: added PCI ROM signature and data structure
- ROM BIOS
- Report memory above 4GB to BIOS (patch by Sebastian Herbszt)
- added PCI ROM init code for BIOS-bochs-latest
(WARNING: legacy BIOS no longer works with a PCI display adapter)
- GUI and display libraries
- new parameter 'update_freq' for the 'vga' bochsrc option replaces the
- vga update frequency now uses host timing if the realtime synchronization
is enabled with the "clock" option (FIXME: it should always be used -
independent from the "clock" setting)
- Implemented graphics mode snapshot for VBE, Cirrus and standard VGA modes.
CGA modes are not supported yet.
- added 'x' display library option 'nokeyrepeat' to turn off keyboard repeat
- Config interface
- win32paramdlg: dialog size now adjusted to support larger label text
- win32paramdlg: added tooltip support using the parameter description
- SF patches applied
 Enabling raw devices as hdimage by affiss
 rombios: fix package size in pointing device flags 2 by Sebastian Herbszt
 [PATCH] PIC: remove never-executed code by Christian Inci
 Ctrl-Break support for the bochs BIOS by Nikolay Nikolov
 VMX preemption timer by Jianan Hao
 Fix wrong address translation in debugger by Jianan Hao
 Ctrl-Break support for the Win32 gui by Nikolay Nikolov
 Ctrl-Break support for the X11 gui by Nikolay Nikolov
 Breakpoint on VMEXIT event by Jianan Hao
 Fix CopyHost*WordLittleEndian macros by Heikki Lindholm
 optimized powerpc byte swapping by Heikki Lindholm
 Core Audio first aid by Heikki Lindholm
 Compilation fixes for OpenBSD by Brad Smith
 acpi/muldiv64 endian bug by Heikki Lindholm
 Mac OS X audio missing framework dependency by Heikki Lindholm
 fix xrandr related crash by Heikki Lindholm
 add eth backend based on Slirp by Heikki Lindholm
- these S.F. bugs were closed/fixed
 block device dimensions problem
 interrupts vectors 0x67 should also be NULL ! cf: 2902118
 Mouse locked during magic-break
 release mouse when debugger breakpoint was hit
 sb command bug
 Unable to install Cirrus SVGA driver in guest Windows ME
 large ramfile support broken on anything but Linux
 stepN command might be not working properly
 Bochs does not compile with linux3.0
 segfault crash with sparse disk images
 Problems with BIOS pointing device services (int 15h)
 incompatible colours in palette
 Abort on large memory setting
 Int 13h FN 48h incorrect return values
 holding shift key causes capslock hang
 Two incompatible crc32 modules
 configure for VCPP.NET issues
 Installing linux causes a crash in pci_ide
 Fedora 13 installation fails on Bochs 2.4.5
 ./configure --enable-pci --disable-cdrom
 wrong memory size is reported to GRUB (e820 problem?)
 trace cache disabled mode will miss SMC
 BIOS32 PCI service wrong length
 PIT mistakenly connected to IRQ0 IOAPIC instead of IRQ2
 GUI debugger does not update CPU mode correctly
 SB16 doesn't reinit correctly
 Cirrus CL-GD5446 emulation incorrect
 Failed to compile when trace cache disabled
 Error compile with vmx in vs2008/2010 and for correct x64
- these S.F. feature requests were closed/implemented
 Legacy BIOS int13 AL=17/18h diskette issue
 Screenshot for graphical
 VMX-preemption timer
 configurable CPUID
 Allow user to specify architecture
 CPU option