Statistics
| Branch: | Revision:

root / linux-2.6-qemu-fast.patch @ 1f673135

History | View | Annotate | Download (10.6 kB)

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