Commit 322d0c6657ce6fe82eb042c045117fb3888c5c53
1 parent
2054396a
update
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@250 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
58 additions
and
26 deletions
Changelog
| ... | ... | @@ -3,7 +3,7 @@ version 0.3: |
| 3 | 3 | - initial support for ARM emulation |
| 4 | 4 | - added fnsave, frstor, fnstenv, fldenv FPU instructions |
| 5 | 5 | - added FPU register save in signal emulation |
| 6 | - - ARM port | |
| 6 | + - initial ARM port | |
| 7 | 7 | - Sparc and Alpha ports work on the regression test |
| 8 | 8 | - generic ioctl number conversion |
| 9 | 9 | - fixed ioctl type conversion | ... | ... |
Makefile
| ... | ... | @@ -211,7 +211,7 @@ arm-dis.c \ |
| 211 | 211 | tests/Makefile \ |
| 212 | 212 | tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h \ |
| 213 | 213 | tests/test-i386-muldiv.h tests/test-i386-code16.S tests/test-i386-vm86.S \ |
| 214 | -tests/hello.c tests/hello \ | |
| 214 | +tests/hello-i386.c tests/hello-i386 \ | |
| 215 | 215 | tests/hello-arm.c tests/hello-arm \ |
| 216 | 216 | tests/sha1.c \ |
| 217 | 217 | tests/testsig.c tests/testclone.c tests/testthread.c \ | ... | ... |
qemu-doc.texi
| 1 | 1 | \input texinfo @c -*- texinfo -*- |
| 2 | 2 | |
| 3 | -@settitle QEMU x86 Emulator Reference Documentation | |
| 3 | +@settitle QEMU CPU Emulator Reference Documentation | |
| 4 | 4 | @titlepage |
| 5 | 5 | @sp 7 |
| 6 | -@center @titlefont{QEMU x86 Emulator Reference Documentation} | |
| 6 | +@center @titlefont{QEMU CPU Emulator Reference Documentation} | |
| 7 | 7 | @sp 3 |
| 8 | 8 | @end titlepage |
| 9 | 9 | |
| 10 | 10 | @chapter Introduction |
| 11 | 11 | |
| 12 | -QEMU is an x86 processor emulator. Its purpose is to run x86 Linux | |
| 13 | -processes on non-x86 Linux architectures such as PowerPC. By using | |
| 14 | -dynamic translation it achieves a reasonnable speed while being easy to | |
| 15 | -port on new host CPUs. Its main goal is to be able to launch the | |
| 16 | -@code{Wine} Windows API emulator (@url{http://www.winehq.org}) or | |
| 17 | -@code{DOSEMU} (@url{http://www.dosemu.org}) on non-x86 CPUs. | |
| 12 | +@section Features | |
| 18 | 13 | |
| 19 | -QEMU features: | |
| 14 | +QEMU is a FAST! processor emulator. Its purpose is to run Linux executables | |
| 15 | +compiled for one architecture on another. For example, x86 Linux | |
| 16 | +processes can be ran on PowerPC Linux architectures. By using dynamic | |
| 17 | +translation it achieves a reasonnable speed while being easy to port on | |
| 18 | +new host CPUs. Its main goal is to be able to launch the @code{Wine} | |
| 19 | +Windows API emulator (@url{http://www.winehq.org}) or @code{DOSEMU} | |
| 20 | +(@url{http://www.dosemu.org}) on non-x86 CPUs. | |
| 21 | + | |
| 22 | +QEMU generic features: | |
| 20 | 23 | |
| 21 | 24 | @itemize |
| 22 | 25 | |
| 23 | -@item User space only x86 emulator. | |
| 26 | +@item User space only emulation. | |
| 24 | 27 | |
| 25 | -@item Currently ported on i386, PowerPC. Work in progress for S390, Alpha and Sparc. | |
| 28 | +@item Working on x86 and PowerPC hosts. Being tested on ARM, Sparc32, Alpha and S390. | |
| 26 | 29 | |
| 27 | 30 | @item Using dynamic translation to native code for reasonnable speed. |
| 28 | 31 | |
| 29 | -@item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation. | |
| 30 | -User space LDT and GDT are emulated. VM86 mode is also supported. | |
| 31 | - | |
| 32 | 32 | @item Generic Linux system call converter, including most ioctls. |
| 33 | 33 | |
| 34 | 34 | @item clone() emulation using native CPU clone() to use Linux scheduler for threads. |
| 35 | 35 | |
| 36 | -@item Accurate signal handling by remapping host signals to virtual x86 signals. | |
| 37 | - | |
| 38 | -@item Precise user space x86 exceptions. | |
| 36 | +@item Accurate signal handling by remapping host signals to target signals. | |
| 39 | 37 | |
| 40 | 38 | @item Self-modifying code support. |
| 41 | 39 | |
| 40 | +@item The virtual CPU is a library (@code{libqemu}) which can be used | |
| 41 | +in other projects. | |
| 42 | + | |
| 43 | +@end itemize | |
| 44 | + | |
| 45 | +@section x86 emulation | |
| 46 | + | |
| 47 | +QEMU x86 target features: | |
| 48 | + | |
| 49 | +@itemize | |
| 50 | + | |
| 51 | +@item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation. | |
| 52 | +User space LDT and GDT are emulated. VM86 mode is also supported to run DOSEMU. | |
| 53 | + | |
| 54 | +@item Precise user space x86 exceptions. | |
| 55 | + | |
| 42 | 56 | @item Support of host page sizes bigger than 4KB. |
| 43 | 57 | |
| 44 | 58 | @item QEMU can emulate itself on x86. |
| 45 | 59 | |
| 46 | -@item The virtual x86 CPU is a library (@code{libqemu}) which can be used | |
| 47 | -in other projects. | |
| 48 | - | |
| 49 | 60 | @item An extensive Linux x86 CPU test program is included @file{tests/test-i386}. |
| 50 | 61 | It can be used to test other x86 virtual CPUs. |
| 51 | 62 | |
| ... | ... | @@ -70,10 +81,26 @@ maximum performances. |
| 70 | 81 | |
| 71 | 82 | @end itemize |
| 72 | 83 | |
| 84 | +@section ARM emulation | |
| 85 | + | |
| 86 | +@itemize | |
| 87 | + | |
| 88 | +@item ARM emulation can currently launch small programs while using the | |
| 89 | +generic dynamic code generation architecture of QEMU. | |
| 90 | + | |
| 91 | +@item No FPU support (yet). | |
| 92 | + | |
| 93 | +@item No automatic regression testing (yet). | |
| 94 | + | |
| 95 | +@end itemize | |
| 96 | + | |
| 73 | 97 | @chapter Invocation |
| 74 | 98 | |
| 75 | 99 | @section Quick Start |
| 76 | 100 | |
| 101 | +If you need to compile QEMU, please read the @file{README} which gives | |
| 102 | +the related information. | |
| 103 | + | |
| 77 | 104 | In order to launch a Linux process, QEMU needs the process executable |
| 78 | 105 | itself and all the target (x86) dynamic libraries used by it. |
| 79 | 106 | |
| ... | ... | @@ -186,7 +213,7 @@ support for it (QEMU could be used to detect out of bound memory accesses |
| 186 | 213 | as Valgrind, but it has no support to track uninitialised data as |
| 187 | 214 | Valgrind does). Valgrind dynamic translator generates better code than |
| 188 | 215 | QEMU (in particular it does register allocation) but it is closely tied |
| 189 | -to an x86 host. | |
| 216 | +to an x86 host and target. | |
| 190 | 217 | |
| 191 | 218 | EM86 [4] is the closest project to QEMU (and QEMU still uses some of its |
| 192 | 219 | code, in particular the ELF file loader). EM86 was limited to an alpha |
| ... | ... | @@ -204,7 +231,7 @@ between the API and the x86 code must be converted. |
| 204 | 231 | |
| 205 | 232 | QEMU is a dynamic translator. When it first encounters a piece of code, |
| 206 | 233 | it converts it to the host instruction set. Usually dynamic translators |
| 207 | -are very complicated and highly CPU dependant. QEMU uses some tricks | |
| 234 | +are very complicated and highly CPU dependent. QEMU uses some tricks | |
| 208 | 235 | which make it relatively easily portable and simple while achieving good |
| 209 | 236 | performances. |
| 210 | 237 | |
| ... | ... | @@ -416,14 +443,19 @@ Willows Software. |
| 416 | 443 | |
| 417 | 444 | @chapter Regression Tests |
| 418 | 445 | |
| 419 | -In the directory @file{tests/}, various interesting x86 testing programs | |
| 446 | +In the directory @file{tests/}, various interesting testing programs | |
| 420 | 447 | are available. There are used for regression testing. |
| 421 | 448 | |
| 422 | -@section @file{hello} | |
| 449 | +@section @file{hello-i386} | |
| 423 | 450 | |
| 424 | 451 | Very simple statically linked x86 program, just to test QEMU during a |
| 425 | 452 | port to a new host CPU. |
| 426 | 453 | |
| 454 | +@section @file{hello-arm} | |
| 455 | + | |
| 456 | +Very simple statically linked ARM program, just to test QEMU during a | |
| 457 | +port to a new host CPU. | |
| 458 | + | |
| 427 | 459 | @section @file{test-i386} |
| 428 | 460 | |
| 429 | 461 | This program executes most of the 16 bit and 32 bit x86 instructions and | ... | ... |