mirror of https://github.com/xqemu/xqemu.git
update
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@66 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
fb3e5849bb
commit
fd429f2f6c
11
Makefile
11
Makefile
|
@ -19,6 +19,10 @@ ifeq ($(ARCH),ppc)
|
||||||
OP_CFLAGS=$(CFLAGS)
|
OP_CFLAGS=$(CFLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH),s390)
|
||||||
|
OP_CFLAGS=$(CFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(GCC_MAJOR),3)
|
ifeq ($(GCC_MAJOR),3)
|
||||||
# very important to generate a return at the end of every operation
|
# very important to generate a return at the end of every operation
|
||||||
OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
|
OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
|
||||||
|
@ -94,19 +98,20 @@ qemu-doc.html: qemu-doc.texi
|
||||||
texi2html -monolithic -number $<
|
texi2html -monolithic -number $<
|
||||||
|
|
||||||
FILES= \
|
FILES= \
|
||||||
README COPYING COPYING.LIB TODO Changelog VERSION \
|
README README.distrib COPYING COPYING.LIB TODO Changelog VERSION \
|
||||||
dyngen.c ioctls.h ops_template.h syscall_types.h\
|
dyngen.c ioctls.h ops_template.h op_string.h syscall_types.h\
|
||||||
Makefile elf.h linux_bin.h segment.h thunk.c\
|
Makefile elf.h linux_bin.h segment.h thunk.c\
|
||||||
elfload.c main.c signal.c thunk.h\
|
elfload.c main.c signal.c thunk.h\
|
||||||
cpu-i386.h qemu.h op-i386.c opc-i386.h syscall-i386.h translate-i386.c\
|
cpu-i386.h qemu.h op-i386.c opc-i386.h syscall-i386.h translate-i386.c\
|
||||||
dis-asm.h gen-i386.h op-i386.h syscall.c\
|
dis-asm.h gen-i386.h op-i386.h syscall.c\
|
||||||
dis-buf.c i386-dis.c opreg_template.h syscall_defs.h\
|
dis-buf.c i386-dis.c opreg_template.h syscall_defs.h\
|
||||||
i386.ld ppc.ld exec-i386.h exec-i386.c configure \
|
i386.ld ppc.ld s390.ld exec-i386.h exec-i386.c configure \
|
||||||
tests/Makefile\
|
tests/Makefile\
|
||||||
tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\
|
tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\
|
||||||
tests/test-i386-muldiv.h tests/test-i386-code16.S\
|
tests/test-i386-muldiv.h tests/test-i386-code16.S\
|
||||||
tests/hello.c tests/hello tests/sha1.c \
|
tests/hello.c tests/hello tests/sha1.c \
|
||||||
tests/testsig.c tests/testclone.c tests/testthread.c \
|
tests/testsig.c tests/testclone.c tests/testthread.c \
|
||||||
|
tests/runcom.c tests/pi_10.com \
|
||||||
qemu-doc.texi qemu-doc.html
|
qemu-doc.texi qemu-doc.html
|
||||||
|
|
||||||
FILE=qemu-$(VERSION)
|
FILE=qemu-$(VERSION)
|
||||||
|
|
|
@ -12,8 +12,9 @@
|
||||||
QEMU is an x86 processor emulator. Its purpose is to run x86 Linux
|
QEMU is an x86 processor emulator. Its purpose is to run x86 Linux
|
||||||
processes on non-x86 Linux architectures such as PowerPC or ARM. By
|
processes on non-x86 Linux architectures such as PowerPC or ARM. By
|
||||||
using dynamic translation it achieves a reasonnable speed while being
|
using dynamic translation it achieves a reasonnable speed while being
|
||||||
easy to port on new host CPUs. An obviously interesting x86 only process
|
easy to port on new host CPUs. Its main goal is to be able to launch the
|
||||||
is 'wine' (Windows emulation).
|
@code{Wine} Windows API emulator (@url{http://www.winehq.org}) on
|
||||||
|
non-x86 CPUs.
|
||||||
|
|
||||||
QEMU features:
|
QEMU features:
|
||||||
|
|
||||||
|
@ -21,12 +22,13 @@ QEMU features:
|
||||||
|
|
||||||
@item User space only x86 emulator.
|
@item User space only x86 emulator.
|
||||||
|
|
||||||
@item Currently ported on i386 and PowerPC.
|
@item Currently ported on i386, PowerPC and S390.
|
||||||
|
|
||||||
@item Using dynamic translation for reasonnable speed.
|
@item Using dynamic translation to native code for reasonnable speed.
|
||||||
|
|
||||||
@item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation.
|
@item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation.
|
||||||
User space LDT and GDT are emulated.
|
User space LDT and GDT are emulated. VM86 mode is also supported
|
||||||
|
(experimental).
|
||||||
|
|
||||||
@item Generic Linux system call converter, including most ioctls.
|
@item Generic Linux system call converter, including most ioctls.
|
||||||
|
|
||||||
|
@ -52,10 +54,6 @@ Current QEMU Limitations:
|
||||||
|
|
||||||
@item No support for self modifying code (yet). [Very few programs need that, a notable exception is QEMU itself !].
|
@item No support for self modifying code (yet). [Very few programs need that, a notable exception is QEMU itself !].
|
||||||
|
|
||||||
@item No VM86 mode (yet), althought the virtual
|
|
||||||
CPU has support for most of it. [VM86 support is useful to launch old 16
|
|
||||||
bit DOS programs with dosemu or wine].
|
|
||||||
|
|
||||||
@item No SSE/MMX support (yet).
|
@item No SSE/MMX support (yet).
|
||||||
|
|
||||||
@item No x86-64 support.
|
@item No x86-64 support.
|
||||||
|
@ -123,10 +121,10 @@ able to do:
|
||||||
qemu /usr/local/qemu-i386/bin/ls-i386
|
qemu /usr/local/qemu-i386/bin/ls-i386
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@item Download the binary x86 wine install
|
@item Download the binary x86 Wine install
|
||||||
(@file{qemu-i386-wine.tar.gz} on the QEMU web page).
|
(@file{qemu-i386-wine.tar.gz} on the QEMU web page).
|
||||||
|
|
||||||
@item Configure wine on your account. Look at the provided script
|
@item Configure Wine on your account. Look at the provided script
|
||||||
@file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
|
@file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
|
||||||
@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
|
@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
|
||||||
|
|
||||||
|
@ -177,6 +175,13 @@ code, in particular the ELF file loader). EM86 was limited to an alpha
|
||||||
host and used a proprietary and slow interpreter (the interpreter part
|
host and used a proprietary and slow interpreter (the interpreter part
|
||||||
of the FX!32 Digital Win32 code translator [5]).
|
of the FX!32 Digital Win32 code translator [5]).
|
||||||
|
|
||||||
|
TWIN [6] is a Windows API emulator like Wine. It is less accurate than
|
||||||
|
Wine but includes a protected mode x86 interpreter to launch x86 Windows
|
||||||
|
executables. Such an approach as greater potential because most of the
|
||||||
|
Windows API is executed natively but it is far more difficult to develop
|
||||||
|
because all the data structures and function parameters exchanged
|
||||||
|
between the API and the x86 code must be converted.
|
||||||
|
|
||||||
@section Portable dynamic translation
|
@section Portable dynamic translation
|
||||||
|
|
||||||
QEMU is a dynamic translator. When it first encounters a piece of code,
|
QEMU is a dynamic translator. When it first encounters a piece of code,
|
||||||
|
@ -218,7 +223,7 @@ doing complicated register allocation.
|
||||||
Good CPU condition codes emulation (@code{EFLAGS} register on x86) is a
|
Good CPU condition codes emulation (@code{EFLAGS} register on x86) is a
|
||||||
critical point to get good performances. QEMU uses lazy condition code
|
critical point to get good performances. QEMU uses lazy condition code
|
||||||
evaluation: instead of computing the condition codes after each x86
|
evaluation: instead of computing the condition codes after each x86
|
||||||
instruction, it store justs one operand (called @code{CC_CRC}), the
|
instruction, it just stores one operand (called @code{CC_SRC}), the
|
||||||
result (called @code{CC_DST}) and the type of operation (called
|
result (called @code{CC_DST}) and the type of operation (called
|
||||||
@code{CC_OP}).
|
@code{CC_OP}).
|
||||||
|
|
||||||
|
@ -231,7 +236,7 @@ generated simple instructions (see
|
||||||
the condition codes are not needed by the next instructions, no
|
the condition codes are not needed by the next instructions, no
|
||||||
condition codes are computed at all.
|
condition codes are computed at all.
|
||||||
|
|
||||||
@section Translation CPU state optimisations
|
@section CPU state optimisations
|
||||||
|
|
||||||
The x86 CPU has many internal states which change the way it evaluates
|
The x86 CPU has many internal states which change the way it evaluates
|
||||||
instructions. In order to achieve a good speed, the translation phase
|
instructions. In order to achieve a good speed, the translation phase
|
||||||
|
@ -323,6 +328,10 @@ x86 emulator on Alpha-Linux.
|
||||||
DIGITAL FX!32: Running 32-Bit x86 Applications on Alpha NT, by Anton
|
DIGITAL FX!32: Running 32-Bit x86 Applications on Alpha NT, by Anton
|
||||||
Chernoff and Ray Hookway.
|
Chernoff and Ray Hookway.
|
||||||
|
|
||||||
|
@item [6]
|
||||||
|
@url{http://www.willows.com/}, Windows API library emulation from
|
||||||
|
Willows Software.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@chapter Regression Tests
|
@chapter Regression Tests
|
||||||
|
@ -365,3 +374,9 @@ It is a simple benchmark. Care must be taken to interpret the results
|
||||||
because it mostly tests the ability of the virtual CPU to optimize the
|
because it mostly tests the ability of the virtual CPU to optimize the
|
||||||
@code{rol} x86 instruction and the condition code computations.
|
@code{rol} x86 instruction and the condition code computations.
|
||||||
|
|
||||||
|
@section @file{runcom}
|
||||||
|
|
||||||
|
A very simple MSDOS emulator to test the Linux vm86() system call
|
||||||
|
emulation. The excellent 54 byte @file{pi_10.com} PI number calculator
|
||||||
|
can be launched with it. @file{pi_10.com} was written by Bertram
|
||||||
|
Felgenhauer (more information at @url{http://www.boo.net/~jasonp/pipage.html}).
|
||||||
|
|
Loading…
Reference in New Issue