diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-12-08 23:48:11 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-12-08 23:48:11 +0000 |
commit | a483b654b5663ee506b6ecb1fa4561d5f4a31e4b (patch) | |
tree | fd4a927cf905f0859264552a1398a3d027f3f299 | |
parent | 6a78ece5c5add210059a26719c863d3af55befb0 (diff) | |
download | hqemu-a483b654b5663ee506b6ecb1fa4561d5f4a31e4b.zip hqemu-a483b654b5663ee506b6ecb1fa4561d5f4a31e4b.tar.gz |
updated guest kernel patch for qemu-fast (Martin Koniczek)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1170 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | linux-2.6-qemu-fast.patch | 305 | ||||
-rw-r--r-- | linux-2.6.9-qemu-fast.patch | 70 |
2 files changed, 70 insertions, 305 deletions
diff --git a/linux-2.6-qemu-fast.patch b/linux-2.6-qemu-fast.patch deleted file mode 100644 index 34ca5a2..0000000 --- a/linux-2.6-qemu-fast.patch +++ /dev/null @@ -1,305 +0,0 @@ -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/Kconfig .32324-linux-2.6.0.updated/arch/i386/Kconfig ---- .32324-linux-2.6.0/arch/i386/Kconfig 2003-10-09 18:02:48.000000000 +1000 -+++ .32324-linux-2.6.0.updated/arch/i386/Kconfig 2003-12-26 16:46:49.000000000 +1100 -@@ -307,6 +307,14 @@ config X86_GENERIC - when it has moderate overhead. This is intended for generic - distributions kernels. - -+config QEMU -+ bool "Kernel to run under QEMU" -+ depends on EXPERIMENTAL -+ help -+ Select this if you want to boot the kernel inside qemu-fast, -+ the non-mmu version of the x86 emulator. See -+ <http://fabrice.bellard.free.fr/qemu/>. Say N. -+ - # - # Define implied options from the CPU selection here - # -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/Makefile .32324-linux-2.6.0.updated/arch/i386/kernel/Makefile ---- .32324-linux-2.6.0/arch/i386/kernel/Makefile 2003-09-29 10:25:15.000000000 +1000 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/Makefile 2003-12-26 16:46:49.000000000 +1100 -@@ -46,12 +46,14 @@ quiet_cmd_syscall = SYSCALL $@ - cmd_syscall = $(CC) -nostdlib $(SYSCFLAGS_$(@F)) \ - -Wl,-T,$(filter-out FORCE,$^) -o $@ - -+export AFLAGS_vsyscall.lds.o += -P -C -U$(ARCH) -+ - vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 - SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags) - SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags) - - $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \ --$(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE -+$(obj)/vsyscall-%.so: $(src)/vsyscall.lds.s $(obj)/vsyscall-%.o FORCE - $(call if_changed,syscall) - - # We also create a special relocatable object that should mirror the symbol -@@ -62,5 +64,5 @@ $(obj)/built-in.o: $(obj)/vsyscall-syms. - $(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o - - SYSCFLAGS_vsyscall-syms.o = -r --$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds $(obj)/vsyscall-sysenter.o FORCE -+$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds.s $(obj)/vsyscall-sysenter.o FORCE - $(call if_changed,syscall) -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/vmlinux.lds.S .32324-linux-2.6.0.updated/arch/i386/kernel/vmlinux.lds.S ---- .32324-linux-2.6.0/arch/i386/kernel/vmlinux.lds.S 2003-09-22 10:27:28.000000000 +1000 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vmlinux.lds.S 2003-12-26 16:46:49.000000000 +1100 -@@ -3,6 +3,7 @@ - */ - - #include <asm-generic/vmlinux.lds.h> -+#include <asm/page.h> - - OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") - OUTPUT_ARCH(i386) -@@ -10,7 +11,7 @@ ENTRY(startup_32) - jiffies = jiffies_64; - SECTIONS - { -- . = 0xC0000000 + 0x100000; -+ . = __PAGE_OFFSET + 0x100000; - /* read-only */ - _text = .; /* Text and read-only data */ - .text : { -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds ---- .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds 2003-09-22 10:07:26.000000000 +1000 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds 1970-01-01 10:00:00.000000000 +1000 -@@ -1,67 +0,0 @@ --/* -- * Linker script for vsyscall DSO. The vsyscall page is an ELF shared -- * object prelinked to its virtual address, and with only one read-only -- * segment (that fits in one page). This script controls its layout. -- */ -- --/* This must match <asm/fixmap.h>. */ --VSYSCALL_BASE = 0xffffe000; -- --SECTIONS --{ -- . = VSYSCALL_BASE + SIZEOF_HEADERS; -- -- .hash : { *(.hash) } :text -- .dynsym : { *(.dynsym) } -- .dynstr : { *(.dynstr) } -- .gnu.version : { *(.gnu.version) } -- .gnu.version_d : { *(.gnu.version_d) } -- .gnu.version_r : { *(.gnu.version_r) } -- -- /* This linker script is used both with -r and with -shared. -- For the layouts to match, we need to skip more than enough -- space for the dynamic symbol table et al. If this amount -- is insufficient, ld -shared will barf. Just increase it here. */ -- . = VSYSCALL_BASE + 0x400; -- -- .text : { *(.text) } :text =0x90909090 -- -- .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr -- .eh_frame : { KEEP (*(.eh_frame)) } :text -- .dynamic : { *(.dynamic) } :text :dynamic -- .useless : { -- *(.got.plt) *(.got) -- *(.data .data.* .gnu.linkonce.d.*) -- *(.dynbss) -- *(.bss .bss.* .gnu.linkonce.b.*) -- } :text --} -- --/* -- * We must supply the ELF program headers explicitly to get just one -- * PT_LOAD segment, and set the flags explicitly to make segments read-only. -- */ --PHDRS --{ -- text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */ -- dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ -- eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */ --} -- --/* -- * This controls what symbols we export from the DSO. -- */ --VERSION --{ -- LINUX_2.5 { -- global: -- __kernel_vsyscall; -- __kernel_sigreturn; -- __kernel_rt_sigreturn; -- -- local: *; -- }; --} -- --/* The ELF entry point can be used to set the AT_SYSINFO value. */ --ENTRY(__kernel_vsyscall); -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds.S .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds.S ---- .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds.S 1970-01-01 10:00:00.000000000 +1000 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds.S 2003-12-26 16:46:49.000000000 +1100 -@@ -0,0 +1,67 @@ -+/* -+ * Linker script for vsyscall DSO. The vsyscall page is an ELF shared -+ * object prelinked to its virtual address, and with only one read-only -+ * segment (that fits in one page). This script controls its layout. -+ */ -+#include <asm/fixmap.h> -+ -+VSYSCALL_BASE = __FIXADDR_TOP - 0x1000; -+ -+SECTIONS -+{ -+ . = VSYSCALL_BASE + SIZEOF_HEADERS; -+ -+ .hash : { *(.hash) } :text -+ .dynsym : { *(.dynsym) } -+ .dynstr : { *(.dynstr) } -+ .gnu.version : { *(.gnu.version) } -+ .gnu.version_d : { *(.gnu.version_d) } -+ .gnu.version_r : { *(.gnu.version_r) } -+ -+ /* This linker script is used both with -r and with -shared. -+ For the layouts to match, we need to skip more than enough -+ space for the dynamic symbol table et al. If this amount -+ is insufficient, ld -shared will barf. Just increase it here. */ -+ . = VSYSCALL_BASE + 0x400; -+ -+ .text : { *(.text) } :text =0x90909090 -+ -+ .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr -+ .eh_frame : { KEEP (*(.eh_frame)) } :text -+ .dynamic : { *(.dynamic) } :text :dynamic -+ .useless : { -+ *(.got.plt) *(.got) -+ *(.data .data.* .gnu.linkonce.d.*) -+ *(.dynbss) -+ *(.bss .bss.* .gnu.linkonce.b.*) -+ } :text -+} -+ -+/* -+ * We must supply the ELF program headers explicitly to get just one -+ * PT_LOAD segment, and set the flags explicitly to make segments read-only. -+ */ -+PHDRS -+{ -+ text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */ -+ dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ -+ eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */ -+} -+ -+/* -+ * This controls what symbols we export from the DSO. -+ */ -+VERSION -+{ -+ LINUX_2.5 { -+ global: -+ __kernel_vsyscall; -+ __kernel_sigreturn; -+ __kernel_rt_sigreturn; -+ -+ local: *; -+ }; -+} -+ -+/* The ELF entry point can be used to set the AT_SYSINFO value. */ -+ENTRY(__kernel_vsyscall); -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/include/asm-i386/fixmap.h .32324-linux-2.6.0.updated/include/asm-i386/fixmap.h ---- .32324-linux-2.6.0/include/asm-i386/fixmap.h 2003-09-22 10:09:12.000000000 +1000 -+++ .32324-linux-2.6.0.updated/include/asm-i386/fixmap.h 2003-12-26 16:46:49.000000000 +1100 -@@ -14,6 +14,19 @@ - #define _ASM_FIXMAP_H - - #include <linux/config.h> -+ -+/* used by vmalloc.c, vsyscall.lds.S. -+ * -+ * Leave one empty page between vmalloc'ed areas and -+ * the start of the fixmap. -+ */ -+#ifdef CONFIG_QEMU -+#define __FIXADDR_TOP 0xa7fff000 -+#else -+#define __FIXADDR_TOP 0xfffff000 -+#endif -+ -+#ifndef __ASSEMBLY__ - #include <linux/kernel.h> - #include <asm/acpi.h> - #include <asm/apicdef.h> -@@ -94,13 +107,8 @@ extern void __set_fixmap (enum fixed_add - #define clear_fixmap(idx) \ - __set_fixmap(idx, 0, __pgprot(0)) - --/* -- * used by vmalloc.c. -- * -- * Leave one empty page between vmalloc'ed areas and -- * the start of the fixmap. -- */ --#define FIXADDR_TOP (0xfffff000UL) -+#define FIXADDR_TOP ((unsigned long)__FIXADDR_TOP) -+ - #define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT) - #define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE) - -@@ -145,4 +153,5 @@ static inline unsigned long virt_to_fix( - return __virt_to_fix(vaddr); - } - -+#endif /* !__ASSEMBLY__ */ - #endif -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/include/asm-i386/page.h .32324-linux-2.6.0.updated/include/asm-i386/page.h ---- .32324-linux-2.6.0/include/asm-i386/page.h 2003-09-22 10:06:42.000000000 +1000 -+++ .32324-linux-2.6.0.updated/include/asm-i386/page.h 2003-12-26 16:46:49.000000000 +1100 -@@ -10,10 +10,10 @@ - #define LARGE_PAGE_SIZE (1UL << PMD_SHIFT) - - #ifdef __KERNEL__ --#ifndef __ASSEMBLY__ -- - #include <linux/config.h> - -+#ifndef __ASSEMBLY__ -+ - #ifdef CONFIG_X86_USE_3DNOW - - #include <asm/mmx.h> -@@ -115,12 +115,19 @@ static __inline__ int get_order(unsigned - #endif /* __ASSEMBLY__ */ - - #ifdef __ASSEMBLY__ -+#ifdef CONFIG_QEMU -+#define __PAGE_OFFSET (0x90000000) -+#else - #define __PAGE_OFFSET (0xC0000000) -+#endif /* QEMU */ -+#else -+#ifdef CONFIG_QEMU -+#define __PAGE_OFFSET (0x90000000UL) - #else - #define __PAGE_OFFSET (0xC0000000UL) -+#endif /* QEMU */ - #endif - -- - #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) - #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE) - #define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE) -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/include/asm-i386/param.h .32324-linux-2.6.0.updated/include/asm-i386/param.h ---- .32324-linux-2.6.0/include/asm-i386/param.h 2003-09-21 17:26:06.000000000 +1000 -+++ .32324-linux-2.6.0.updated/include/asm-i386/param.h 2003-12-26 16:46:49.000000000 +1100 -@@ -2,7 +2,12 @@ - #define _ASMi386_PARAM_H - - #ifdef __KERNEL__ --# define HZ 1000 /* Internal kernel timer frequency */ -+# include <linux/config.h> -+# ifdef CONFIG_QEMU -+# define HZ 100 -+# else -+# define HZ 1000 /* Internal kernel timer frequency */ -+# endif - # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ - # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ - #endif diff --git a/linux-2.6.9-qemu-fast.patch b/linux-2.6.9-qemu-fast.patch new file mode 100644 index 0000000..f8ecd0b --- /dev/null +++ b/linux-2.6.9-qemu-fast.patch @@ -0,0 +1,70 @@ +--- linux-2.6.9/arch/i386/Kconfig 2004-10-18 23:53:22.000000000 +0200 ++++ linux-2.6.9-qemu/arch/i386/Kconfig 2004-12-07 21:56:49.000000000 +0100 +@@ -337,6 +337,14 @@ config X86_GENERIC + + endif + ++config QEMU ++ bool "Kernel to run under QEMU" ++ depends on EXPERIMENTAL ++ help ++ Select this if you want to boot the kernel inside qemu-fast, ++ the non-mmu version of the x86 emulator. See ++ <http://fabrice.bellard.free.fr/qemu/>. Say N. ++ + # + # Define implied options from the CPU selection here + # +--- linux-2.6.9/include/asm-i386/fixmap.h 2004-10-18 23:53:08.000000000 +0200 ++++ linux-2.6.9-qemu/include/asm-i386/fixmap.h 2004-12-07 23:16:11.000000000 +0100 +@@ -20,7 +20,11 @@ + * Leave one empty page between vmalloc'ed areas and + * the start of the fixmap. + */ ++#ifdef CONFIG_QEMU ++#define __FIXADDR_TOP 0xa7fff000 ++#else + #define __FIXADDR_TOP 0xfffff000 ++#endif + + #ifndef __ASSEMBLY__ + #include <linux/kernel.h> +--- linux-2.6.9/include/asm-i386/page.h 2004-10-18 23:53:22.000000000 +0200 ++++ linux-2.6.9-qemu/include/asm-i386/page.h 2004-12-07 21:56:49.000000000 +0100 +@@ -121,12 +121,19 @@ extern int sysctl_legacy_va_layout; + #endif /* __ASSEMBLY__ */ + + #ifdef __ASSEMBLY__ ++#ifdef CONFIG_QEMU ++#define __PAGE_OFFSET (0x90000000) ++#else + #define __PAGE_OFFSET (0xC0000000) ++#endif /* QEMU */ ++#else ++#ifdef CONFIG_QEMU ++#define __PAGE_OFFSET (0x90000000UL) + #else + #define __PAGE_OFFSET (0xC0000000UL) ++#endif /* QEMU */ + #endif + +- + #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) + #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE) + #define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE) +--- linux-2.6.9/include/asm-i386/param.h 2004-10-18 23:53:24.000000000 +0200 ++++ linux-2.6.9-qemu/include/asm-i386/param.h 2004-12-07 21:56:49.000000000 +0100 +@@ -2,7 +2,12 @@ + #define _ASMi386_PARAM_H + + #ifdef __KERNEL__ +-# define HZ 1000 /* Internal kernel timer frequency */ ++# include <linux/config.h> ++# ifdef CONFIG_QEMU ++# define HZ 100 ++# else ++# define HZ 1000 /* Internal kernel timer frequency */ ++# endif + # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ + # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ + #endif |