]>
Commit | Line | Data |
---|---|---|
1f673135 FB |
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 |