Revision 5fafdf24 qemu-tech.texi

b/qemu-tech.texi
50 50

  
51 51
@itemize @minus
52 52

  
53
@item 
53
@item
54 54
Full system emulation. In this mode, QEMU emulates a full system
55 55
(usually a PC), including a processor and various peripherals. It can
56 56
be used to launch an different Operating System without rebooting the
57 57
PC or to debug system code.
58 58

  
59
@item 
59
@item
60 60
User mode emulation (Linux host only). In this mode, QEMU can launch
61 61
Linux processes compiled for one CPU on another CPU. It can be used to
62 62
launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
......
69 69

  
70 70
QEMU generic features:
71 71

  
72
@itemize 
72
@itemize
73 73

  
74 74
@item User space only or full system emulation.
75 75

  
......
81 81

  
82 82
@item Precise exceptions support.
83 83

  
84
@item The virtual CPU is a library (@code{libqemu}) which can be used 
84
@item The virtual CPU is a library (@code{libqemu}) which can be used
85 85
in other projects (look at @file{qemu/tests/qruncom.c} to have an
86 86
example of user mode @code{libqemu} usage).
87 87

  
88 88
@end itemize
89 89

  
90 90
QEMU user mode emulation features:
91
@itemize 
91
@itemize
92 92
@item Generic Linux system call converter, including most ioctls.
93 93

  
94 94
@item clone() emulation using native CPU clone() to use Linux scheduler for threads.
95 95

  
96
@item Accurate signal handling by remapping host signals to target signals. 
96
@item Accurate signal handling by remapping host signals to target signals.
97 97
@end itemize
98 98

  
99 99
QEMU full system emulation features:
100
@itemize 
100
@itemize
101 101
@item QEMU can either use a full software MMU for maximum portability or use the host system call mmap() to simulate the target MMU.
102 102
@end itemize
103 103

  
......
106 106

  
107 107
QEMU x86 target features:
108 108

  
109
@itemize 
109
@itemize
110 110

  
111
@item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation. 
111
@item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation.
112 112
LDT/GDT and IDT are emulated. VM86 mode is also supported to run DOSEMU.
113 113

  
114 114
@item Support of host page sizes bigger than 4KB in user mode emulation.
115 115

  
116 116
@item QEMU can emulate itself on x86.
117 117

  
118
@item An extensive Linux x86 CPU test program is included @file{tests/test-i386}. 
118
@item An extensive Linux x86 CPU test program is included @file{tests/test-i386}.
119 119
It can be used to test other x86 virtual CPUs.
120 120

  
121 121
@end itemize
122 122

  
123 123
Current QEMU limitations:
124 124

  
125
@itemize 
125
@itemize
126 126

  
127 127
@item No SSE/MMX support (yet).
128 128

  
......
130 130

  
131 131
@item IPC syscalls are missing.
132 132

  
133
@item The x86 segment limits and access rights are not tested at every 
133
@item The x86 segment limits and access rights are not tested at every
134 134
memory access (yet). Hopefully, very few OSes seem to rely on that for
135 135
normal use.
136 136

  
137
@item On non x86 host CPUs, @code{double}s are used instead of the non standard 
137
@item On non x86 host CPUs, @code{double}s are used instead of the non standard
138 138
10 byte @code{long double}s of x86 for floating point emulation to get
139 139
maximum performances.
140 140

  
......
185 185

  
186 186
@itemize
187 187

  
188
@item Full PowerPC 32 bit emulation, including privileged instructions, 
188
@item Full PowerPC 32 bit emulation, including privileged instructions,
189 189
FPU and MMU.
190 190

  
191 191
@item Can run most PowerPC Linux binaries.
......
207 207

  
208 208
Current QEMU limitations:
209 209

  
210
@itemize 
210
@itemize
211 211

  
212 212
@item IPC syscalls are missing.
213 213

  
......
306 306
instructions to build a function (see @file{op.h:dyngen_code()}).
307 307

  
308 308
In essence, the process is similar to [1], but more work is done at
309
compile time. 
309
compile time.
310 310

  
311 311
A key idea to get optimal performances is that constant parameters can
312 312
be passed to the simple operations. For that purpose, dummy ELF
......
398 398

  
399 399
Correct translated code invalidation is done efficiently by maintaining
400 400
a linked list of every translated block contained in a given page. Other
401
linked lists are also maintained to undo direct block chaining. 
401
linked lists are also maintained to undo direct block chaining.
402 402

  
403 403
Although the overhead of doing @code{mprotect()} calls is important,
404 404
most MSDOS programs can be emulated at reasonnable speed with QEMU and
......
418 418
@section Exception support
419 419

  
420 420
longjmp() is used when an exception such as division by zero is
421
encountered. 
421
encountered.
422 422

  
423 423
The host SIGSEGV and SIGBUS signal handlers are used to get invalid
424 424
memory accesses. The exact CPU state can be retrieved because all the
......
446 446

  
447 447
In order to avoid flushing the translated code each time the MMU
448 448
mappings change, QEMU uses a physically indexed translation cache. It
449
means that each basic block is indexed with its physical address. 
449
means that each basic block is indexed with its physical address.
450 450

  
451 451
When MMU mappings change, only the chaining of the basic blocks is
452 452
reset (i.e. a basic block can no longer jump directly to another one).
......
525 525

  
526 526
@table @asis
527 527

  
528
@item [1] 
528
@item [1]
529 529
@url{http://citeseer.nj.nec.com/piumarta98optimizing.html}, Optimizing
530 530
direct threaded code by selective inlining (1998) by Ian Piumarta, Fabio
531 531
Riccardi.
......
552 552
Willows Software.
553 553

  
554 554
@item [7]
555
@url{http://user-mode-linux.sourceforge.net/}, 
555
@url{http://user-mode-linux.sourceforge.net/},
556 556
The User-mode Linux Kernel.
557 557

  
558 558
@item [8]
559
@url{http://www.plex86.org/}, 
559
@url{http://www.plex86.org/},
560 560
The new Plex86 project.
561 561

  
562 562
@item [9]
563
@url{http://www.vmware.com/}, 
563
@url{http://www.vmware.com/},
564 564
The VMWare PC virtualizer.
565 565

  
566 566
@item [10]
567
@url{http://www.microsoft.com/windowsxp/virtualpc/}, 
567
@url{http://www.microsoft.com/windowsxp/virtualpc/},
568 568
The VirtualPC PC virtualizer.
569 569

  
570 570
@item [11]
571
@url{http://www.twoostwo.org/}, 
571
@url{http://www.twoostwo.org/},
572 572
The TwoOStwo PC virtualizer.
573 573

  
574 574
@end table

Also available in: Unified diff