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 | ... | ... |