]> git.proxmox.com Git - qemu.git/blame - linux-2.6-qemu-fast.patch
BMDMA support - CDROM fixes
[qemu.git] / linux-2.6-qemu-fast.patch
CommitLineData
1f673135
FB
1diff -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
2--- .32324-linux-2.6.0/arch/i386/Kconfig 2003-10-09 18:02:48.000000000 +1000
3+++ .32324-linux-2.6.0.updated/arch/i386/Kconfig 2003-12-26 16:46:49.000000000 +1100
4@@ -307,6 +307,14 @@ config X86_GENERIC
5 when it has moderate overhead. This is intended for generic
6 distributions kernels.
7
8+config QEMU
9+ bool "Kernel to run under QEMU"
10+ depends on EXPERIMENTAL
11+ help
12+ Select this if you want to boot the kernel inside qemu-fast,
13+ the non-mmu version of the x86 emulator. See
14+ <http://fabrice.bellard.free.fr/qemu/>. Say N.
15+
16 #
17 # Define implied options from the CPU selection here
18 #
19diff -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
20--- .32324-linux-2.6.0/arch/i386/kernel/Makefile 2003-09-29 10:25:15.000000000 +1000
21+++ .32324-linux-2.6.0.updated/arch/i386/kernel/Makefile 2003-12-26 16:46:49.000000000 +1100
22@@ -46,12 +46,14 @@ quiet_cmd_syscall = SYSCALL $@
23 cmd_syscall = $(CC) -nostdlib $(SYSCFLAGS_$(@F)) \
24 -Wl,-T,$(filter-out FORCE,$^) -o $@
25
26+export AFLAGS_vsyscall.lds.o += -P -C -U$(ARCH)
27+
28 vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1
29 SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags)
30 SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags)
31
32 $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \
33-$(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
34+$(obj)/vsyscall-%.so: $(src)/vsyscall.lds.s $(obj)/vsyscall-%.o FORCE
35 $(call if_changed,syscall)
36
37 # We also create a special relocatable object that should mirror the symbol
38@@ -62,5 +64,5 @@ $(obj)/built-in.o: $(obj)/vsyscall-syms.
39 $(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o
40
41 SYSCFLAGS_vsyscall-syms.o = -r
42-$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds $(obj)/vsyscall-sysenter.o FORCE
43+$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds.s $(obj)/vsyscall-sysenter.o FORCE
44 $(call if_changed,syscall)
45diff -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
46--- .32324-linux-2.6.0/arch/i386/kernel/vmlinux.lds.S 2003-09-22 10:27:28.000000000 +1000
47+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vmlinux.lds.S 2003-12-26 16:46:49.000000000 +1100
48@@ -3,6 +3,7 @@
49 */
50
51 #include <asm-generic/vmlinux.lds.h>
52+#include <asm/page.h>
53
54 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
55 OUTPUT_ARCH(i386)
56@@ -10,7 +11,7 @@ ENTRY(startup_32)
57 jiffies = jiffies_64;
58 SECTIONS
59 {
60- . = 0xC0000000 + 0x100000;
61+ . = __PAGE_OFFSET + 0x100000;
62 /* read-only */
63 _text = .; /* Text and read-only data */
64 .text : {
65diff -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
66--- .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds 2003-09-22 10:07:26.000000000 +1000
67+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds 1970-01-01 10:00:00.000000000 +1000
68@@ -1,67 +0,0 @@
69-/*
70- * Linker script for vsyscall DSO. The vsyscall page is an ELF shared
71- * object prelinked to its virtual address, and with only one read-only
72- * segment (that fits in one page). This script controls its layout.
73- */
74-
75-/* This must match <asm/fixmap.h>. */
76-VSYSCALL_BASE = 0xffffe000;
77-
78-SECTIONS
79-{
80- . = VSYSCALL_BASE + SIZEOF_HEADERS;
81-
82- .hash : { *(.hash) } :text
83- .dynsym : { *(.dynsym) }
84- .dynstr : { *(.dynstr) }
85- .gnu.version : { *(.gnu.version) }
86- .gnu.version_d : { *(.gnu.version_d) }
87- .gnu.version_r : { *(.gnu.version_r) }
88-
89- /* This linker script is used both with -r and with -shared.
90- For the layouts to match, we need to skip more than enough
91- space for the dynamic symbol table et al. If this amount
92- is insufficient, ld -shared will barf. Just increase it here. */
93- . = VSYSCALL_BASE + 0x400;
94-
95- .text : { *(.text) } :text =0x90909090
96-
97- .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr
98- .eh_frame : { KEEP (*(.eh_frame)) } :text
99- .dynamic : { *(.dynamic) } :text :dynamic
100- .useless : {
101- *(.got.plt) *(.got)
102- *(.data .data.* .gnu.linkonce.d.*)
103- *(.dynbss)
104- *(.bss .bss.* .gnu.linkonce.b.*)
105- } :text
106-}
107-
108-/*
109- * We must supply the ELF program headers explicitly to get just one
110- * PT_LOAD segment, and set the flags explicitly to make segments read-only.
111- */
112-PHDRS
113-{
114- text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */
115- dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
116- eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */
117-}
118-
119-/*
120- * This controls what symbols we export from the DSO.
121- */
122-VERSION
123-{
124- LINUX_2.5 {
125- global:
126- __kernel_vsyscall;
127- __kernel_sigreturn;
128- __kernel_rt_sigreturn;
129-
130- local: *;
131- };
132-}
133-
134-/* The ELF entry point can be used to set the AT_SYSINFO value. */
135-ENTRY(__kernel_vsyscall);
136diff -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
137--- .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds.S 1970-01-01 10:00:00.000000000 +1000
138+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds.S 2003-12-26 16:46:49.000000000 +1100
139@@ -0,0 +1,67 @@
140+/*
141+ * Linker script for vsyscall DSO. The vsyscall page is an ELF shared
142+ * object prelinked to its virtual address, and with only one read-only
143+ * segment (that fits in one page). This script controls its layout.
144+ */
145+#include <asm/fixmap.h>
146+
147+VSYSCALL_BASE = __FIXADDR_TOP - 0x1000;
148+
149+SECTIONS
150+{
151+ . = VSYSCALL_BASE + SIZEOF_HEADERS;
152+
153+ .hash : { *(.hash) } :text
154+ .dynsym : { *(.dynsym) }
155+ .dynstr : { *(.dynstr) }
156+ .gnu.version : { *(.gnu.version) }
157+ .gnu.version_d : { *(.gnu.version_d) }
158+ .gnu.version_r : { *(.gnu.version_r) }
159+
160+ /* This linker script is used both with -r and with -shared.
161+ For the layouts to match, we need to skip more than enough
162+ space for the dynamic symbol table et al. If this amount
163+ is insufficient, ld -shared will barf. Just increase it here. */
164+ . = VSYSCALL_BASE + 0x400;
165+
166+ .text : { *(.text) } :text =0x90909090
167+
168+ .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr
169+ .eh_frame : { KEEP (*(.eh_frame)) } :text
170+ .dynamic : { *(.dynamic) } :text :dynamic
171+ .useless : {
172+ *(.got.plt) *(.got)
173+ *(.data .data.* .gnu.linkonce.d.*)
174+ *(.dynbss)
175+ *(.bss .bss.* .gnu.linkonce.b.*)
176+ } :text
177+}
178+
179+/*
180+ * We must supply the ELF program headers explicitly to get just one
181+ * PT_LOAD segment, and set the flags explicitly to make segments read-only.
182+ */
183+PHDRS
184+{
185+ text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */
186+ dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
187+ eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */
188+}
189+
190+/*
191+ * This controls what symbols we export from the DSO.
192+ */
193+VERSION
194+{
195+ LINUX_2.5 {
196+ global:
197+ __kernel_vsyscall;
198+ __kernel_sigreturn;
199+ __kernel_rt_sigreturn;
200+
201+ local: *;
202+ };
203+}
204+
205+/* The ELF entry point can be used to set the AT_SYSINFO value. */
206+ENTRY(__kernel_vsyscall);
207diff -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
208--- .32324-linux-2.6.0/include/asm-i386/fixmap.h 2003-09-22 10:09:12.000000000 +1000
209+++ .32324-linux-2.6.0.updated/include/asm-i386/fixmap.h 2003-12-26 16:46:49.000000000 +1100
210@@ -14,6 +14,19 @@
211 #define _ASM_FIXMAP_H
212
213 #include <linux/config.h>
214+
215+/* used by vmalloc.c, vsyscall.lds.S.
216+ *
217+ * Leave one empty page between vmalloc'ed areas and
218+ * the start of the fixmap.
219+ */
220+#ifdef CONFIG_QEMU
221+#define __FIXADDR_TOP 0xa7fff000
222+#else
223+#define __FIXADDR_TOP 0xfffff000
224+#endif
225+
226+#ifndef __ASSEMBLY__
227 #include <linux/kernel.h>
228 #include <asm/acpi.h>
229 #include <asm/apicdef.h>
230@@ -94,13 +107,8 @@ extern void __set_fixmap (enum fixed_add
231 #define clear_fixmap(idx) \
232 __set_fixmap(idx, 0, __pgprot(0))
233
234-/*
235- * used by vmalloc.c.
236- *
237- * Leave one empty page between vmalloc'ed areas and
238- * the start of the fixmap.
239- */
240-#define FIXADDR_TOP (0xfffff000UL)
241+#define FIXADDR_TOP ((unsigned long)__FIXADDR_TOP)
242+
243 #define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT)
244 #define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
245
246@@ -145,4 +153,5 @@ static inline unsigned long virt_to_fix(
247 return __virt_to_fix(vaddr);
248 }
249
250+#endif /* !__ASSEMBLY__ */
251 #endif
252diff -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
253--- .32324-linux-2.6.0/include/asm-i386/page.h 2003-09-22 10:06:42.000000000 +1000
254+++ .32324-linux-2.6.0.updated/include/asm-i386/page.h 2003-12-26 16:46:49.000000000 +1100
255@@ -10,10 +10,10 @@
256 #define LARGE_PAGE_SIZE (1UL << PMD_SHIFT)
257
258 #ifdef __KERNEL__
259-#ifndef __ASSEMBLY__
260-
261 #include <linux/config.h>
262
263+#ifndef __ASSEMBLY__
264+
265 #ifdef CONFIG_X86_USE_3DNOW
266
267 #include <asm/mmx.h>
268@@ -115,12 +115,19 @@ static __inline__ int get_order(unsigned
269 #endif /* __ASSEMBLY__ */
270
271 #ifdef __ASSEMBLY__
272+#ifdef CONFIG_QEMU
273+#define __PAGE_OFFSET (0x90000000)
274+#else
275 #define __PAGE_OFFSET (0xC0000000)
276+#endif /* QEMU */
277+#else
278+#ifdef CONFIG_QEMU
279+#define __PAGE_OFFSET (0x90000000UL)
280 #else
281 #define __PAGE_OFFSET (0xC0000000UL)
282+#endif /* QEMU */
283 #endif
284
285-
286 #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
287 #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE)
288 #define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE)
289diff -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
290--- .32324-linux-2.6.0/include/asm-i386/param.h 2003-09-21 17:26:06.000000000 +1000
291+++ .32324-linux-2.6.0.updated/include/asm-i386/param.h 2003-12-26 16:46:49.000000000 +1100
292@@ -2,7 +2,12 @@
293 #define _ASMi386_PARAM_H
294
295 #ifdef __KERNEL__
296-# define HZ 1000 /* Internal kernel timer frequency */
297+# include <linux/config.h>
298+# ifdef CONFIG_QEMU
299+# define HZ 100
300+# else
301+# define HZ 1000 /* Internal kernel timer frequency */
302+# endif
303 # define USER_HZ 100 /* .. some user interfaces are in "ticks" */
304 # define CLOCKS_PER_SEC (USER_HZ) /* like times() */
305 #endif