root / linux-2.6-qemu-fast.patch @ fcc941fe
History | View | Annotate | Download (10.6 kB)
1 |
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
|
---|---|
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 |
# |
19 |
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
|
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) |
45 |
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
|
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 : { |
65 |
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
|
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);
|
136 |
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
|
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);
|
207 |
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
|
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
|
252 |
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
|
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)
|
289 |
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
|
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
|