Subject: CVS commit: pkgsrc/emulators/bochs
To: None <>
From: Julio M. Merino Vidal <>
List: pkgsrc-changes
Date: 12/04/2006 17:37:24
Module Name:	pkgsrc
Committed By:	jmmv
Date:		Mon Dec  4 17:37:24 UTC 2006

Modified Files:
	pkgsrc/emulators/bochs: Makefile PLIST PLIST.Darwin distinfo
	pkgsrc/emulators/bochs/patches: patch-aa patch-ab

Log Message:
Update to 2.3 from 2.2.1.  Tested under NetBSD-current and Mac OS X 10.4.

Changes in 2.3 (August 27, 2006):

Brief summary :
- limited save/restore support added (config + log options, hardware state)
- configuration parameter handling rewritten to a parameter tree
- lots of cpu and internal debugger fixes
- hard disk geometry autodetection now supported by most of the image types
- hard disk emulation now supports ATA-3 (multiple sector transfers)
- VBE memory size increased to 8MB and several VGA/VBE fixes
- updated LGPL'd VGABIOS to version 0.6a

Detailed change log :

- CPU and internal debugger fixes
  - Fixed bug in FSTENV instruction (Stanislav Shwartsman)
  - Recognize #XF exception (19) when SSE is enabled
  - Fixed bug in PSRAW/PSRAD MMX and SSE instructions
  - Save and restore RIP/RSP only for FAULT-type exceptions, not for traps
  - Correctly decode, disassemble and execute multi-byte NOP '0F F1' opcode
  - Raise A20 line after system reset (Stanislav Shwartsman)
  - Implemented SMI and NMI delivery (APIC) and handling in CPU (Stanislav)
  - Experimental implementation of System Management Mode (Stanislav)
  - Added emulation of SSE4 instructions (Stanislav Shwarstman)
  - Save and restore FPU opcode, FIP and FDP in FXSAVE/FRSTOR instructions
  - Fixed bug in MOVD_EdVd opcode (always generated #UD exception)
  - Fixed critical issue, Bochs was not supporting > 16 bit LDT.LIMIT values
  - Many fixes in Bochs debugger and disassembler

- CPU x86-64 fixes
  - Fixed SYSRET instruction implementation
  - Fixed bug in CALL/JMP far through 64-bit callgate in x86-64 mode
  - Correctly decode, disassemble and execute 'XCHG R8, rAX' instruction
  - Correctly decode and execute 'BSWAP R8-R15' instructions
  - Fixed ENTER and LEAVE instructions in x86-64 mode (Stanislav)
  - Fixed CR4 exception condition (No Name)
  - Fixed x86 debugger to support x86-64 mode (Stanislav)

- APIC and SMP
  - Support for Dual Core and Intel(R) HyperThreading Technology. Now you
    could choose amount of cores per processor and amount of HT threads per
    core from .bochsrc for SMP simulation (Stanislav Shwartsman)
  - Allow to control SMP quantum value through .bochsrc CPU
    option parameter. Previous Bochs versions used hardcoded quantum=5
  - Fixed interrupt priority bug in service_local_apic()
  - Fixed again reading of APIC IRR/ISR/TMR registers. Finally it becomes
    fully correct :-)

- Configure and compile
  - Moved configure time --enable-reset-on-triple-fault option to runtime,
    the 'cpu' option in .bochsrc is extended and the old configure option
    is deprecated (Stanislav Shwartsman)
  - Removed --enable-pni configure option, to compile with PNI use
    --enable-sse=3 instead (Stanislav Shwartsman)
  - enable SEP (SYSENTER/SYSEXIT) support by default for Penitum II+
    processor emulation (i.e. if cpu-level >= 6 and MMX is enabled)

- general
  - Limited save/restore support added. The state of CPU, memory and all
    devices can be saved now (state of harddisk images not handled yet).
  - Fixed several memory leaks

- configuration interface
  - Configuration parameter handling rewritten to a parameter tree. This is
    required for dynamic menus/dialogs, user-defined options and save/restore.
  - Support for user-defined bochsrc options added
  - help support at the parameter prompt in textconfig added

- I/O devices (Volker)
  - Floppy
    - partial sector transfers fixed
  - Hard drive / cdrom
    - several fixes to the IDE register behaviour (e.g. in case of a channel
      with only one drive connected)
    - fixed data alignment of 'growing' hard drive images (sharing images
      between Windows and Linux now possible)
    - disk geometry autodetection now supported by most of the image types
      (unsupported: external, dll and compressed modes)
    - multi sector read/write commands implemented
    - hard disk now reporting ATA-3 supported
    - ATAPI 'inquiry' now returns a unique device name
  - Keyboard
    - reset sent to keyboard has no effect on the 8042 (scancode translation)
  - PCI
    - forward PIRQ register changes to the I/O APIC (if present)
    - attempt to fix and update the emulation part of 'pcidev' (untested)
  - VGA
    - VBE memory size increased to 8MB and several VBE fixes
    - VGA memory read access fixed (bit plane access and read mode)
    - VGA memory is now a part of the common video memory

- System BIOS (Volker)
  - enable interrupts before executing INT 19h
  - fixed ATA device detection in case of one drive only connected to controller
  - improved INT 15h function AX=E820h
  - real mode PCI BIOS now returns IRQ routing information (function 0Eh)
  - keyboard LED flags handling fixed and improved
  - fixed handling of extended keys in INT 09h
  - Updated LGPL'd VGABIOS to version 0.6a

- SF patches applied
 [1340111] fixes and updates to usb support by Ben Lunt
 [1539420] minor addition to pci_usb code by Ben Lunt
 [1455958] call/jmp through call gate in 64-bit mode
 [1433107] PATCH: fix compile with wxwindows 2.6 (unicode / utf8) by jwrdegoede
 [1386671] Combined dual core and hyper-threading patch

- these S.F. bugs were closed
  [833927] TTD: System Error TNT.40025: Unexpected processor exception
  [789230] Sending code that shows lock up when setting idt
  [909670] Problems with Symantec Ghost
 [1540241] include missing in
 [1539373] Incorrect disasm for "mov moffset,bla" in 64bit
 [1538419] incorrect disassembly of [rip+disp] with rex.b
 [1535432] shift+cursor key maps to a digit
 [1504891] Knoopix 5.0.1 error
 [1424355] bochs-2.2.6 ata failure in windoze 98se
 [1533979] wrong disassembly of IN instruction
  [620059] paste won't stop
 [1164904] status bar doesn't show num/caps/scroll lock status
 [1061720] ATA Support level for HD
 [1522196] Broken CHANGES link in main page
 [1438415] crash if screen scrolled downwards
  [778441] Shouldn't interrupts be enable after BIOS?
 [1514949] I got a problem with the 8253 timer
 [1513544] disasm of 0xec (in AL,DX) returns ilen of 2 instead of 1
 [1508947] APIC interrupt priority checking and interrupt delivery
  [766286] Debugger halts after any GPF exception
  [639143] va_list is not a pointer on linuxppc
 [1501815] debugger examines memory over page-boundary wrong
 [1503978] movsb/w/d doesn't work when direction is stored
 [1499405] WinPCap has changed URL hosting
 [1498519] APIC IRR bits not set while interrupts disabled
 [1498193] Bochs segfaults on LTR instruction
  [787140] Guest2HostTLB optimization bug
 [1492070] instrument stop
 [1487772] No SEP on P4
 [1488335] Growing hard disk images severe interoperability errors!
 [1076312] Shadow RAM and TLB
 [1282249] The real i440FX chipset Award bios hangs
 [1479763] mistake "mov ax,[es:di]" for "mov ax,[ds:di]"
 [1453575] Misconfigured floppy DMA transfers do not terminate.
 [1460068] Incorrect handling for the Options Menu Item
  [910203] bochs-2.1.1 wx.lo failed
 [1438654] PANIC when trying to run install-amd64-minimal-2005.0.iso
 [1458320] compile hdimage.h fails
 [1455880] bochs-2.2.6,2: make error on FreeBSD
  [696890] Network wouldn't run under W2k hosting MSDOS
  [673391] SMP timer problems
 [1291059] wxWindows GUI on non-windows/configure issue
 [1356450] bochs 2.2.1 errors-omittions
 [1178017] Win98 guest cannot receive network packets from host
 [1076315] a20_mask after restarting
 [1436323] real hw does not panic when bad Ib in CMPSS_VssWssIb
 [1435269] cdrom_amigaos is not compilable
 [1433314] disasm issues
 [1170614] relative jumps/calls wrong in debugger
  [758121] user might get confused when interrupt handler invoked
 [1170622] You cannot toggle OFF "show" flags
 [1406387] JMP instruction should display absolute address
 [1428813] PANIC: ROM address space out of range
 [1426288] DR-DOSs EMM386 problem
 [1412036] Bochs cannot recognize PCI NIC correctly
  [435115] dbg: modebp broken and no docs
 [1419366] disasm cs:eip does not work anymore
 [1419393] SSE's #XF exception -> "exception(19): bad vector"
 [1419429] disassembly of "260f6f00" show DS: instead of ES: prefix
 [1417583] Interrupt behaviour changed from 2.2.1 to 2.2.5
 [1418281] 'push' (6A) incorrectly disassembled
 [1417791] FLDENV generating exception when real hw does not.
 [1264583] OS/2 1.1 doesn't run

Changes in 2.2.6 (January 29, 2006):

- First major SMP release !
  - several APIC and I/O APIC fixes make SMP Bochs booting Windows NT4.0
    or Knoppix 4.0.2 without noapic kernel option in SMP configuration.
  - critical APIC timer bug fixed
  - obsolete SMP BIOS images removed (MP tables created dynamicaly)
  - determine number of processors in SMP configuration through .bochsrc
    new .bochsrc option 'CPU' allows to choose number of processors to emulate
  - new configure option --enable-smp to configure Bochs for SMP support,
    the old --enable-processors=N option is deprecated
- CPU and internal debugger fixes
  - enabled #PCE bit in CR4 register, previosly setting of this bit
    generated #GP(0) fault
  - enabled LAHF/SAHF instructions in x86-64 mode
  - fixed bug in PMULUDQ SSE2 instruction
  - fixes in Bochs debugger
- Configure and compile
  - enable VME (virtual 8086 mode extensions) by default if cpu-level >= 5
  - enable Bochs disassembler by default for all configurations
  - win32 installer script improvements
  - ips parameter moved to new 'CPU' option
  - show IPS value in status bar if BX_SHOW_IPS is enabled
- Other
  - several fixes in the hard drive, keyboard, timer, usb and vga code
  - new user button shortcut "bksl" (backslash)
  - updated Bochs instrumentation examples
  - user and development documentation improved

Changes in 2.2.5 (December 30, 2005):

Brief summary :
- added virtual 8086 mode extensions (VME) implementation
- several fixes/improvements in x86-64 emulation, debugger and disassembler
- new serial mode 'socket' connects a network socket
- IDE busmaster DMA feature for harddisks and cdroms completed and enabled
- many improvements in Bochs emulated I/O devices (e.g. floppy, cdrom)
- Updated LGPL'd VGABIOS to version 0.5d

Detailed change log :

  - fixed XMM registers restore in FXRSTOR instruction (Andrej Palkovsky)
  - print registers dump to the log if tripple fault occured
  - fixed PANIC in LTR instruction (Stanislav)
  - added virtual 8086 mode extensions (VME) implementation, to enable
    configure with --enable-vme (Stanislav)
  - flush caches and TLBs when executing WBINVD and INVD instructions
  - do not modify segment limit and AR bytes when modifying segment
    register in real mode (support for unreal mode)
  - fixed init/reset values for LDTR and TR registers
  - reimplemented hardware task switching mechanism (Stanislav)
  - generate #GP(0) when fetching instruction cross segment boundary

- CPU (x86-64) (Stanislav Shwartsman)
  - implemented call_far/ret_far/jmp_far instructions in long mode
  - fixed IRET operation in long mode
  - fixed bug prevented setting of NXE/FFXSR bits in MSR.EFER register
  - implemented RDTSCP instruction
  - do not check CS.limit when prefetching instructions in long mode
  - fixed masked write instructions (MASKMOVQ/MASKMOVDQU) in long mode
  - fetchdecode fixes for x86-64

  - Fixed bug in changing local APIC id (Stanislav)
  - Fixed reading of IRR/ISR/TMR registers (patch by wmrieker)
  - Implemented spurious interrupt register (Stanislav, patch by wmrieker)
  - Fixed interrupt delivery bug (anonymous #SF patch)
  - Correctly implemented ESR APIC register (Stanislav)

- Bochs debugger
  - Fixed bug in bochs debugger caused breakpoints doesn't fire sometimes
    (Alexander Krisak)
  - watchpoints in device memory fixed (Nickolai Zeldovich)
  - new debug interface to access Bochs CPU general purpose registers
    with support for x86-64

- Disassembler (Stanislav Shwartsman)
  - Fixed disassembly for FCOMI/FUCOMI instructions
  - Full x86-64 support in disassembler. The disassembler module extended
    to support x86-64 extensions. Still limited by Bochs debugger which
    is not supporting x86-64 at all ;(

- I/O devices (Volker)
  - general
    - memory management prepared for large BIOS images (up to 512k)
    - slowdown timer sleep rate fixed (now using 1 msec on all platforms)
    - some device specific parameter handlers moved into the device code
  - serial
    - new serial mode 'socket' connects a network socket (#SF patch by Andrew Backer)
  - hard drive / cdrom
    - assign a unique serial number to each drive (fixes harddrive detection
      problems with Linux kernels 2.6.x: "ignoring undecoded slave")
    - geometry autodetection for 'flat' hard disk images added. Works with
      images created with bximage (heads = 16, sectors per track = 63)
    - ATAPI command 'read cd' implemented, some other commands improved
    - cdrom read block function now tries up to 3 times before giving up
    - emulation of raw cdrom reads added, some other lowlevel cdrom fixes
    - IDE busmaster DMA feature for harddisks and cdroms completed and enabled
    - disk image size limit changed from 32 to 127 GB
    - split ATA/ATAPI emulation code and image handling code
  - floppy
    - fixes for OS/2 (patch by Robin Kay)
    - disk change line behaviour fixed (initial patch by Ben Lunt)
    - end-of-track (EOT) condition handling implemented
    - more accurate timing for read/write data and format track commands using
      a motor speed of 300 RPM
    - timing of recalibrate and seek commands now depends on the step rate,
      date rate and the steps to do
    - floppy controller type changed to 82077AA
  - cmos
    - RTC 12-hour and binary mode implemented
    - number of CMOS registers changed from 64 to 128
    - bochsrc option 'cmosimage' improved
    - save cmos image on exit if enabled
  - speaker
    - simple speaker support for OS X added (patch by
  - pci
    - BeOS boot failure fix in the PCI IDE code
    - don't register i/o and memory regions during PCI probe
  - vga
    - memory allocation for vga extensions fixed
  - usb
    - some bugfixes by Ben Lunt (mouse and keypad are usable now)
  - networking modules
    - VDE networking module now enabled on Linux

- display libraries
  - general
    - new syntax for the userbutton shortcut string and more keys supported
  - win32
    - fixed keycode generation for right alt/ctrl/shift keys
    - runtime dialog is now a property sheet
  - x11
    - simple dialog boxes for the "ask" and "user shortcut" feature implemented
    - Slovenian keymap added (contributed by Mitja Ursic)

- configuration interface
  - ask dialog is now enabled by default for win32, wx and x display libraries
  - bochsrc option floppy_command_delay is obsolete now (floppy timing now based
    on hardware specs)
  - floppy image size detection now available in the whole config interface
  - some device specific parameter handlers moved into the device code
  - calculate BIOS ROM start address from image if not specified

- System BIOS (Volker)
  - PCI i/o and memory base address initialization added
  - several keyboard interrupt handler fixes (e.g. patch by japheth)
  - several floppy fixes (e.g. OS/2 works with patch by Robin Kay)
  - some more APM functions added
  - Updated LGPL'd VGABIOS to version 0.5d
  - generate SMP specific tables dynamicly by the Bochs memory init code

- SF patches applied
 [1389776] Disk sizes over 64 Gbytes by Andrzej Zaborowski
 [1359162] disasm support for x86-64 by Stanislav Shwartsman
  [857235] task priority and other APIC bugs, etc by wmrieker
 [1359011] build breaks for 386 + debugger + disasm by shirokuma
 [1352761] Infinite loop when trying to debug a triple exception
 [1311170] small APIC bug fix (interrupt sent to the wrong CPU)
 [1309763] Watchpoints don't work in device memory by Nickolai Zeldovich
 [1294930] change line status on floppy by Ben Lunt
 [1282033] SSE FXRESTORE not working correctly by Ondrej Palkovsky
  [816979] wget generalizations by Lyndon Nerenberg
 [1214886] No more pageWriteStamp / unified icache by H. Johansson
 [1107945] com->socket redirection support by Andrew Backer

- these S.F. bugs were closed
  [669180] win95 install : unknown SET FEATURES subcommand 0x03
 [1346692] bochs 2.2.1 VGA BIOS error
 [1354963] floppy in KolibriOS
 [1378204] error: bochs-2.2.1, --enable-sb16, --disable-gameport
 [1368412] VDE problems in BOCHS
  [533446] CPU and APIC devices appear twice
 [1000796] bximage fails to create image of specified size
 [1170793] Quarterdeck QEMM doesn't work
  [923704] Multiple opcode prefixes don't reflect Trap 13
 [1166392] DocBook/documentation issues
 [1368239] broken grater than 4GB size of sparse type hd image
 [1365830] i386 compile breaks on paging
  [427550] Incomplete IRETD implementation
 [1215081] MSVC workspace STILL not fixed
  [736279] Jump to Task
 [1356488] FD change fail & occur error
  [957615] [CPU ] prefetch: RIP > CS.limit
 [1353866] not booting linux-2.6.14
 [1351667] load32bitOSImage does not work with --enable-x86-debugger
 [1217476] Incorrect (?) handling of segment registers in real mode
 [1184711] OS2 DOS crash [2.2.pre2]
  [624330] support for disks > 32GiB
 [1348368] bochs 2.2.1 bximage error
 [1342081] Configuration Menu option failed
 [1138616] OS/2 Warp 4 hangs when booting
 [1049840] mouse and video conflict
 [1164570] Unable to perform Fedora Core 4 test 1 installation
 [1183201] Windows 2000 (MSDN build 2150?) does not completely install
 [1194284] Can't boot from CD-ROM (Windows NT)
  [962969] Windows NT crashes while trying to intall them.
 [1054594] WinXP install halts (redo)
 [1153107] Windows XP fails with BSOD on 'vga'
  [938518] Win XP installation fails
  [645420] getHostMemAddr vetoed direct read
 [1179985] MS XENIX: >>PANIC<< VGABIOS panic at vgabios.c, line 0
 [1329600] WBINVD and INVD should flush caches and TLB
  [638924] eliminate BX_USE_CONFIG_INTERFACE
 [1048711] Funny behaviour with CTRL
 [1288450] keyboard BIOS error
 [1310706] Keyboard - about key SHIFT
 [1295981] Ubuntu 5.04 Live-CD won't boot in Bochs
  [879047] APIC timer behavior different before reset and after
 [1188506] I still can't install the german Windows XP!
 [1301847] Windows XP dosn't boot - FXRSTOR problem ?
  [661259] does not boot QNX under WinX
  [924412] Keyboard lock states all whacked
  [681127] MIPSpro compiler (IRIX) is allergic to ^M
 [1285923] BIOS keyboard handler
  [516639] ATA controller revisited...
  [657918] does not boot BeOS under WinX
  [649245] BeOS CD locks halfway on boot
 [1094385] Attachment for bug 1090339 (beos failure)
 [1183196] BeOS 4.5 developer CD does not install
 [1090339] BeOS fails to boot
  [639484] panics when int 13 is called
  [711701] divide by zero
  [704295] ATAPI/BIOS call missing
  [682856] hard drive problems
  [627691] Cursor keys problem
  [588011] keyboard not working
  [542260] os/2 warp crashes with floppy handling
 [1273878] SB16 doesn't work in pure DOS
  [542254] OS/2 FDC driver dies
 [1099610] Windows 98 SE Does not install
  [875479] cr3 problem on task switch
  [731423] NE2000 causing PANIC on Win2K detection
 [1156155] bochs fails to boot plan9 iso
 [1251979] --enable-cpu-level=3 should assume --without-fpu
 [1257538] Interupt 15h 83h - set wait event interval
  [658396] Panic for DR DOS emm386
  [679339] /? doesn't divulge Bochs command-line syntax
 [1167016] call/jump/return_protected doesn't support x86-64
 [1252432] Mac OS X compile bug
  [881442] Bochs 2.1 PANIC when loading DOS Turbo Pascal protected mode
 [1249324] Boch2.2.1 Buffer Overfollow in void bx_local_apic_c::init ()
 [1197144] 'make install' has dependency on wget
 [1079595] LTR:386TSS: loading tr.limit < 103
 [1244070] Compilation Error in gui/
  [761707] CPU error when trying to start Privateer
  [517281] Crash running Privateer in DOS...

To generate a diff of this commit:
cvs rdiff -r1.46 -r1.47 pkgsrc/emulators/bochs/Makefile
cvs rdiff -r1.7 -r1.8 pkgsrc/emulators/bochs/PLIST
cvs rdiff -r1.1 -r1.2 pkgsrc/emulators/bochs/PLIST.Darwin
cvs rdiff -r1.19 -r1.20 pkgsrc/emulators/bochs/distinfo
cvs rdiff -r1.10 -r1.11 pkgsrc/emulators/bochs/patches/patch-aa
cvs rdiff -r1.8 -r1.9 pkgsrc/emulators/bochs/patches/patch-ab

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.