• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisión4690764bba3a489d5180106d08970ced59113e22 (tree)
Tiempo2003-07-07 21:17:46
Autorbellard <bellard@c046...>
Commiterbellard

Log Message

update

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@312 c046a42c-6fe2-441c-8c8c-71466251a162

Cambiar Resumen

Diferencia incremental

--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,12 @@
1+version 0.4.2:
2+
3+ - many exception handling fixes (can compile a Linux kernel inside vl)
4+ - IDE emulation support
5+ - initial GDB stub support
6+ - deferred update support for disk images (Rusty Russell)
7+ - accept user mode Linux Copy On Write disk images
8+ - SMP kernels can at least be booted
9+
110 version 0.4.1:
211
312 - more accurate timer support in vl.
--- a/Makefile
+++ b/Makefile
@@ -141,7 +141,7 @@ endif
141141
142142 # must use static linking to avoid leaving stuff in virtual address space
143143 vl: vl.o block.o libqemu.a
144- $(CC) -pg -static -Wl,-T,i386-vl.ld -o $@ $^ $(LIBS)
144+ $(CC) -static -Wl,-T,i386-vl.ld -o $@ $^ $(LIBS)
145145
146146 vlmkcow: vlmkcow.o
147147 $(CC) -o $@ $^ $(LIBS)
@@ -213,11 +213,11 @@ dyngen.c dyngen.h dyngen-exec.h ioctls.h syscall_types.h \
213213 Makefile elf.h elfload.c main.c signal.c qemu.h \
214214 syscall.c syscall_defs.h vm86.c path.c mmap.c \
215215 i386.ld ppc.ld alpha.ld s390.ld sparc.ld arm.ld\
216-vl.c i386-vl.ld vl.h block.c\
216+vl.c i386-vl.ld vl.h block.c vlmkcow.c\
217217 thunk.c cpu-exec.c translate.c cpu-all.h thunk.h exec.h\
218-exec.c cpu-exec.c\
218+exec.c cpu-exec.c gdbstub.c\
219219 cpu-i386.h op-i386.c helper-i386.c syscall-i386.h translate-i386.c \
220-exec-i386.h ops_template.h op_string.h opreg_template.h \
220+exec-i386.h ops_template.h ops_template_mem.h op_string.h opreg_template.h \
221221 cpu-arm.h syscall-arm.h exec-arm.h op-arm.c translate-arm.c op-arm-template.h \
222222 dis-asm.h disas.c disas.h alpha-dis.c ppc-dis.c i386-dis.c sparc-dis.c \
223223 arm-dis.c \
--- a/TODO
+++ b/TODO
@@ -1,16 +1,17 @@
1-
2-- finish segment ops (call far, ret far, load_seg suppressed)
3-- fix arm fpu rounding (at least for float->integer conversions)
1+- optimize FPU operations (evaluate x87 stack pointer statically) and
2+ fix cr0.TS emulation
43 - fix CCOP optimisation
5-- optimize FPU operations (evaluate x87 stack pointer statically)
6-- fpush not before mem load restarting
74 - fix all remaining thread lock issues (must put TBs in a specific invalid
85 state, find a solution for tb_flush()).
9-- add gcc 2.96 test configure (some gcc3 flags are needed)
6+- cpu loop optimisation (optimise ret case as the cpu state does not change)
7+- fix arm fpu rounding (at least for float->integer conversions)
108 - add IPC syscalls
119
1210 lower priority:
1311 --------------
12+- sysenter/sysexit emulation
13+- SMP support
14+- finish segment ops (call far, ret far, load_seg suppressed)
1415 - use -msoft-float on ARM
1516 - use kernel traps for unaligned accesses on ARM ?
1617 - handle rare page fault cases (in particular if page fault in heplers or
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
1-0.4.1
\ No newline at end of file
1+0.4.2
\ No newline at end of file
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -311,7 +311,7 @@ extern CPUState *cpu_single_env;
311311
312312 #define CPU_INTERRUPT_EXIT 0x01 /* wants exit from main loop */
313313 #define CPU_INTERRUPT_HARD 0x02 /* hardware interrupt pending */
314-void cpu_interrupt(CPUX86State *s, int mask);
314+void cpu_interrupt(CPUState *s, int mask);
315315
316316 /* gdb stub API */
317317 extern int gdbstub_fd;
--- a/cpu-arm.h
+++ b/cpu-arm.h
@@ -49,7 +49,6 @@ typedef struct CPUARMState {
4949
5050 CPUARMState *cpu_arm_init(void);
5151 int cpu_arm_exec(CPUARMState *s);
52-void cpu_arm_interrupt(CPUARMState *s);
5352 void cpu_arm_close(CPUARMState *s);
5453 /* you can call this signal handler from your SIGBUS and SIGSEGV
5554 signal handlers to inform the virtual CPU of exceptions. non zero
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -240,9 +240,9 @@ This section explains how to launch a Linux kernel inside QEMU.
240240
241241 @enumerate
242242 @item
243-Download the archive @file{vl-test-xxx.tar.gz} containing a Linux kernel
244-and an initrd (initial Ram Disk). The archive also contains a
245-precompiled version of @file{vl}, the QEMU System emulator.
243+Download the archive @file{vl-test-xxx.tar.gz} containing a Linux
244+kernel and a disk image. The archive also contains a precompiled
245+version of @file{vl}, the QEMU System emulator.
246246
247247 @item Optional: If you want network support (for example to launch X11 examples), you
248248 must copy the script @file{vl-ifup} in @file{/etc} and configure
@@ -262,20 +262,25 @@ seen from the emulated kernel at IP address 172.20.0.1.
262262 > ./vl.sh
263263 connected to host network interface: tun0
264264 Uncompressing Linux... Ok, booting the kernel.
265-Linux version 2.4.20 (bellard@voyager) (gcc version 2.95.2 20000220 (Debian GNU/Linux)) #42 Wed Jun 25 14:16:12 CEST 2003
265+Linux version 2.4.20 (fabrice@localhost.localdomain) (gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)) #22 lun jui 7 13:37:41 CEST 2003
266266 BIOS-provided physical RAM map:
267- BIOS-88: 0000000000000000 - 000000000009f000 (usable)
268- BIOS-88: 0000000000100000 - 0000000002000000 (usable)
267+ BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
268+ BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
269269 32MB LOWMEM available.
270270 On node 0 totalpages: 8192
271271 zone(0): 4096 pages.
272272 zone(1): 4096 pages.
273273 zone(2): 0 pages.
274-Kernel command line: root=/dev/ram ramdisk_size=6144
274+Kernel command line: root=/dev/hda ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
275+ide_setup: ide1=noprobe
276+ide_setup: ide2=noprobe
277+ide_setup: ide3=noprobe
278+ide_setup: ide4=noprobe
279+ide_setup: ide5=noprobe
275280 Initializing CPU#0
276-Detected 501.785 MHz processor.
277-Calibrating delay loop... 973.20 BogoMIPS
278-Memory: 24776k/32768k available (725k kernel code, 7604k reserved, 151k data, 48k init, 0k highmem)
281+Detected 501.285 MHz processor.
282+Calibrating delay loop... 989.59 BogoMIPS
283+Memory: 29268k/32768k available (907k kernel code, 3112k reserved, 212k data, 52k init, 0k highmem)
279284 Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
280285 Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
281286 Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
@@ -289,24 +294,30 @@ Based upon Swansea University Computer Society NET3.039
289294 Initializing RT netlink socket
290295 apm: BIOS not found.
291296 Starting kswapd
297+Journalled Block Device driver loaded
292298 pty: 256 Unix98 ptys configured
293299 Serial driver version 5.05c (2001-07-08) with no serial options enabled
294300 ttyS00 at 0x03f8 (irq = 4) is a 16450
301+Uniform Multi-Platform E-IDE driver Revision: 6.31
302+ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
303+hda: QEMU HARDDISK, ATA DISK drive
304+ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
305+hda: 12288 sectors (6 MB) w/256KiB Cache, CHS=12/16/63
306+Partition check:
307+ hda: unknown partition table
295308 ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
296309 Last modified Nov 1, 2000 by Paul Gortmaker
297310 NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
298311 eth0: NE2000 found at 0x300, using IRQ 9.
299-RAMDISK driver initialized: 16 RAM disks of 6144K size 1024 blocksize
312+RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
300313 NET4: Linux TCP/IP 1.0 for NET4.0
301314 IP Protocols: ICMP, UDP, TCP, IGMP
302315 IP: routing cache hash table of 512 buckets, 4Kbytes
303-TCP: Hash tables configured (established 2048 bind 2048)
316+TCP: Hash tables configured (established 2048 bind 4096)
304317 NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
305-RAMDISK: ext2 filesystem found at block 0
306-RAMDISK: Loading 6144 blocks [1 disk] into ram disk... done.
307-Freeing initrd memory: 6144k freed
318+EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
308319 VFS: Mounted root (ext2 filesystem).
309-Freeing unused kernel memory: 48k freed
320+Freeing unused kernel memory: 52k freed
310321 sh: can't access tty; job control turned off
311322 #
312323 @end example
@@ -338,7 +349,7 @@ a real Virtual Linux system !
338349 NOTES:
339350 @enumerate
340351 @item
341-A 2.5.66 kernel is also included in the vl-test archive. Just
352+A 2.5.74 kernel is also included in the vl-test archive. Just
342353 replace the bzImage in vl.sh to try it.
343354
344355 @item
@@ -348,7 +359,19 @@ a temporary directory using the tmpfs filesystem to avoid too many
348359 unnecessary disk accesses.
349360
350361 @item
351-The example initrd is a modified version of the one made by Kevin
362+In order to exit cleanly for vl, you can do a @emph{shutdown} inside
363+vl. vl will automatically exit when the Linux shutdown is done.
364+
365+@item
366+You can boot slightly faster by disabling the probe of non present IDE
367+interfaces. To do so, add the following options on the kernel command
368+line:
369+@example
370+ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
371+@end example
372+
373+@item
374+The example disk image is a modified version of the one made by Kevin
352375 Lawton for the plex86 Project (@url{www.plex86.org}).
353376
354377 @end enumerate
@@ -363,9 +386,6 @@ usage: vl [options] bzImage [kernel parameters...]
363386
364387 General options:
365388 @table @option
366-@item -initrd file
367-Use 'file' as initial ram disk.
368-
369389 @item -hda file
370390 @item -hdb file
371391 Use 'file' as hard disk 0 or 1 image (@xref{disk_images}).
@@ -383,6 +403,9 @@ Set virtual RAM size to @var{megs} megabytes.
383403 Set network init script [default=/etc/vl-ifup]. This script is
384404 launched to configure the host network interface (usually tun0)
385405 corresponding to the virtual NE2000 card.
406+
407+@item -initrd file
408+Use 'file' as initial ram disk.
386409 @end table
387410
388411 Debug options:
@@ -481,13 +504,17 @@ Since holes are used, the displayed size of the COW disk image is not
481504 the real one. To know it, use the @code{ls -ls} command.
482505 @end enumerate
483506
484-@section Kernel Compilation
507+@section Linux Kernel Compilation
508+
509+You should be able to use any kernel with QEMU provided you make the
510+following changes (only 2.4.x and 2.5.x were tested):
485511
486-You can use any Linux kernel within QEMU provided it is mapped at
487-address 0x90000000 (the default is 0xc0000000). You must modify only two
488-lines in the kernel source:
512+@enumerate
513+@item
514+The kernel must be mapped at 0x90000000 (the default is
515+0xc0000000). You must modify only two lines in the kernel source:
489516
490-In asm/page.h, replace
517+In @file{include/asm/page.h}, replace
491518 @example
492519 #define __PAGE_OFFSET (0xc0000000)
493520 @end example
@@ -496,7 +523,7 @@ by
496523 #define __PAGE_OFFSET (0x90000000)
497524 @end example
498525
499-And in arch/i386/vmlinux.lds, replace
526+And in @file{arch/i386/vmlinux.lds}, replace
500527 @example
501528 . = 0xc0000000 + 0x100000;
502529 @end example
@@ -505,22 +532,25 @@ by
505532 . = 0x90000000 + 0x100000;
506533 @end example
507534
508-The file config-2.4.20 gives the configuration of the example kernel.
509-
510-Just type
535+@item
536+If you want to enable SMP (Symmetric Multi-Processing) support, you
537+must make the following change in @file{include/asm/fixmap.h}. Replace
511538 @example
512-make bzImage
539+#define FIXADDR_TOP (0xffffX000UL)
513540 @end example
541+by
542+@example
543+#define FIXADDR_TOP (0xa7ffX000UL)
544+@end example
545+(X is 'e' or 'f' depending on the kernel version). Although you can
546+use an SMP kernel with QEMU, it only supports one CPU.
514547
515-As you would do to make a real kernel. Then you can use with QEMU
516-exactly the same kernel as you would boot on your PC (in
517-@file{arch/i386/boot/bzImage}).
518-
548+@item
519549 If you are not using a 2.5 kernel as host kernel but if you use a target
520550 2.5 kernel, you must also ensure that the 'HZ' define is set to 100
521551 (1000 is the default) as QEMU cannot currently emulate timers at
522552 frequencies greater than 100 Hz on host Linux systems < 2.5. In
523-asm/param.h, replace:
553+@file{include/asm/param.h}, replace:
524554
525555 @example
526556 # define HZ 1000 /* Internal kernel timer frequency */
@@ -530,8 +560,18 @@ by
530560 # define HZ 100 /* Internal kernel timer frequency */
531561 @end example
532562
533-If you have problems running your kernel, verify that neither the SMP nor
534-HIGHMEM configuration options are activated.
563+@end enumerate
564+
565+The file config-2.x.x gives the configuration of the example kernels.
566+
567+Just type
568+@example
569+make bzImage
570+@end example
571+
572+As you would do to make a real kernel. Then you can use with QEMU
573+exactly the same kernel as you would boot on your PC (in
574+@file{arch/i386/boot/bzImage}).
535575
536576 @section PC Emulation
537577
@@ -733,7 +773,7 @@ Correct translated code invalidation is done efficiently by maintaining
733773 a linked list of every translated block contained in a given page. Other
734774 linked lists are also maintained to undo direct block chaining.
735775
736-Althought the overhead of doing @code{mprotect()} calls is important,
776+Although the overhead of doing @code{mprotect()} calls is important,
737777 most MSDOS programs can be emulated at reasonnable speed with QEMU and
738778 DOSEMU.
739779
@@ -802,7 +842,7 @@ reentrancy.
802842
803843 @section Self-virtualization
804844
805-QEMU was conceived so that ultimately it can emulate itself. Althought
845+QEMU was conceived so that ultimately it can emulate itself. Although
806846 it is not very useful, it is an important test to show the power of the
807847 emulator.
808848
--- a/vlmkcow.c
+++ b/vlmkcow.c
@@ -85,7 +85,8 @@ int cow_create(int cow_fd, const char *image_filename,
8585
8686 void help(void)
8787 {
88- printf("usage vlmkcow [-h] [-f disk_image] cow_image [cow_size]\n"
88+ printf("vlmkcow version " QEMU_VERSION ", Copyright (c) 2003 Fabrice Bellard\n"
89+ "usage: vlmkcow [-h] [-f disk_image] cow_image [cow_size]\n"
8990 "Create a Copy On Write disk image from an optional raw disk image\n"
9091 "\n"
9192 "-f disk_image set the raw disk image name\n"