Bochs 2.2.1 released on July 8, 2005

来源:互联网 发布:快速制作效果图软件 编辑:程序博客网 时间:2024/05/14 11:02
Changes in 2.2.1 (July 8, 2005):

- Fixed several compilation warnings and errors for different platforms (Volker)
- Fixed FPU tag word restore in FXRSTOR instruction (Stanislav)
- Added missing scancodes for F11 and F12 to BIOS translation table (Volker)
- Bochs disassembler bugfixes (h.johansson)
- About 5% emulation speed improvement (h.johansson)
- Handle writing of zero to APIC timer initial count register (Stanislav)
- Enable Idle-Hack for 'TERM' GUI (h.johansson)
- Reduced overhead of BX_SHOW_IPS option to minimum. Now every simulation
  could run with --enable-show-ips without significant performance
  penalty. (Stanislav)
- Fixed pcipnic register access (Volker)
- Limited write support for TFTP server in 'vnet' networking module added (Volker)
- Changed some timing defaults changed to more useful values (Volker)
- WinXP/2003 style common controls now supported (Vitaly Vorobyov)
- Updated LGPL'd VGABIOS to version 0.5c (Volker)

-------------------------------------------------------------------------
Changes in 2.2 (May 28, 2005):

Brief summary :
- New floating point emulator based on SoftFloat floating point
  emulation library.
- improved x86-64 emulation
- Cirrus SVGA card emulation added
- status bar with indicators for keyboard, floppy, cdrom and disk (gui dependant)
- many improvements in Bochs emulated I/O devices (e.g. PCI subsystem)

Detailed change log :

- CPU
  - fixes for booting OS/2 by Dmitri Froloff
    - fixed v8086 priveleged instruction processing bug (was also reported
      by LightCone Aug 7 2003)
    - exception process bug (was reported by Diego Henriquez Sat Nov 15
      01:16:51 CET 2003)
    - segment validation with IRET instruction
    - CS segment not present exception processing with IRET
  - several fixes by Kevin Lawton
  - add MSVC host asm instructions (patch by suzu)
  - fixed bug in HADDPD/HSUBPD (SSE3) instructions
  - fixed bug in float to integer SSE/SSE2 convert instructions
  - fixed BCD instructions implementation
  - execution speed improvements (sshwarts and psychosmur)
  - fix MSR_APICBASE base address (Kangmo Kim, Christian Neubert)
  - change BX_PANIC messages to BX_INFO when behaviour exactly
    matches Intel docs
  - EIP > CS.limit case should always cause #GP(0), even in real mode.
    Fixed all jump, call and ret instructions for 16/32 modes
  - fixed using invalid segment register for MOV instruction (h.johansson)
  - fixed ET bit mismatch between CR0 and SMSW instruction
  - fixed possible simulator #DIVZERO fault when executing IDIV instruction
  - fixed undocumented flags handling for BTS, BTR, SHR, SHLD, MUL and IMUL
    instructions (Stanislav Shwartsman)
  - added missed #GP(0) exception when loading incorrect flags combination
    to CR0 (Stanislav Shwartsman)
  - in case of --enable-ignore-bad-msr enabled read ignored MSRs as zero
  - enabled #DE, #TSD and #MCE bits in CR4 register, previosly setting
    of one of these bits generated #GP(0) (Stanislav, Volker Ruppert)
  - exceeding the instruction length limit of 15 bytes (this only can
    occur when redundant prefixes are placed before an instruction)
    generate #GP(0) (Stanislav Shwartsman)
  - corrected PAE functionality

- CPU (x86-64)
  - fetchdecode fixes for x86-64 and 3DNow! (Stanislav)
  - fixed CF flag handling for SHL instruction in x86-64 mode (Stanislav)
  - implemented CR8 register (aliased to APIC.TPR[7:4]) (Stanislav)
  - implemented NXE bit (No-Execute page protection) support (Stanislav)
  - STOSQ instruction emulation fixed (Avi Kivity)
  - allow null SS selector for MOV SS, POP SS, and LSS instructions
    in long mode (Avi Kivity)
  - ignore segment bases for all segments (except FS and GS) in long
    mode (Avi Kivity)
  - allow SYSENTER/SYSEXIT instructions together with x86-64 (Stanislav)
  - canonical address checking for RIP (Stanislav)

- FPU (Stanislav Shwartsman)
  - totally rewritten all FPU code based on softfloat library
  - significantly improved accuracy of all floating point
    instructions.
  - implemented all missed P6 and PNI floating point instructions.
  - hundreds of bug fixes in FPU code.

  TODO:
    ! Unmasked underflow/overflow should correct the result
      by magic number for all operations, including float32
      and float64.

- APIC (Zwane Mwaikambo)
  - APIC arbitration
  - Processor priority
  - Various interrupt delivery fixes
  - Focus processor checking
  - ExtINT delivery

- Disassembler
  - fixed MOV opcode 0x88, had exchanged the operands (h.johansson)
  - fixed MOV opcode 0xA3, had wrong operand size (h.johansson)
  - fixed BOUND opcode 0x62 (Stanislav)
  - fixed CALLW opcode 0xFF /3 and JMPW opcode 0xFF /5 (Stanislav)
  - fixed INS opcode 0x6D, had wrong operand size (Stanislav)
  - fixed disassembly for repeatable instructions (Stanislav)
  - fixed sign-extended immediate opcodes (Stanislav)
  - fixed MOVSS/MOVSD instructions opcode names (Stanislav)
  - fixed NEG instruction opcode name (Stanislav)
  - fixed CMPXCHG8B instruction, had wrong operand size (Stanislav)
  - fixed floating point instructions operands (Stanislav)
  - experimental support of AT&T syntax in disassembler (Stanislav)

- I/O devices
  - general
    - handle cpu reset through port 0x92
    - new memory handler API for PCI i/o and memory handling (Frank Cornelis)
  - speaker emulation for Linux (David N. Welton) and Win32 (Volker Ruppert) added
  - pci
    - PCI slot configuration added for 5 slots (Volker)
    - PCI irq routing, irq sharing and level sensitive irq mode implemented
    - ne2k device appears as a Realtec 8029 NIC if connected to a PCI slot
    - PCI IDE controller dummy device added
    - PCI host device mapping for Linux (Frank Cornelis)
    - PCI Pseudo-NIC emulation (Michael Brown)
  - serial
    - multiple serial port support added (4 ports now available)
    - partial raw serial support on win32 (transmit data)
    - serial port i/o mode option added (modes: null, file, term, raw, mouse)
  - parallel
    - multiple parallel port support added (2 ports now available)
  - mouse
    - serial mouse support (Volker)
    - PS/2 and serial wheel mouse support (Ben Lunt)
  - usb
    - USB mouse and keypad support (Ben Lunt)
    - config option to specify devices connected to USB ports
  - vga
    - VBE 8 bit DAC support added
    - VBE memory now registered using DEV_register_memory_handlers()
    - CL-GD 54xx SVGA emulation added (Makoto Suzuki)
    - vga extension option added (choices: vbe, cirrus, none) (Volker)
  - floppy
    - raw floppy access now works on Win9x host (Ben Lunt)
  - sb16
    - MacOSX sound support (Brian Huffman)
  - networking modules
    - new: 'eth_vnet' simulates ARP, DHCP, ICMP-echo and read-only TFTP
      (m_suzu, easeway)
    - new: 'eth_vde' for Virtual Distributed Ethernet (Renzo Davoli)

- System BIOS
  - turn floppy motor off 2 seconds after last read/write/recalibrate command
    (Ben Lunt)
  - int13_cdrom / 32 bit register update fixes for FreeBSD cdrom boot
    (Fabrice Bellard)
  - APM and system shutdown support (Fabrice Bellard)
  - checksum calculation for expansion ROMs
  - extended floppy parameter table (Mike Nordell, Derek Favcus)
  - PCI IRQ initialisation added
  - boot sequence with up to 3 boot devices added

- display libraries
  - status bar with indicators for cdrom, floppy, harddisk and keyboard added
    (done in rfb, sdl, win32, wx and x)
  - 3rd (middle) mouse button now supported (rfb, sdl, win32, wx, x)
  - mouse wheel support (sdl, win32, x)
  - CTRL key + middle mouse button now used to toggle the mouse capture mode
    (sdl, win32, wx, x)
  - text mode split screen feature added (sdl, win32, wx, x)
  - new gui function returns the display library capabilities (xres, yres, bpp)
    for the Bochs VBE support
  - display library specific options added - currently supported:
    rfb:   timeout (time to wait for client connection)
    sdl:   fullscreen (startup in fullscreen mode)
    win32: legacyF12 (use F12 to toggle mouse)
  - new graphics update API added (used by svga_cirrus) (Robin Kay)

- configuration interface
  - win32: gui runtime dialogs replace textconfig runtime dialogs
  - set default IPS to 10000000 in .bochsrc sample
  - SB16 options dmatimer and loglevel now available at runtime

- configure script / compile
  - --enable-ignore-bad-msr (ignore bad MSR references) option is enabled
    by default
  - --enable-mmx enabled by default only if cpu-level >= 5
  - --enable-4meg-pages will be enabled by default if cpu-level >= 5
  - fixes for Solaris SunPro (Robin Kay)
  - --enable-pni option added
  - --enable-show-ips option added, enable Instruction Per Second counter
    in log file
  - autodetection for lowlevel sound support added

- documentation
  - a bunch of updates in user and documentation docs (Alexander Schuch)

- SF patches applied
  [894595] MSR_APICBASE always returns APIC ADDRESS 0 by Kangmo Kim
  [907163] ctrl_xfer8 clean/speed up
  [907161] clean/speed up of io.cc
  [899972] data xfer performance patch V 2.0.4
  [904549] imul gives incorrect result in long mode
  [877510] amd64 fixes...
  [903465] SEGV in iodev/ne2k.cc line 1211 on Alpha architecture by Christian Lestrade
  [903332] copy the bximage result to clipboard, etc by Lukewarm
  [950905] Do not PANIC on rare, bad input from user-mode by h.johansson
  [924428] ET bit mismatch between CR0 and MSW
  [869822] a real SVGA implementation by m_suzu
  [867045] fix for compiler errors on VC++ by m_suzu
  [838601] support for the over 2GB disk size with MSVC++
  [874816] local ARP/ping/DHCP simulator by m_suzu
  [976066] Keyboard: Get controller version by Ben Lunt
  [832330] ROMBIOS improvement (reduce stack consumption, etc.)
  [977900] READ_CDROM_TOC and base address by Ben Lunt
  [961665] WinXP patch to read physical CDROM's TOC by Ben Lunt
  [978793] CDROM_SENSE_MODE medium_type by Ben Lunt
  [615457] gif to png migration
[1021767] Portability in sb16ctrl.c by Robert Millan
  [690400] gzip is confused by GZIP variable in Makefile
  [567595] guess floppy image size from image file length by Tal Benavidor
  [888426] bochsrc to make vnet useful by m_suzu
[1021758] GNU/k*BSD host support by Robert Millan
  [969967] int 15/ah=87h clearing cr0 by Ben Lunt
[1048327] Russian Keymap by Dmitry Soshnikov
  [851332] DESTDIR support for install_dlx by Ville Skyttä
  [970929] gdbstub support for MinGW tool chains by Muranaka Masaki
[1021740] Turn gdb stub into a runtime option by Charles Duffy
[1063329] RFB key press/release bug fix by Remko van der Vossen
[1079240] Wheel Mouse by Ben Lunt
[1087537] Fix for Win9x CD boot by lukewarm
[1083218] Start of wheel for USB #2 by Ben Lunt
[1098480] bochsrc: fixed floppya example by Alexander Schuch (ci-dev)
[1094407] configure.in: changed wxWindows to wxWidgets by Alexander Schuch
[1092058] serial.cc debug output cleanup by Ben Lunt
[1101165] APIC base address by Christian Neubert (flashburn)
[1093796] Fix for bug #1093786 (Nigel Horne)
[1082584] The start of Bus mice and USB mice by Ben Lunt
[1104695] msvc6 compatibility update (Royce Mitchell III)
[1059199] VGA text font bug fix (Anonymous)
[1108001] Null pointer on bx_atexit() (Ben Lunt)
[1112093] Fixed mouse cursor remain area drawing (Anonymous)
[1114826] Fix PCIBIOS (Destruction prevention of esi and edi)
[1095473] Reading from a CDRW (Fixed) by Ben Lunt
[1123895] x86-64 gdb/debugger fixes by Avi Kivity
[1145423] stosq simulation bugfix by Avi Kivity
[1151012] allow null ss on x86-64 by Avi Kivity
[1153327] ignore segment bases in x86-64 by Avi Kivity
[1153511] Fixed broken screen update (VBE)
[1152808] use 'install' instead of 'cp' during installation by Avi Kivity
[1159626] bugfix [1156776] keyboard scanmode fault by Rene Kootstra
  [843328] PATCH: support for Flat-style ToolBar with Win32GUI
[1198308] PATCH: fix incorrect moving mouse cursor when wheel used
[1200515] add TFTP server to vnet & ipv4 bug fix by easeway
[1203305] tuntap incompatibility by Jan Kratochvil

- SF patches partially applied
  [896733] Lazy flags, for more instructions, only 1 src op
[1005422] Improve mouse cursol Grub when 2 buttons-mouse use (WIN32)
           (TODO: improved japanese keyboard support)

- patches applied
  - patch.rombios.markevich (Start/Stop Wait Timer) (Kory Markevich)
  - patch.apic-zwane (APIC fixes) (Zwane Mwaikambo)
  - patch.v8086-exception.lightcone (LightCone)

- these S.F. bugs were closed
  #957660 >>PANIC<< APIC: R(curr timer count): delta < initial
#1192654 60 x 90 text not quite right...
#1189097 "configure --with-sdl --with-rfb" doesn't compile
#1188980 Crash on XP when break into debugger
#1186693 Improving quality of ./configure --help
#1185245 Errors Making Bochs with Mingw32
#1185289 PSE is not enabled by default on Pentium
#1170620 info cpu scrolls away, is too long
#1157998 ips shown even when waiting for input
  #663108 APIC Timer Bug
  #831750 bochs unlike real PC in paging
#1182698 PAE support doesn't work
  #954400 debugger causes segfaults when gcc 3.4.0 is used
#1171312 Possible SMP problem with ICACHE pageWriteStamp
#1179964 PANIC: RIP>CS.limit when jumping to longmode
#1171067 configure fails to add -lpthread
#1171065 Term UI needs -lncurses
#1171061 SDL GUI startup failure
#1022056 win32 error build debug version..c2146
  #957190 error while attempting to compile sb16.cc
  #804797 Debugger: visualization problem (jmp)
  #675523 2.0.1 doesn't run on W2K?
#1167358 When using 5430PCI in DR-DOS Bochs would panic with a PUSHAD
#1164654 Bochs VBE bios causing exception 0B in Windows 95 (SVGA bios)
#1162983 conflicts which configure could detect
#1164536 Windows 95 B crashes during install
  #526978 cygwin: in an rxvt, stdout is flaky
  #542303 >>PANIC<< call_protected: CS selector null
  #859457 BRICKS game doesn't work
#1159639 text modes on address A0000-BFFFF are not handled properly
#1164225 define BX_SUPPORT_X86_64 0
#1163720 ROL bug
#1156776 keyboard scanmode fault
#1162042 Duke Nukem 3D: >>PANIC<< iret: VM set on stack, CPL!=0
#1161945 ctrl_xfer32 compile/make error
#1157124 Bochs doesn't run with large amounts of memory in bochsrc
#1154266 weird INT handling in V86 mode
#1157051 default Bochs CVS doesn't work-out-of-the-box
  #923954 enter() with level > 0, >>PANIC<< iret: return CS selector
#1098476 Privilege Problem after SYSEXIT
#1121734 Bochs crashes when shutting down Win95
#1099294 VESA for Win98 bogus
#1112836 PGE-Bit crashes Bochs
  #947586 The specification difference in x86-64 emulation
#1117145 Push reset Button, APIC0 Error occur
#1123043 fpu stack pointer changed *despite* fault occured (e.g. #pf)
#1122066 PANIC: iret: IP > descriptor limit when installing os/2 warp
  #809574 rm -f segfaults
  #593952 SuSE rm segfaults
  #929783 floppy not recogniced since 2.1
#1099298 SB16 for Win98 Bogus
#1079483 Reading from a CDRW
  #549793 flaw in interrupt gate handling(exception.cc)
  #692055 SMP Error
  #805479 Booting from disk causes illegal instruction warnings
  #909677 pc-speaker doesn't work
  #831751 behaviour unrealistic
  #661213 CR4.TSD is broken
  #685508 PANIC: prefetch: RIP > CS.limit
#1037923 Non-executable page support missed (NX bit, x86-64)
#1106530 wrong disassemble result
#1105208 drive order for boot gets saved wrong
  #661060 Problem with Win98SE
  #837377 Norton Ghost don't boot
  #876689 Unknown register 0x17 [CPU] / WIN98SE
  #947282 Bochs segfault
  #963317 Persistent Win98SE 
#1101168 APIC base address change
  #680737 panic when installing winme
#1097187 Install FC3 on bochs-win failed
  #875461 vgabios-lgpl should be default
  #594797 Bochs segfaults
  #602994 bochs breaks boot kernel
  #571539 FreeBSD Install from CD Fails
  #774257 Device doesn't work under W98
  #759228 Installing Suse 8.2 in Bochs on WinME
  #792561 cant boot freebsd 5.1 from cdrom
  #804004 Live cd will halt on boot..
  #956173 FreeBSD won't boot iso install images in Bochs v2.1 or 2.2.
  #864401 >>PANIC<< jmp_ev: IP out of CS limits!
  #853831 Error on int 15h
#1094150 DR-DOS 7.03: panics when using multitasker
  #655592 win98 hardwaredetection
#1093786 Solaris 9 installation CD fails
  #959585 USB UHCI IO-Device
  #963314 Redhat Fedora Installer Kernel Panic and Crash
#1086920 Bochs (cvs) doesn't compile on FreeBSD 5
  #879050 Bochs reports enabled APIC without support
#1071199 dBaseII cause prefetch: RIP > CS limit
#1070812 typecast error while compiling wx.cc
#1068786 FSINCOS Cos value wrong at 90 degrees
  #675248 Panic: EIP > limit on win98 install
  #829793 [CPU ] prefetch: RIP > CS.limit
#1034059 >>PANIC<< prefetch: running in bogus memory
#1067813 pbm fpu_proto.h:144 ebuild gentoo bochs 2.1.1
  #922034 bios not aliased at 0xFFFFF000, registers wrong after reset
  #912666 Configure fails on Yellow Dog Linux 3.0.1
  #922038 Unexisting memory should read back as 0xFFFFFFFF
#1019723 HD image
#1057814 Shadow RAM not aligned
#1057240 Invalid IRET32 implementation
  #809682 >> PANIC << : prefetch: RIP > CS.limit
  #618680 memory referencing problems
  #724262 A few things (Windows 2.03, Wolfenstein)
  #985375 Crash Mandrake 7.1
  #913418 compiler errors with --enable-external-debugger option
  #708847 CR8 access should not panic X86-64
#1039499 Compile error pcipnic.cc (cygwin)
  #978024 compile against wxGTK-2.5.2 fails
  #639073 MacOSX: Networking not implemented
  #639074 MacOSX: Soundblaster not implemented
  #963264 Latest CVS --enable-pcidev fails to configue on YDL Linux