This file documents changes for QEMU releases 0.12 and earlier.
For changelog information for later releases, see
http://wiki.qemu.org/ChangeLog or look at the git history for
more detailed information.


version 0.12.0:

  - Update to SeaBIOS 0.5.0
  - e1000: fix device link status in Linux (Anthony Liguori)
  - monitor: fix QMP for balloon command (Luiz Capitulino)
  - QMP: Return an empty dict by default (Luiz Capitulino)
  - QMP: Only handle converted commands (Luiz Capitulino)
  - pci: support PCI based option rom loading (Gerd Hoffman/Anthony Liguori)
  - Fix backcompat for hotplug of SCSI controllers (Daniel P. Berrange)
  - fdc: fix migration from 0.11 (Juan Quintela)
  - vmware-vga: fix segv on cursor resize. (Dave Airlie)
  - vmware-vga: various fixes (Dave Airlie/Anthony Liguori)
  - qdev: improve property error reporting. (Gerd Hoffmann)
  - fix vga names in default_list (Gerd Hoffmann)
  - usb-host: check mon before using it. (Gerd Hoffmann)
  - usb-net: use qdev for -usbdevice (Gerd Hoffmann)
  - monitor: Catch printing to non-existent monitor (Luiz Capitulino)
  - Avoid permanently disabled QEMU monitor when UNIX migration fails (Daniel P. Berrange)
  - Fix loading of ELF multiboot kernels (Kevin Wolf)
  - qemu-io: Fix memory leak (Kevin Wolf)
  - Fix thinko in linuxboot.S (Paolo Bonzini)
  - target-i386: Fix evaluation of DR7 register (Jan Kiszka)
  - vnc: hextile: do not generate ForegroundSpecified and SubrectsColoured tiles (Anthony Liguori)
  - S390: Bail out without KVM (Alexander Graf)
  - S390: Don't tell guest we're updating config space (Alexander Graf)
  - target-s390: Fail on unknown instructions (Alexander Graf)
  - osdep: Fix runtime failure on older Linux kernels (Andre Przywara)
  - Fix a make -j race (Juergen Lock)
  - target-alpha: Fix generic ctz64. (Richard Henderson)
  - s390: Fix buggy assignment (Stefan Weil)
  - target-mips: fix user-mode emulation startup (Nathan Froyd)
  - target-i386: Update CPUID feature set for TCG (Andre Przywara)
  - s390: fix build on 32 bit host (Michael S. Tsirkin)
	
version 0.12.0-rc2:

  - v2: properly save kvm system time msr registers (Glauber Costa)
  - convert more monitor commands to qmp (Luiz Capitulino)
  - vnc: fix capslock tracking logic. (Gerd Hoffmann)
  - QemuOpts: allow larger option values. (Gerd Hoffmann)
  - scsi: fix drive hotplug. (Gerd Hoffmann)
  - pci: don't hw_error() when no slot is available. (Gerd Hoffmann)
  - pci: don't abort() when trying to hotplug with acpi off. (Gerd Hoffmann)
  - allow default devices to be implemented in config file (Gerd Hoffman)
  - vc: colorize chardev title line with blue background. (Gerd Hoffmann)
  - chardev: make chardevs specified in config file work. (Gerd Hoffmann)
  - qdev: also match bus name for global properties (Gerd Hoffmann)
  - qdev: add command line option to set global defaults for properties. (Gerd Hoffmann)
  - kvm: x86: Save/restore exception_index (Jan Kiszka)
  - qdev: Replace device names containing whitespace (Markus Armbruster)
  - fix rtc-td-hack on host without high-res timers (Gleb Natapov)
  - virtio: verify features on load (Michael S. Tsirkin)
  - vmware_vga: add rom file so that it boots. (Dave Airlie)
  - Do not abort on qemu_malloc(0) in production builds (Anthony Liguori)
  - Fix ARM userspace strex implementation. (Paul Brook)
  - qemu: delete rule target on error (Michael S. Tsirkin)
  - QMP: add human-readable description to error response (Markus Armbruster)
  - convert more monitor commands to QError (Markus Armbruster)
  - monitor: Fix double-prompt after "change vnc passwd BLA" (Markus Armbruster)
  - monitor: do_cont(): Don't ask for passwords (Luiz Capitulino)
  - monitor: Introduce 'block_passwd' command (Luiz Capitulino)
  - pci: interrupt disable bit support (Michael S. Tsirkin)
  - pci: interrupt status bit implementation (Michael S. Tsirkin)
  - pci: prepare irq code for interrupt state (Michael S. Tsirkin)
  - msix: function mask support (Michael S. Tsirkin)
  - msix: macro rename for function mask support (Michael S. Tsirkin)
  - cpuid: Fix multicore setup on Intel (Andre Przywara)
  - kvm: x86: Fix initial kvm_has_msr_star (Jan Kiszka)
  - Update OpenBIOS images to r640 (Aurelien Jarno)	

version 0.10.2:

  - fix savevm/loadvm (Anthony Liguori)
  - live migration: fix dirty tracking windows (Glauber Costa)
  - live migration: improve error propagation (Glauber Costa)
  - qcow2: fix image creation for > ~2TB images (Chris Wright)
  - hotplug: fix error handling for if= parameter (Eduardo Habkost)
  - qcow2: fix data corruption (Nolan Leake)
  - virtio: fix guest oops with 2.6.25 kernels (Rusty Russell)
  - SH4: add support for -kernel (Takashi Yoshii, Aurelien Jarno)
  - hotplug: fix closing of char devices (Jan Kiszka)
  - hotplug: remove incorrect check for device name (Eduardo Habkost)
  - enable -k on win32 (Herve Poussineau)
  - configure: use LANG=C for grep (Andreas Faerber)
  - fix VGA regression (malc)
	
version 0.10.1:

  - virtio-net: check right return size on sg list (Alex Williamson)
  - Make qemu_announce_self handle holes (live migration after hotplug)
    (Marcelo Tosatti)
  - Revert r6804-r6808 (qcow2 allocation info).  This series of changes added
    a high cost to startup for large qcow2 images (Anthony Liguori)
  - qemu-img: fix help message (Aurelien Jarno)
  - Fix build for non-default installs of SDL (Anthony Liguori)
  - Fix race condition in env->interrupt_request.  When using TCG and a dynticks
    host timer, this condition could cause TCG to get stuck in an infinite
    loop (Aurelien Jarno)
  - Fix reading encrypted hard disk passwords during early startup (Jan Kiszka)
  - Fix encrypted disk reporting in 'info block' (Jan Kiszka)
  - Fix console size with tiny displays (MusicPal) (Jan Kiszka)
  - Improve error handling in bdrv_open2 (Jan Kiszka)
  - Avoid leaking data in mux'ed character devices (Jan Kiszka)
  - Fix initial character device reset (no banner in monitor) (Jan Kiszka)
  - Fix cpuid KVM crash on i386 host (Lubomir Rintel)
  - Fix SLES10sp2 installation by adding ISTAT1 register to LSI SCSI emulation
    (Ryan Harper)

version 0.10.0:

  - TCG support (No longer requires GCC 3.x)
  - Kernel Virtual Machine acceleration support
  - BSD userspace emulation
  - Bluetooth emulation and host passthrough support
  - GDB XML register description support
  - Intel e1000 emulation
  - HPET emulation
  - VirtIO paravirtual device support
  - Marvell 88w8618 / MusicPal emulation
  - Nokia N-series tablet emulation / OMAP2 processor emulation
  - PCI hotplug support
  - Live migration and new save/restore formats
  - Curses display support
  - qemu-nbd utility to mount supported block formats
  - Altivec support in PPC emulation and new firmware (OpenBIOS)
  - Multiple VNC clients are now supported
  - TLS encryption is now supported in VNC
  - MIPS Magnum R4000 machine (Hervé Poussineau)
  - Braille support (Samuel Thibault)
  - Freecom MusicPal system emulation (Jan Kiszka)
  - OMAP242x and Nokia N800, N810 machines (Andrzej Zaborowski)
  - EsounD audio driver (Frederick Reeve)
  - Gravis Ultrasound GF1 sound card (Tibor "TS" Schütz)
  - Many, many, bug fixes and new features

version 0.9.1:

  - TFTP booting from host directory (Anthony Liguori, Erwan Velu)
  - Tap device emulation for Solaris (Sittichai Palanisong)
  - Monitor multiplexing to several I/O channels (Jason Wessel)
  - ds1225y nvram support (Herve Poussineau)
  - CPU model selection support (J. Mayer, Paul Brook, Herve Poussineau)
  - Several Sparc fixes (Aurelien Jarno, Blue Swirl, Robert Reif)
  - MIPS 64-bit FPU support (Thiemo Seufer)
  - Xscale PDA emulation (Andrzej Zaborowski)
  - ColdFire system emulation (Paul Brook)
  - Improved SH4 support (Magnus Damm)
  - MIPS64 support (Aurelien Jarno, Thiemo Seufer)
  - Preliminary Alpha guest support (J. Mayer)
  - Read-only support for Parallels disk images (Alex Beregszaszi)
  - SVM (x86 virtualization) support (Alexander Graf)
  - CRIS emulation (Edgar E. Iglesias)
  - SPARC32PLUS execution support (Blue Swirl)
  - MIPS mipssim pseudo machine (Thiemo Seufer)
  - Strace for Linux userland emulation (Stuart Anderson, Thayne Harbaugh)
  - OMAP310 MPU emulation plus Palm T|E machine (Andrzej Zaborowski)
  - ARM v6, v7, NEON SIMD and SMP emulation (Paul Brook/CodeSourcery)
  - Gumstix boards: connex and verdex emulation (Thorsten Zitterell)
  - Intel mainstone II board emulation (Armin Kuster)
  - VMware SVGA II graphics card support (Andrzej Zaborowski)

version 0.9.0:

  - Support for relative paths in backing files for disk images
  - Async file I/O API
  - New qcow2 disk image format
  - Support of multiple VM snapshots
  - Linux: specific host CDROM and floppy support
  - SMM support
  - Moved PCI init, MP table init and ACPI table init to Bochs BIOS
  - Support for MIPS32 Release 2 instruction set (Thiemo Seufer)
  - MIPS Malta system emulation (Aurelien Jarno, Stefan Weil)
  - Darwin userspace emulation (Pierre d'Herbemont)
  - m68k user support (Paul Brook)
  - several x86 and x86_64 emulation fixes
  - Mouse relative offset VNC extension (Anthony Liguori)
  - PXE boot support (Anthony Liguori)
  - '-daemonize' option (Anthony Liguori)

version 0.8.2:

  - ACPI support
  - PC VGA BIOS fixes
  - switch to OpenBios for SPARC targets (Blue Swirl)
  - VNC server fixes
  - MIPS FPU support (Marius Groeger)
  - Solaris/SPARC host support (Juergen Keil)
  - PPC breakpoints and single stepping (Jason Wessel)
  - USB updates (Paul Brook)
  - UDP/TCP/telnet character devices (Jason Wessel)
  - Windows sparse file support (Frediano Ziglio)
  - RTL8139 NIC TCP segmentation offloading (Igor Kovalenko)
  - PCNET NIC support (Antony T Curtis)
  - Support for variable frequency host CPUs
  - Workaround for win32 SMP hosts
  - Support for AMD Flash memories (Jocelyn Mayer)
  - Audio capture to WAV files support (malc)

version 0.8.1:

  - USB tablet support (Brad Campbell, Anthony Liguori)
  - win32 host serial support (Kazu)
  - PC speaker support (Joachim Henke)
  - IDE LBA48 support (Jens Axboe)
  - SSE3 support
  - Solaris port (Juergen Keil)
  - Preliminary SH4 target (Samuel Tardieu)
  - VNC server (Anthony Liguori)
  - slirp fixes (Ed Swierk et al.)
  - USB fixes
  - ARM Versatile Platform Baseboard emulation (Paul Brook)

version 0.8.0:

  - ARM system emulation: Arm Integrator/CP board with an arm1026ej-s
    cpu (Paul Brook)
  - SMP support
  - Mac OS X cocoa improvements (Mike Kronenberg)
  - Mac OS X CoreAudio driver (Mike Kronenberg)
  - DirectSound driver (malc)
  - ALSA audio driver (malc)
  - new audio options: '-soundhw' and '-audio-help' (malc)
  - ES1370 PCI audio device (malc)
  - Initial USB support
  - Linux host serial port access
  - Linux host low level parallel port access
  - New network emulation code supporting VLANs.
  - MIPS and MIPSel User Linux emulation
  - MIPS fixes to boot Linux (Daniel Jacobowitz)
  - NX bit support
  - Initial SPARC SMP support (Blue Swirl)
  - Major overhaul of the virtual FAT driver for read/write support
    (Johannes Schindelin)

version 0.7.2:

  - x86_64 fixes (Win2000 and Linux 2.6 boot in 32 bit)
  - merge self modifying code handling in dirty ram page mecanism.
  - MIPS fixes (Ralf Baechle)
  - better user net performances

version 0.7.1:

  - read-only Virtual FAT support (Johannes Schindelin)
  - Windows 2000 install disk full hack (original idea from Vladimir
    N. Oleynik)
  - VMDK disk image creation (Filip Navara)
  - SPARC64 progress (Blue Swirl)
  - initial MIPS support (Jocelyn mayer)
  - MIPS improvements (Ralf Baechle)
  - 64 bit fixes in user networking (initial patch by Gwenole Beauchesne)
  - IOAPIC support (Filip Navara)

version 0.7.0:

  - better BIOS translation and HDD geometry auto-detection
  - user mode networking bug fix
  - undocumented FPU ops support
  - Cirrus VGA: support for 1280x1024x[8,15,16] modes
  - 'pidfile' option
  - .dmg disk image format support (Johannes Schindelin)
  - keymaps support (initial patch by Johannes Schindelin)
  - big endian ARM support (Lennert Buytenhek)
  - added generic 64 bit target support
  - x86_64 target support
  - initial APIC support
  - MMX/SSE/SSE2/PNI support
  - PC parallel port support (Mark Jonckheere)
  - initial SPARC64 support (Blue Swirl)
  - SPARC target boots Linux (Blue Swirl)
  - armv5te user mode support (Paul Brook)
  - ARM VFP support (Paul Brook)
  - ARM "Angel" semihosting syscalls (Paul Brook)
  - user mode gdb stub support (Paul Brook)
  - Samba 3 support
  - initial Cocoa support (Pierre d'Herbemont)
  - generic FPU emulation code
  - Virtual PC read-only disk image support (Alex Beregszaszi)

version 0.6.1:

  - Mac OS X port (Pierre d'Herbemont)
  - Virtual console support
  - Better monitor line edition
  - New block device layer
  - New 'qcow' growable disk image support with AES encryption and
    transparent decompression
  - VMware 3 and 4 read-only disk image support (untested)
  - Support for up to 4 serial ports
  - TFTP server support (Magnus Damm)
  - Port redirection support in user mode networking
  - Support for not executable data sections
  - Compressed loop disk image support (Johannes Schindelin)
  - Level triggered IRQ fix (aka NE2000 PCI performance fix) (Steve
    Wormley)
  - Fixed Fedora Core 2 problems (now you can run qemu without any
    LD_ASSUME_KERNEL tricks on FC2)
  - DHCP fix for Windows (accept DHCPREQUEST alone)
  - SPARC system emulation (Blue Swirl)
  - Automatic Samba configuration for host file access from Windows.
  - '-loadvm' and '-full-screen' options
  - ne2000 savevm support (Johannes Schindelin)
  - Ctrl-Alt is now the default grab key. Ctrl-Alt-[0-9] switches to
    the virtual consoles.
  - BIOS floppy fix for NT4 (Mike Nordell, Derek Fawcus, Volker Ruppert)
  - Floppy fixes for NT4 and NT5 (Mike Nordell)
  - NT4 IDE fixes (Ben Pfaf, Mike Nordell)
  - SDL Audio support and SB16 fixes (malc)
  - ENTER instruction bug fix (initial patch by Stefan Kisdaroczi)
  - VGA font change fix
  - VGA read-only CRTC register fix

version 0.6.0:

  - minimalist FPU exception support (NetBSD FPU probe fix)
  - cr0.ET fix (Win95 boot)
  - *BSD port (Markus Niemisto)
  - I/O access fix (signaled by Mark Jonckheere)
  - IDE drives serial number fix (Mike Nordell)
  - int13 CDROM BIOS fix (aka Solaris x86 install CD fix)
  - int15, ah=86 BIOS fix (aka Solaris x86 hardware probe hang up fix)
  - BSR/BSF "undefined behaviour" fix
  - vmdk2raw: convert VMware disk images to raw images
  - PCI support
  - NE2K PCI support
  - dummy VGA PCI support
  - VGA font selection fix (Daniel Serpell)
  - PIC reset fix (Hidemi KAWAI)
  - PIC spurious irq support (aka Solaris install bug)
  - added '-localtime' option
  - Cirrus CL-GD54xx VGA support (initial patch by Makoto Suzuki (suzu))
  - APM and system shutdown support
  - Fixed system reset
  - Support for other PC BIOSes
  - Initial PowerMac hardware emulation
  - PowerMac/PREP OpenFirmware compatible BIOS (Jocelyn Mayer)
  - initial IDE BMDMA support (needed for Darwin x86)
  - Set the default memory size for PC emulation to 128 MB

version 0.5.5:

  - SDL full screen support (initial patch by malc)
  - VGA support on PowerPC PREP
  - VBE fixes (Matthew Mastracci)
  - PIT fixes (aka Win98 hardware probe and "VGA slowness" bug)
  - IDE master only fixes (aka Win98 CD-ROM probe bug)
  - ARM load/store half word fix (Ulrich Hecht)
  - FDC fixes for Win98

version 0.5.4:

  - qemu-fast fixes
  - BIOS area protection fix (aka EMM386.EXE fix) (Mike Nordell)
  - keyboard/mouse fix (Mike Nordell)
  - IDE fixes (Linux did not recognized slave drivers)
  - VM86 EIP masking fix (aka NT5 install fix) (Mike Nordell)
  - QEMU can now boot a PowerPC Linux kernel (Jocelyn Mayer)
  - User mode network stack
  - imul imm8 fix + 0x82 opcode support (Hidemi KAWAI)
  - precise self modifying code (aka BeOS install bug)

version 0.5.3:

  - added Bochs VESA VBE support
  - VGA memory map mode 3 access fix (OS/2 install fix)
  - IDE fixes (Jens Axboe)
  - CPU interrupt fixes
  - fixed various TLB invalidation cases (NT install)
  - fixed cr0.WP semantics (XP install)
  - direct chaining support for SPARC and PowerPC (faster)
  - ARM NWFPE support (initial patch by Ulrich Hecht)
  - added specific x86 to x86 translator (close to native performance
    in qemu-i386 and qemu-fast)
  - shm syscalls support (Paul McKerras)
  - added accurate CR0.MP/ME/TS emulation
  - fixed DMA memory write access (Win95 boot floppy fix)
  - graphical x86 linux loader
  - command line monitor
  - generic removable device support
  - support of CD-ROM change
  - multiple network interface support
  - initial x86-64 host support (Gwenole Beauchesne)
  - lret to outer privilege fix (OS/2 install fix)
  - task switch fixes (SkyOS boot)
  - VM save/restore commands
  - new timer API
  - more precise RTC emulation (periodic timers + time updates)
  - Win32 port (initial patch by Kazu)

version 0.5.2:

  - improved soft MMU speed (assembly functions and specializing)
  - improved multitasking speed by avoiding flushing TBs when
    switching tasks
  - improved qemu-fast speed
  - improved self modifying code handling (big performance gain in
    softmmu mode).
  - fixed IO checking
  - fixed CD-ROM detection (win98 install CD)
  - fixed addseg real mode bug (GRUB boot fix)
  - added ROM memory support (win98 boot)
  - fixed 'call Ev' in case of paging exception
  - updated the script 'qemu-binfmt-conf.sh' to use QEMU automagically
    when launching executables for the supported target CPUs.
  - PowerPC system emulation update (Jocelyn Mayer)
  - PC floppy emulation and DMA fixes (Jocelyn Mayer)
  - polled mode for PIC (Jocelyn Mayer)
  - fixed PTE dirty bit handling
  - fixed xadd same reg bug
  - fixed cmpxchg exception safeness
  - access to virtual memory in gdb stub
  - task gate and NT flag fixes
  - eflags optimisation fix for string operations

version 0.5.1:

  - float access fixes when using soft mmu
  - PC emulation support on PowerPC
  - A20 support
  - IDE CD-ROM emulation
  - ARM fixes (Ulrich Hecht)
  - SB16 emulation (malc)
  - IRET and INT fixes in VM86 mode with IOPL=3
  - Port I/Os use TSS io map
  - Full task switching/task gate support
  - added verr, verw, arpl, fcmovxx
  - PowerPC target support (Jocelyn Mayer)
  - Major SPARC target fixes (dynamically linked programs begin to work)

version 0.5.0:

  - full hardware level VGA emulation
  - graphical display with SDL
  - added PS/2 mouse and keyboard emulation
  - popw (%esp) fix
  - mov to/from segment data width fix
  - added real mode support
  - added Bochs BIOS and LGPL'ed VGA BIOS loader in qemu
  - m68k host port (Richard Zidlicky)
  - partial soft MMU support for memory mapped I/Os
  - multi-target build
  - fixed: no error code in hardware interrupts
  - fixed: pop ss, mov ss, x and sti disable hardware irqs for the next insn
  - correct single stepping through string operations
  - preliminary SPARC target support (Thomas M. Ogrisegg)
  - tun-fd option (Rusty Russell)
  - automatic IDE geometry detection
  - renamed 'vl' to qemu[-fast] and user qemu to qemu-{cpu}.
  - added man page
  - added full soft mmu mode to launch unpatched OSes.

version 0.4.3:

  - x86 exception fix in case of nop instruction.
  - gcc 3.2.2 bug workaround (RedHat 9 fix)
  - sparc and Alpha host fixes
  - many ARM target fixes: 'ls' and 'bash' can be launched.

version 0.4.2:

 - many exception handling fixes (can compile a Linux kernel inside vl)
 - IDE emulation support
 - initial GDB stub support
 - deferred update support for disk images (Rusty Russell)
 - accept User Mode Linux Copy On Write disk images
 - SMP kernels can at least be booted

version 0.4.1:

 - more accurate timer support in vl.
 - more reliable NE2000 probe in vl.
 - added 2.5.66 kernel in vl-test.
 - added VLTMPDIR environment variable in vl.

version 0.4:

 - initial support for ring 0 x86 processor emulation
 - fixed signal handling for correct dosemu DPMI emulation
 - fast x86 MMU emulation with mmap()
 - fixed popl (%esp) case
 - Linux kernel can be executed by QEMU with the 'vl' command.

version 0.3:

 - initial support for ARM emulation
 - added fnsave, frstor, fnstenv, fldenv FPU instructions
 - added FPU register save in signal emulation
 - initial ARM port
 - Sparc and Alpha ports work on the regression test
 - generic ioctl number conversion
 - fixed ioctl type conversion

version 0.2:

 - PowerPC disassembly and ELF symbols output (Rusty Russell)
 - flock support (Rusty Russell)
 - ugetrlimit support (Rusty Russell)
 - fstat64 fix (Rusty Russell)
 - initial Alpha port (Falk Hueffner)
 - initial IA64 port (Matt Wilson)
 - initial Sparc and Sparc64 port (David S. Miller)
 - added HLT instruction
 - LRET instruction fix.
 - added GPF generation for I/Os.
 - added INT3 and TF flag support.
 - SHL instruction C flag fix.
 - mmap emulation for host page size > 4KB
 - self-modifying code support
 - better VM86 support (dosemu works on non trivial programs)
 - precise exception support (EIP is computed correctly in most cases)
 - more precise LDT/GDT/IDT emulation
 - faster segment load in vm86 mode
 - direct chaining of basic blocks (faster emulation)

version 0.1.6:

 - automatic library search system. QEMU can now work with unpatched
   ELF dynamic loader and libc (Rusty Russell).
 - ISO C warning fixes (Alistair Strachan)
 - first self-virtualizable version (works only as long as the
   translation cache is not flushed)
 - RH9 fixes

version 0.1.5:

 - ppc64 support + personality() patch (Rusty Russell)
 - first Alpha CPU patches (Falk Hueffner)
 - removed bfd.h dependency
 - fixed shrd, shld, idivl and divl on PowerPC.
 - fixed buggy glibc PowerPC rint() function (test-i386 passes now on PowerPC).

version 0.1.4:

 - more accurate VM86 emulation (can launch small DOS 16 bit
   executables in wine).
 - fixed push/pop fs/gs
 - added iret instruction.
 - added times() syscall and SIOCATMARK ioctl.

version 0.1.3:

 - S390 support (Ulrich Weigand)
 - glibc 2.3.x compile fix (Ulrich Weigand)
 - socketcall endian fix (Ulrich Weigand)
 - struct sockaddr endian fix (Ulrich Weigand)
 - sendmsg/recvmsg endian fix (Ulrich Weigand)
 - execve endian fix (Ulrich Weigand)
 - fdset endian fix (Ulrich Weigand)
 - partial setsockopt syscall support (Ulrich Weigand)
 - more accurate pushf/popf emulation
 - first partial vm86() syscall support (can be used with runcom example).
 - added bound, cmpxchg8b, cpuid instructions
 - added 16 bit addressing support/override for string operations
 - poll() fix

version 0.1.2:

 - compile fixes
 - xlat instruction
 - xchg instruction memory lock
 - added simple vm86 example (not working with QEMU yet). The 54 byte
   DOS executable 'pi_10.com' program was released by Bertram
   Felgenhauer (more information at http://www.boo.net/~jasonp/pipage.html).

version 0.1.1:

 - glibc 2.2 compilation fixes
 - added -s and -L options
 - binary distribution of x86 glibc and wine
 - big endian fixes in ELF loader and getdents.

version 0.1:

 - initial public release.
