Here are three patches which enhance and fix the existing QEMU
documentation.
1. Makefile: added rules to build qemu-doc and qemu-tech in info and dvi
format.
I did not add a dependency which calls these rules automatically, so run
make qemu-doc.info qemu-tech.info qemu-doc.dvi qemu-tech.dvi
to build the new targets.
2. qemu-doc.texi, qemu-tech.texi:
* fixed for generation of info files
* fixed long lines for generation of dvi / ps / pdf files
* fixed html title
* added menus for html and info
* added table of contents for html and dvi
* added index (still empty) for html, info and dvi
* fixed minor spelling bug (reasonnable)
All documentation formats should build now without error messages
(my test on Debian Linux passed).
Regards
Stefan Weil
Index: qemu-doc.texi
===================================================================
RCS file: /sources/qemu/qemu/qemu-doc.texi,v
retrieving revision 1.85
diff -u -b -B -u -r1.85 qemu-doc.texi
--- qemu-doc.texi 23 Apr 2006 21:57:03 -0000 1.85
+++ qemu-doc.texi 30 Apr 2006 20:38:33 -0000
@@ -1,16 +1,46 @@
\input texinfo @c -*- texinfo -*-
[EMAIL PROTECTED] %**start of header
[EMAIL PROTECTED] qemu-doc.info
[EMAIL PROTECTED] QEMU CPU Emulator User Documentation
[EMAIL PROTECTED] 0
[EMAIL PROTECTED] 0
[EMAIL PROTECTED] %**end of header
@iftex
[EMAIL PROTECTED] QEMU CPU Emulator User Documentation
@titlepage
@sp 7
[EMAIL PROTECTED] @titlefont{QEMU CPU Emulator User Documentation}
[EMAIL PROTECTED] @titlefont{QEMU CPU Emulator}
[EMAIL PROTECTED] 1
[EMAIL PROTECTED] @titlefont{User Documentation}
@sp 3
@end titlepage
@end iftex
[EMAIL PROTECTED]
[EMAIL PROTECTED] Top
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
+* Introduction::
+* Installation::
+* QEMU PC System emulator::
+* QEMU System emulator for non PC targets::
+* QEMU Linux User space emulator::
+* compilation:: Compilation from the sources
+* Index::
[EMAIL PROTECTED] menu
[EMAIL PROTECTED] ifnottex
+
[EMAIL PROTECTED]
+
[EMAIL PROTECTED] Introduction
@chapter Introduction
[EMAIL PROTECTED]
+* intro_features:: Features
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] intro_features
@section Features
QEMU is a FAST! processor emulator using dynamic translation to
@@ -52,27 +82,53 @@
For user emulation, x86, PowerPC, ARM, MIPS, and Sparc32/64 CPUs are supported.
[EMAIL PROTECTED] Installation
@chapter Installation
If you want to compile QEMU yourself, see @ref{compilation}.
[EMAIL PROTECTED]
+* install_linux:: Linux
+* install_windows:: Windows
+* install_mac:: Macintosh
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] install_linux
@section Linux
If a precompiled package is available for your distribution - you just
have to install it. Otherwise, see @ref{compilation}.
[EMAIL PROTECTED] install_windows
@section Windows
Download the experimental binary installer at
[EMAIL PROTECTED]://www.free.oszoo.org/download.html}.
[EMAIL PROTECTED]://www.free.oszoo.org/@/download.html}.
[EMAIL PROTECTED] install_mac
@section Mac OS X
Download the experimental binary installer at
[EMAIL PROTECTED]://www.free.oszoo.org/download.html}.
[EMAIL PROTECTED]://www.free.oszoo.org/@/download.html}.
[EMAIL PROTECTED] QEMU PC System emulator
@chapter QEMU PC System emulator
[EMAIL PROTECTED]
+* pcsys_introduction:: Introduction
+* pcsys_quickstart:: Quick Start
+* sec_invocation:: Invocation
+* pcsys_keys:: Keys
+* pcsys_monitor:: QEMU Monitor
+* disk_images:: Disk Images
+* pcsys_network:: Network emulation
+* direct_linux_boot:: Direct Linux Boot
+* pcsys_usb:: USB emulation
+* gdb_usage:: GDB usage
+* pcsys_os_specific:: Target OS specific information
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] pcsys_introduction
@section Introduction
@c man begin DESCRIPTION
@@ -118,6 +174,7 @@
@c man end
[EMAIL PROTECTED] pcsys_quickstart
@section Quick Start
Download and uncompress the linux image (@file{linux.img}) and type:
@@ -147,14 +204,14 @@
@item -fda file
@item -fdb file
-Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
+Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
use the host floppy by using @file{/dev/fd0} as filename.
@item -hda file
@item -hdb file
@item -hdc file
@item -hdd file
-Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
+Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
@item -cdrom file
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
@@ -168,7 +225,7 @@
@item -snapshot
Write to temporary files instead of disk image files. In this case,
the raw disk image you use is not written back. You can however force
-the write back by pressing @key{C-a s} (@xref{disk_images}).
+the write back by pressing @key{C-a s} (@pxref{disk_images}).
@item -m megs
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
@@ -297,9 +354,12 @@
Example:
@example
# launch a first QEMU instance
-qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234
-# connect the VLAN 0 of this instance to the VLAN 0 of the first instance
-qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,connect=127.0.0.1:1234
+qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
+ -net socket,listen=:1234
+# connect the VLAN 0 of this instance to the VLAN 0
+# of the first instance
+qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
+ -net socket,connect=127.0.0.1:1234
@end example
@item -net socket[,vlan=n][,fd=h][,mcast=maddr:port]
@@ -321,17 +381,22 @@
Example:
@example
# launch one QEMU instance
-qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=230.0.0.1:1234
+qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
+ -net socket,mcast=230.0.0.1:1234
# launch another QEMU instance on same "bus"
-qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,mcast=230.0.0.1:1234
+qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
+ -net socket,mcast=230.0.0.1:1234
# launch yet another QEMU instance on same "bus"
-qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net
socket,mcast=230.0.0.1:1234
+qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
+ -net socket,mcast=230.0.0.1:1234
@end example
Example (User Mode Linux compat.):
@example
-# launch QEMU instance (note mcast address selected is UML's default)
-qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=239.192.168.1:1102
+# launch QEMU instance (note mcast address selected
+# is UML's default)
+qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
+ -net socket,mcast=239.192.168.1:1102
# launch UML
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
@end example
@@ -464,7 +529,7 @@
non graphical mode.
@item -s
-Wait gdb connection to port 1234 (@xref{gdb_usage}).
+Wait gdb connection to port 1234 (@pxref{gdb_usage}).
@item -p port
Change gdb connection port.
@item -S
@@ -487,6 +552,7 @@
@c man end
[EMAIL PROTECTED] pcsys_keys
@section Keys
@c man begin OPTIONS
@@ -535,9 +601,6 @@
@ignore
[EMAIL PROTECTED] qemu
[EMAIL PROTECTED] QEMU System Emulator
-
@c man begin SEEALSO
The HTML documentation of QEMU for more precise information and Linux
user mode emulator invocation.
@@ -549,8 +612,7 @@
@end ignore
[EMAIL PROTECTED] ignore
-
[EMAIL PROTECTED] pcsys_monitor
@section QEMU Monitor
The QEMU monitor is used to give complex commands to the QEMU
@@ -676,7 +738,7 @@
@item
Dump 80 16 bit values at the start of the video memory.
[EMAIL PROTECTED]
[EMAIL PROTECTED]
(qemu) xp/80hx 0xb8000
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
@@ -688,7 +750,7 @@
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
[EMAIL PROTECTED] example
[EMAIL PROTECTED] smallexample
@end itemize
@item p or print/fmt expr
@@ -739,6 +801,14 @@
growable disk images (their size increase as non empty sectors are
written), compressed and encrypted disk images.
[EMAIL PROTECTED]
+* disk_images_quickstart:: Quick start for disk image creation
+* disk_images_snapshot_mode:: Snapshot mode
+* qemu_img_invocation:: qemu-img Invocation
+* disk_images_fat_images:: Virtual FAT disk images
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] disk_images_quickstart
@subsection Quick start for disk image creation
You can create a disk image with the command:
@@ -749,8 +819,9 @@
size in kilobytes. You can add an @code{M} suffix to give the size in
megabytes and a @code{G} suffix for gigabytes.
[EMAIL PROTECTED] for more information.
+See @ref{qemu_img_invocation} for more information.
[EMAIL PROTECTED] disk_images_snapshot_mode
@subsection Snapshot mode
If you use the option @option{-snapshot}, all disk images are
@@ -764,6 +835,7 @@
@include qemu-img.texi
[EMAIL PROTECTED] disk_images_fat_images
@subsection Virtual FAT disk images
QEMU can automatically create a virtual FAT disk image from a
@@ -798,6 +870,7 @@
@item write to the FAT directory on the host system while accessing it with
the guest system.
@end itemize
[EMAIL PROTECTED] pcsys_network
@section Network emulation
QEMU can simulate several networks cards (NE2000 boards on the PC
@@ -901,10 +974,10 @@
@item Launch @code{qemu.sh}. You should have the following output:
[EMAIL PROTECTED]
[EMAIL PROTECTED]
> ./qemu.sh
Connected to host network interface: tun0
-Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2
20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
+Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2
20030222 @/(Red Hat @/Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
BIOS-provided physical RAM map:
BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
@@ -913,7 +986,7 @@
zone(0): 4096 pages.
zone(1): 4096 pages.
zone(2): 0 pages.
-Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe
ide4=noprobe ide5=noprobe console=ttyS0
+Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe
ide4=noprobe @/ide5=noprobe console=ttyS0
ide_setup: ide2=noprobe
ide_setup: ide3=noprobe
ide_setup: ide4=noprobe
@@ -922,7 +995,7 @@
Detected 2399.621 MHz processor.
Console: colour EGA 80x25
Calibrating delay loop... 4744.80 BogoMIPS
-Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data,
64k init, 0k highmem)
+Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data,
64k init, @/0k highmem)
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
@@ -964,14 +1037,14 @@
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 64k freed
-Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2
20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
+Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2
20030222 @/(Red Hat @/Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
QEMU Linux test distribution (based on Redhat 9)
Type 'exit' to halt the system
sh-2.05b#
[EMAIL PROTECTED] example
[EMAIL PROTECTED] smallexample
@item
Then you can play with the kernel inside the virtual serial console. You
@@ -1021,6 +1094,7 @@
@end enumerate
[EMAIL PROTECTED] pcsys_usb
@section USB emulation
QEMU emulates a PCI UHCI USB controller and a 8 port USB hub connected
@@ -1104,7 +1178,8 @@
In order to use gdb, launch qemu with the '-s' option. It will wait for a
gdb connection:
@example
-> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append
"root=/dev/hda"
+> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
+ -append "root=/dev/hda"
Connected to host network interface: tun0
Waiting gdb connection on port 1234
@end example
@@ -1136,6 +1211,7 @@
@code{x/10i $cs*16+*eip} to dump the code at the PC position.
@end enumerate
[EMAIL PROTECTED] pcsys_os_specific
@section Target OS specific information
@subsection Linux
@@ -1222,12 +1298,22 @@
from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
problem.
[EMAIL PROTECTED] QEMU System emulator for non PC targets
@chapter QEMU System emulator for non PC targets
QEMU is a generic emulator and it emulates many non PC
machines. Most of the options are similar to the PC emulator. The
differences are mentionned in the following sections.
[EMAIL PROTECTED]
+* QEMU PowerPC System emulator::
+* Sparc32 System emulator invocation::
+* Sparc64 System emulator invocation::
+* MIPS System emulator invocation::
+* ARM System emulator invocation::
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] QEMU PowerPC System emulator
@section QEMU PowerPC System emulator
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
@@ -1292,6 +1378,7 @@
More information is available at
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
[EMAIL PROTECTED] Sparc32 System emulator invocation
@section Sparc32 System emulator invocation
Use the executable @file{qemu-system-sparc} to simulate a JavaStation
@@ -1320,7 +1407,7 @@
The number of peripherals is fixed in the architecture.
QEMU uses the Proll, a PROM replacement available at
[EMAIL PROTECTED]://people.redhat.com/zaitcev/linux/}. The required
[EMAIL PROTECTED]://people.redhat.com/@/zaitcev/linux/}. The required
QEMU-specific patches are included with the sources.
A sample Linux 2.6 series kernel and ram disk image are available on
@@ -1341,6 +1428,7 @@
@c man end
[EMAIL PROTECTED] Sparc64 System emulator invocation
@section Sparc64 System emulator invocation
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
@@ -1359,6 +1447,7 @@
PC-compatible serial ports
@end itemize
[EMAIL PROTECTED] MIPS System emulator invocation
@section MIPS System emulator invocation
Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
@@ -1376,6 +1465,7 @@
More information is available in the QEMU mailing-list archive.
[EMAIL PROTECTED] ARM System emulator invocation
@section ARM System emulator invocation
Use the executable @file{qemu-system-arm} to simulate a ARM
@@ -1394,8 +1484,16 @@
A Linux 2.6 test image is available on the QEMU web site. More
information is available in the QEMU mailing-list archive.
[EMAIL PROTECTED] QEMU Linux User space emulator
@chapter QEMU Linux User space emulator
[EMAIL PROTECTED]
+* Quick Start::
+* Wine launch::
+* Command line options::
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] Quick Start
@section Quick Start
In order to launch a Linux process, QEMU needs the process executable
@@ -1439,11 +1537,13 @@
@item The x86 version of QEMU is also included. You can try weird things such
as:
@example
-qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
+qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
+ /usr/local/qemu-i386/bin/ls-i386
@end example
@end itemize
[EMAIL PROTECTED] Wine launch
@section Wine launch
@itemize
@@ -1460,17 +1560,19 @@
(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
@item Configure Wine on your account. Look at the provided script
[EMAIL PROTECTED]/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
[EMAIL PROTECTED]/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
@[EMAIL PROTECTED]@}/.wine} directory is saved to @[EMAIL
PROTECTED]@}/.wine.org}.
@item Then you can try the example @file{putty.exe}:
@example
-qemu-i386 /usr/local/qemu-i386/wine/bin/wine
/usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
+qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
+ /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
@end example
@end itemize
[EMAIL PROTECTED] Command line options
@section Command line options
@example
@@ -1498,6 +1600,14 @@
@node compilation
@chapter Compilation from the sources
[EMAIL PROTECTED]
+* Linux/Unix::
+* Windows::
+* Cross compilation for Windows with Linux::
+* Mac OS X::
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] Linux/Unix
@section Linux/Unix
@subsection Compilation
@@ -1555,6 +1665,7 @@
variables. You must use gcc 3.x on PowerPC.
@end example
[EMAIL PROTECTED] Windows
@section Windows
@itemize
@@ -1564,7 +1675,7 @@
@item Download
the MinGW development library of SDL 1.2.x
-(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
+(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
directory. Edit the @file{sdl-config} script so that it gives the
@@ -1584,6 +1695,7 @@
@end itemize
[EMAIL PROTECTED] Cross compilation for Windows with Linux
@section Cross compilation for Windows with Linux
@itemize
@@ -1615,9 +1727,15 @@
Note: Currently, Wine does not seem able to launch
QEMU for Win32.
[EMAIL PROTECTED] Mac OS X
@section Mac OS X
The Mac OS X patches are not fully merged in QEMU, so you should look
at the QEMU mailing list archive to have all the necessary
information.
[EMAIL PROTECTED] Index
[EMAIL PROTECTED] Index
[EMAIL PROTECTED] cp
+
[EMAIL PROTECTED]
Index: qemu-tech.texi
===================================================================
RCS file: /sources/qemu/qemu/qemu-tech.texi,v
retrieving revision 1.8
diff -u -b -B -u -r1.8 qemu-tech.texi
--- qemu-tech.texi 23 Jul 2005 14:27:54 -0000 1.8
+++ qemu-tech.texi 30 Apr 2006 20:38:23 -0000
@@ -1,7 +1,12 @@
\input texinfo @c -*- texinfo -*-
[EMAIL PROTECTED] %**start of header
[EMAIL PROTECTED] qemu-tech.info
[EMAIL PROTECTED] QEMU Internals
[EMAIL PROTECTED] 0
[EMAIL PROTECTED] 0
[EMAIL PROTECTED] %**end of header
@iftex
[EMAIL PROTECTED] QEMU Internals
@titlepage
@sp 7
@center @titlefont{QEMU Internals}
@@ -9,8 +14,32 @@
@end titlepage
@end iftex
[EMAIL PROTECTED]
[EMAIL PROTECTED] Top
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
+* Introduction::
+* QEMU Internals::
+* Regression Tests::
+* Index::
[EMAIL PROTECTED] menu
[EMAIL PROTECTED] ifnottex
+
[EMAIL PROTECTED]
+
[EMAIL PROTECTED] Introduction
@chapter Introduction
[EMAIL PROTECTED]
+* intro_features:: Features
+* intro_x86_emulation:: x86 emulation
+* intro_arm_emulation:: ARM emulation
+* intro_ppc_emulation:: PowerPC emulation
+* intro_sparc_emulation:: SPARC emulation
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] intro_features
@section Features
QEMU is a FAST! processor emulator using a portable dynamic
@@ -43,7 +72,7 @@
@item User space only or full system emulation.
[EMAIL PROTECTED] Using dynamic translation to native code for reasonnable
speed.
[EMAIL PROTECTED] Using dynamic translation to native code for reasonable speed.
@item Working on x86 and PowerPC hosts. Being tested on ARM, Sparc32, Alpha
and S390.
@@ -65,13 +94,13 @@
@item Accurate signal handling by remapping host signals to target signals.
@end itemize
[EMAIL PROTECTED] itemize
QEMU full system emulation features:
@itemize
@item QEMU can either use a full software MMU for maximum portability or use
the host system call mmap() to simulate the target MMU.
@end itemize
[EMAIL PROTECTED] intro_x86_emulation
@section x86 emulation
QEMU x86 target features:
@@ -110,6 +139,7 @@
@end itemize
[EMAIL PROTECTED] intro_arm_emulation
@section ARM emulation
@itemize
@@ -122,6 +152,7 @@
@end itemize
[EMAIL PROTECTED] intro_ppc_emulation
@section PowerPC emulation
@itemize
@@ -133,6 +164,7 @@
@end itemize
[EMAIL PROTECTED] intro_sparc_emulation
@section SPARC emulation
@itemize
@@ -166,8 +198,26 @@
@end itemize
[EMAIL PROTECTED] QEMU Internals
@chapter QEMU Internals
[EMAIL PROTECTED]
+* QEMU compared to other emulators::
+* Portable dynamic translation::
+* Register allocation::
+* Condition code optimisations::
+* CPU state optimisations::
+* Translation cache::
+* Direct block chaining::
+* Self-modifying code and translated code invalidation::
+* Exception support::
+* MMU emulation::
+* Hardware interrupts::
+* User emulation specific details::
+* Bibliography::
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] QEMU compared to other emulators
@section QEMU compared to other emulators
Like bochs [3], QEMU emulates an x86 CPU. But QEMU is much faster than
@@ -214,6 +264,7 @@
and potentially unsafe host drivers. Moreover, they are unable to
provide cycle exact simulation as an emulator can.
[EMAIL PROTECTED] Portable dynamic translation
@section Portable dynamic translation
QEMU is a dynamic translator. When it first encounters a piece of code,
@@ -243,6 +294,7 @@
To go even faster, GCC static register variables are used to keep the
state of the virtual CPU.
[EMAIL PROTECTED] Register allocation
@section Register allocation
Since QEMU uses fixed simple instructions, no efficient register
@@ -250,6 +302,7 @@
register, most of the virtual CPU state can be put in registers without
doing complicated register allocation.
[EMAIL PROTECTED] Condition code optimisations
@section Condition code optimisations
Good CPU condition codes emulation (@code{EFLAGS} register on x86) is a
@@ -268,6 +321,7 @@
the condition codes are not needed by the next instructions, no
condition codes are computed at all.
[EMAIL PROTECTED] CPU state optimisations
@section CPU state optimisations
The x86 CPU has many internal states which change the way it evaluates
@@ -279,6 +333,7 @@
[The FPU stack pointer register is not handled that way yet].
[EMAIL PROTECTED] Translation cache
@section Translation cache
A 16 MByte cache holds the most recently used translations. For
@@ -287,6 +342,7 @@
terminated by a jump or by a virtual CPU state change which the
translator cannot deduce statically).
[EMAIL PROTECTED] Direct block chaining
@section Direct block chaining
After each translated basic block is executed, QEMU uses the simulated
@@ -302,6 +358,7 @@
architectures (such as x86 or PowerPC), the @code{JUMP} opcode is
directly patched so that the block chaining has no overhead.
[EMAIL PROTECTED] Self-modifying code and translated code invalidation
@section Self-modifying code and translated code invalidation
Self-modifying code is a special challenge in x86 emulation because no
@@ -332,6 +389,7 @@
really needs to be invalidated. It avoids invalidating the code when
only data is modified in the page.
[EMAIL PROTECTED] Exception support
@section Exception support
longjmp() is used when an exception such as division by zero is
@@ -348,6 +406,7 @@
optimisations. It is not a big concern because the emulated code can
still be restarted in any cases.
[EMAIL PROTECTED] MMU emulation
@section MMU emulation
For system emulation, QEMU uses the mmap() system call to emulate the
@@ -367,6 +426,7 @@
When MMU mappings change, only the chaining of the basic blocks is
reset (i.e. a basic block can no longer jump directly to another one).
[EMAIL PROTECTED] Hardware interrupts
@section Hardware interrupts
In order to be faster, QEMU does not check at every basic block if an
@@ -377,6 +437,7 @@
of the CPU emulator. Then the main loop can test if the interrupt is
pending and handle it.
[EMAIL PROTECTED] User emulation specific details
@section User emulation specific details
@subsection Linux system call translation
@@ -434,6 +495,7 @@
shared object as the ld-linux.so ELF interpreter. That way, it can be
relocated at load time.
[EMAIL PROTECTED] Bibliography
@section Bibliography
@table @asis
@@ -456,7 +518,7 @@
x86 emulator on Alpha-Linux.
@item [5]
[EMAIL
PROTECTED]://www.usenix.org/publications/library/proceedings/usenix-nt97/full_papers/chernoff/chernoff.pdf},
[EMAIL
PROTECTED]://www.usenix.org/publications/library/proceedings/usenix-nt97/@/full_papers/chernoff/chernoff.pdf},
DIGITAL FX!32: Running 32-Bit x86 Applications on Alpha NT, by Anton
Chernoff and Ray Hookway.
@@ -486,11 +548,19 @@
@end table
[EMAIL PROTECTED] Regression Tests
@chapter Regression Tests
In the directory @file{tests/}, various interesting testing programs
are available. There are used for regression testing.
[EMAIL PROTECTED]
+* test-i386::
+* linux-test::
+* qruncom.c::
[EMAIL PROTECTED] menu
+
[EMAIL PROTECTED] test-i386
@section @file{test-i386}
This program executes most of the 16 bit and 32 bit x86 instructions and
@@ -506,12 +576,20 @@
Various exceptions are raised to test most of the x86 user space
exception reporting.
[EMAIL PROTECTED] linux-test
@section @file{linux-test}
This program tests various Linux system calls. It is used to verify
that the system call parameters are correctly converted between target
and host CPUs.
[EMAIL PROTECTED] qruncom.c
@section @file{qruncom.c}
Example of usage of @code{libqemu} to emulate a user mode i386 CPU.
+
[EMAIL PROTECTED] Index
[EMAIL PROTECTED] Index
[EMAIL PROTECTED] cp
+
[EMAIL PROTECTED]
Index: Makefile
===================================================================
RCS file: /sources/qemu/qemu/Makefile,v
retrieving revision 1.97
diff -u -b -B -u -r1.97 Makefile
--- Makefile 23 Apr 2006 17:57:59 -0000 1.97
+++ Makefile 30 Apr 2006 20:39:40 -0000
@@ -85,6 +85,12 @@
%.html: %.texi
texi2html -monolithic -number $<
+%.info: %.texi
+ makeinfo $< -o $@
+
+%.dvi: %.texi
+ texi2dvi $<
+
qemu.1: qemu-doc.texi
$(SRC_PATH)/texi2pod.pl $< qemu.pod
pod2man --section=1 --center=" " --release=" " qemu.pod > $@
_______________________________________________
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel