]>
Commit | Line | Data |
---|---|---|
77993d39 JR |
1 | diff -urN linux-2.4.20-uml/arch/um/include/2_5compat.h linux-2.4.20-uml-o1/arch/um/include/2_5compat.h |
2 | --- linux-2.4.20-uml/arch/um/include/2_5compat.h Sat Mar 15 18:34:03 2003 | |
3 | +++ linux-2.4.20-uml-o1/arch/um/include/2_5compat.h Sat Mar 15 20:46:24 2003 | |
4 | @@ -10,7 +10,6 @@ | |
5 | ||
6 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) | |
7 | ||
8 | -#define mk_kdev(maj, min) MKDEV(maj, min) | |
9 | #define INIT_CONSOLE(dev_name, write_proc, device_proc, setup_proc, f) { \ | |
10 | name : dev_name, \ | |
11 | write : write_proc, \ | |
12 | @@ -32,12 +31,9 @@ | |
13 | #define IS_WRITE(req) ((req)->cmd == WRITE) | |
14 | #define IS_READ(req) ((req)->cmd == READ) | |
15 | ||
16 | -#define CPU(task) ((task)->processor) | |
17 | +#define CPU(task) ((task)->cpu) | |
18 | ||
19 | -#define yield() do { current->policy |= SCHED_YIELD; schedule(); } while(0) | |
20 | - | |
21 | -#define SET_PRI(task) \ | |
22 | - do { (task)->nice = 20; (task)->counter = -100; } while(0); | |
23 | +#define SET_PRI(task) do { } while(0) | |
24 | ||
25 | #else | |
26 | ||
b3bed06d JR |
27 | diff -u um/arch/um/include/kern_util.h um/arch/um/include/kern_util.h |
28 | --- um/arch/um/include/kern_util.h | |
29 | +++ um/arch/um/include/kern_util.h | |
30 | @@ -106,7 +106,7 @@ | |
31 | extern void arch_switch(void); | |
32 | extern void free_irq(unsigned int, void *); | |
33 | extern int um_in_interrupt(void); | |
34 | -extern int cpu(void); | |
35 | +extern int um_cpu(void); | |
36 | #endif | |
37 | ||
38 | /* | |
77993d39 JR |
39 | diff -urN linux-2.4.20-uml/arch/um/include/user_util.h linux-2.4.20-uml-o1/arch/um/include/user_util.h |
40 | --- linux-2.4.20-uml/arch/um/include/user_util.h Sat Mar 15 18:34:03 2003 | |
41 | +++ linux-2.4.20-uml-o1/arch/um/include/user_util.h Sat Mar 15 19:58:20 2003 | |
42 | @@ -89,6 +89,7 @@ | |
43 | extern int arch_handle_signal(int sig, union uml_pt_regs *regs); | |
44 | extern int arch_fixup(unsigned long address, void *sc_ptr); | |
45 | extern int can_do_skas(void); | |
46 | +extern void forward_pending_sigio(int target); | |
47 | ||
48 | #endif | |
49 | ||
50 | diff -urN linux-2.4.20-uml/arch/um/kernel/irq.c linux-2.4.20-uml-o1/arch/um/kernel/irq.c | |
51 | --- linux-2.4.20-uml/arch/um/kernel/irq.c Sat Mar 15 18:34:03 2003 | |
52 | +++ linux-2.4.20-uml-o1/arch/um/kernel/irq.c Sat Mar 15 20:30:22 2003 | |
53 | @@ -151,10 +151,12 @@ | |
54 | ||
55 | status = 1; /* Force the "do bottom halves" bit */ | |
56 | ||
57 | - if (!(action->flags & SA_INTERRUPT)) | |
58 | - __sti(); | |
59 | - | |
60 | do { | |
61 | + if (!(action->flags & SA_INTERRUPT)) | |
62 | + __sti(); | |
63 | + else | |
64 | + __cli(); | |
65 | + | |
66 | status |= action->flags; | |
67 | action->handler(irq, action->dev_id, regs); | |
68 | action = action->next; | |
69 | diff -urN linux-2.4.20-uml/arch/um/kernel/process.c linux-2.4.20-uml-o1/arch/um/kernel/process.c | |
70 | --- linux-2.4.20-uml/arch/um/kernel/process.c Sat Mar 15 18:34:03 2003 | |
71 | +++ linux-2.4.20-uml-o1/arch/um/kernel/process.c Sat Mar 15 19:59:12 2003 | |
72 | @@ -275,6 +275,16 @@ | |
73 | #endif | |
74 | } | |
75 | ||
76 | +void forward_pending_sigio(int target) | |
77 | +{ | |
78 | + sigset_t sigs; | |
79 | + | |
80 | + if(sigpending(&sigs)) | |
81 | + panic("forward_pending_sigio : sigpending failed"); | |
82 | + if(sigismember(&sigs, SIGIO)) | |
83 | + kill(target, SIGIO); | |
84 | +} | |
85 | + | |
86 | /* | |
87 | * Overrides for Emacs so that we follow Linus's tabbing style. | |
88 | * Emacs will notice this stuff at the end of the file and automatically | |
b3bed06d JR |
89 | diff -u um/arch/um/kernel/process_kern.c um/arch/um/kernel/process_kern.c |
90 | --- um/arch/um/kernel/process_kern.c | |
91 | +++ um/arch/um/kernel/process_kern.c | |
92 | @@ -124,7 +124,7 @@ | |
93 | { | |
94 | struct task_struct *task = t; | |
95 | ||
96 | - cpu_tasks[task->processor] = ((struct cpu_task) | |
97 | + cpu_tasks[task->cpu] = ((struct cpu_task) | |
98 | { external_pid(task), task }); | |
99 | } | |
100 | ||
101 | @@ -360,7 +360,7 @@ | |
102 | int smp_sigio_handler(void) | |
103 | { | |
104 | #ifdef CONFIG_SMP | |
105 | - int cpu = current->processor; | |
106 | + int cpu = current->cpu; | |
107 | ||
108 | IPI_handler(cpu); | |
109 | if(cpu != 0) | |
110 | @@ -374,9 +374,9 @@ | |
111 | return(in_interrupt()); | |
112 | } | |
113 | ||
114 | -int cpu(void) | |
115 | +int um_cpu(void) | |
116 | { | |
117 | - return(current->processor); | |
118 | + return(current->cpu); | |
119 | } | |
120 | ||
121 | /* | |
122 | --- linux-2.4.20/arch/um/kernel/reboot.c~ Sun Mar 16 01:41:54 2003 | |
123 | +++ linux-2.4.20/arch/um/kernel/reboot.c Sun Mar 16 03:05:25 2003 | |
124 | @@ -14,15 +14,9 @@ | |
125 | #ifdef CONFIG_SMP | |
126 | static void kill_idlers(int me) | |
127 | { | |
128 | - struct task_struct *p; | |
129 | - int i; | |
130 | - | |
131 | - for(i = 0; i < sizeof(init_tasks)/sizeof(init_tasks[0]); i++){ | |
132 | - p = init_tasks[i]; | |
133 | - if((p != NULL) && (p->thread.mode.tt.extern_pid != me) && | |
134 | - (p->thread.mode.tt.extern_pid != -1)) | |
135 | - os_kill_process(p->thread.mode.tt.extern_pid, 0); | |
136 | - } | |
137 | + if((init_task.thread.mode.tt.extern_pid != me) && | |
138 | + (init_task.thread.mode.tt.extern_pid != -1)) | |
139 | + os_kill_process(init_task.thread.mode.tt.extern_pid, 0); | |
140 | } | |
141 | #endif | |
142 | ||
77993d39 JR |
143 | diff -urN linux-2.4.20-uml/arch/um/kernel/skas/process_kern.c linux-2.4.20-uml-o1/arch/um/kernel/skas/process_kern.c |
144 | --- linux-2.4.20-uml/arch/um/kernel/skas/process_kern.c Sat Mar 15 18:34:03 2003 | |
145 | +++ linux-2.4.20-uml-o1/arch/um/kernel/skas/process_kern.c Sat Mar 15 20:03:07 2003 | |
146 | @@ -47,7 +47,7 @@ | |
147 | return(current->thread.prev_sched); | |
148 | } | |
149 | ||
150 | -extern void schedule_tail(struct task_struct *prev); | |
151 | +asmlinkage void schedule_tail(task_t *prev); | |
152 | ||
153 | void new_thread_handler(int sig) | |
154 | { | |
155 | @@ -60,8 +60,10 @@ | |
156 | thread_wait(¤t->thread.mode.skas.switch_buf, | |
157 | current->thread.mode.skas.fork_buf); | |
158 | ||
159 | +#ifdef CONFIG_SMP | |
160 | if(current->thread.prev_sched != NULL) | |
161 | schedule_tail(current->thread.prev_sched); | |
162 | +#endif | |
163 | current->thread.prev_sched = NULL; | |
164 | ||
165 | n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf); | |
166 | @@ -91,8 +93,10 @@ | |
167 | current->thread.mode.skas.fork_buf); | |
168 | ||
169 | force_flush_all(); | |
170 | +#ifdef CONFIG_SMP | |
171 | if(current->thread.prev_sched != NULL) | |
172 | schedule_tail(current->thread.prev_sched); | |
173 | +#endif | |
174 | current->thread.prev_sched = NULL; | |
175 | unblock_signals(); | |
176 | ||
b3bed06d JR |
177 | @@ -137,7 +137,7 @@ |
178 | ||
179 | void init_idle_skas(void) | |
180 | { | |
181 | - cpu_tasks[current->processor].pid = os_getpid(); | |
182 | + cpu_tasks[current->cpu].pid = os_getpid(); | |
183 | } | |
184 | ||
185 | extern void start_kernel(void); | |
186 | diff -u um/arch/um/kernel/skas/trap_user.c um/arch/um/kernel/skas/trap_user.c | |
187 | --- um/arch/um/kernel/skas/trap_user.c | |
188 | +++ um/arch/um/kernel/skas/trap_user.c | |
189 | @@ -42,7 +42,7 @@ | |
190 | struct signal_info *info; | |
191 | ||
192 | if(sig == SIGVTALRM) | |
193 | - missed_ticks[cpu()]++; | |
194 | + missed_ticks[um_cpu()]++; | |
195 | regs->skas.is_user = 1; | |
196 | regs->skas.fault_addr = 0; | |
197 | regs->skas.fault_type = 0; | |
198 | --- linux-2.4.20/arch/um/kernel/smp.c~ Sat Mar 15 23:38:50 2003 | |
199 | +++ linux-2.4.20/arch/um/kernel/smp.c Sun Mar 16 01:27:45 2003 | |
200 | @@ -30,6 +30,8 @@ | |
201 | ||
202 | /* Per CPU bogomips and other parameters */ | |
203 | ||
204 | +unsigned long cache_decay_ticks = HZ/100; | |
205 | + | |
206 | /* The only piece used here is the ipi pipe, which is set before SMP is | |
207 | * started and never changed. | |
208 | */ | |
209 | @@ -97,7 +97,7 @@ | |
210 | ||
211 | printk(KERN_INFO "Stopping all CPUs..."); | |
212 | for(i = 0; i < ncpus; i++){ | |
213 | - if(i == current->processor) | |
214 | + if(i == current->cpu) | |
215 | continue; | |
216 | write(cpu_data[i].ipi_pipe[1], "S", 1); | |
217 | } | |
218 | @@ -121,10 +121,9 @@ | |
219 | int cpu, err; | |
220 | ||
221 | set_current(current); | |
222 | - del_from_runqueue(current); | |
223 | unhash_process(current); | |
224 | ||
225 | - cpu = current->processor; | |
226 | + cpu = current->cpu; | |
227 | err = os_pipe(cpu_data[cpu].ipi_pipe, 1, 1); | |
228 | if(err) | |
229 | panic("CPU#%d failed to create IPI pipe, errno = %d", cpu, | |
230 | @@ -134,8 +134,8 @@ | |
231 | current->thread.mode.tt.extern_pid); | |
232 | ||
233 | wmb(); | |
234 | - if (test_and_set_bit(current->processor, &smp_callin_map)) { | |
235 | - printk("huh, CPU#%d already present??\n", current->processor); | |
236 | + if (test_and_set_bit(current->cpu, &smp_callin_map)) { | |
237 | + printk("huh, CPU#%d already present??\n", current->cpu); | |
238 | BUG(); | |
239 | } | |
240 | ||
241 | @@ -142,7 +142,6 @@ | |
242 | while (!atomic_read(&smp_commenced)) | |
243 | cpu_relax(); | |
244 | ||
245 | - init_idle(); | |
246 | cpu_idle(); | |
247 | return(0); | |
248 | } | |
249 | @@ -161,10 +160,8 @@ | |
250 | ||
251 | cpu_tasks[cpu].pid = new_task->thread.mode.tt.extern_pid; | |
252 | cpu_tasks[cpu].task = new_task; | |
253 | - init_tasks[cpu] = new_task; | |
254 | - new_task->processor = cpu; | |
255 | + init_idle(new_task, cpu); | |
256 | new_task->cpus_allowed = 1 << cpu; | |
257 | - new_task->cpus_runnable = new_task->cpus_allowed; | |
258 | CHOOSE_MODE(write(new_task->thread.mode.tt.switch_pipe[1], &c, | |
259 | sizeof(c)), | |
260 | ({ panic("skas mode doesn't support SMP"); })); | |
261 | @@ -296,7 +296,7 @@ | |
262 | info = _info; | |
263 | ||
264 | for (i=0;i<NR_CPUS;i++) | |
265 | - if (i != current->processor && test_bit(i, &cpu_online_map)) | |
266 | + if (i != current->cpu && test_bit(i, &cpu_online_map)) | |
267 | write(cpu_data[i].ipi_pipe[1], "C", 1); | |
268 | ||
269 | while (atomic_read(&scf_started) != cpus) | |
77993d39 JR |
270 | diff -urN linux-2.4.20-uml/arch/um/kernel/sys_call_table.c linux-2.4.20-uml-o1/arch/um/kernel/sys_call_table.c |
271 | --- linux-2.4.20-uml/arch/um/kernel/sys_call_table.c Sat Mar 15 18:34:03 2003 | |
272 | +++ linux-2.4.20-uml-o1/arch/um/kernel/sys_call_table.c Sat Mar 15 19:41:51 2003 | |
273 | @@ -153,6 +153,7 @@ | |
274 | extern syscall_handler_t sys_sched_getparam; | |
275 | extern syscall_handler_t sys_sched_setscheduler; | |
276 | extern syscall_handler_t sys_sched_getscheduler; | |
277 | +extern syscall_handler_t sys_sched_yield; | |
278 | extern syscall_handler_t sys_sched_get_priority_max; | |
279 | extern syscall_handler_t sys_sched_get_priority_min; | |
280 | extern syscall_handler_t sys_sched_rr_get_interval; | |
281 | @@ -261,7 +262,7 @@ | |
282 | ||
283 | /* declared differently in kern_util.h */ | |
284 | [ __NR_execve ] = (syscall_handler_t *) sys_execve, | |
285 | - [ __NR_chdir ] = sys_chdir, | |
286 | + [ __NR_chdir ] = (syscall_handler_t *) sys_chdir, | |
287 | [ __NR_time ] = um_time, | |
288 | [ __NR_mknod ] = sys_mknod, | |
289 | [ __NR_chmod ] = sys_chmod, | |
290 | @@ -306,15 +307,15 @@ | |
291 | [ __NR_umount2 ] = sys_umount, | |
292 | [ __NR_lock ] = sys_ni_syscall, | |
293 | [ __NR_ioctl ] = sys_ioctl, | |
294 | - [ __NR_fcntl ] = sys_fcntl, | |
295 | + [ __NR_fcntl ] = (syscall_handler_t *) sys_fcntl, | |
296 | [ __NR_mpx ] = sys_ni_syscall, | |
297 | [ __NR_setpgid ] = sys_setpgid, | |
298 | [ __NR_ulimit ] = sys_ni_syscall, | |
299 | [ __NR_oldolduname ] = sys_olduname, | |
300 | [ __NR_umask ] = sys_umask, | |
301 | - [ __NR_chroot ] = sys_chroot, | |
302 | + [ __NR_chroot ] = (syscall_handler_t *) sys_chroot, | |
303 | [ __NR_ustat ] = sys_ustat, | |
304 | - [ __NR_dup2 ] = sys_dup2, | |
305 | + [ __NR_dup2 ] = (syscall_handler_t *) sys_dup2, | |
306 | [ __NR_getppid ] = sys_getppid, | |
307 | [ __NR_getpgrp ] = sys_getpgrp, | |
308 | [ __NR_setsid ] = (syscall_handler_t *) sys_setsid, | |
b3bed06d JR |
309 | --- linux-2.4.20/arch/um/kernel/time_kern.c~ Sat Mar 15 23:38:50 2003 |
310 | +++ linux-2.4.20/arch/um/kernel/time_kern.c Sun Mar 16 01:20:23 2003 | |
311 | @@ -37,7 +37,7 @@ | |
312 | ||
313 | void timer_irq(union uml_pt_regs *regs) | |
314 | { | |
315 | - int cpu = current->processor, ticks = missed_ticks[cpu]; | |
316 | + int cpu = current->cpu, ticks = missed_ticks[cpu]; | |
317 | ||
318 | if(!timer_irq_inited) return; | |
319 | missed_ticks[cpu] = 0; | |
320 | @@ -123,7 +123,7 @@ | |
321 | #ifdef CONFIG_SMP | |
322 | update_process_times(user_context(UPT_SP(regs))); | |
323 | #endif | |
324 | - if(current->processor == 0) | |
325 | + if(current->cpu == 0) | |
326 | timer_irq(regs); | |
327 | } | |
328 | ||
329 | diff -u um/arch/um/kernel/trap_user.c um/arch/um/kernel/trap_user.c | |
330 | --- um/arch/um/kernel/trap_user.c | |
331 | +++ um/arch/um/kernel/trap_user.c | |
332 | @@ -107,7 +107,7 @@ | |
333 | void alarm_handler(int sig, struct sigcontext sc) | |
334 | { | |
335 | if(!timer_irq_inited) return; | |
336 | - missed_ticks[cpu()]++; | |
337 | + missed_ticks[um_cpu()]++; | |
338 | ||
339 | if(sig == SIGALRM) | |
340 | switch_timers(0); | |
341 | --- linux-2.4.20/arch/um/kernel/tt/exec_kern.c~ Sat Mar 15 23:38:50 2003 | |
342 | +++ linux-2.4.20/arch/um/kernel/tt/exec_kern.c Sun Mar 16 01:12:57 2003 | |
343 | @@ -46,7 +46,7 @@ | |
344 | do_exit(SIGKILL); | |
345 | } | |
346 | ||
347 | - if(current->processor == 0) | |
348 | + if(current->cpu == 0) | |
349 | forward_interrupts(new_pid); | |
350 | current->thread.request.op = OP_EXEC; | |
351 | current->thread.request.u.exec.pid = new_pid; | |
77993d39 JR |
352 | diff -urN linux-2.4.20-uml/arch/um/kernel/tt/process_kern.c linux-2.4.20-uml-o1/arch/um/kernel/tt/process_kern.c |
353 | --- linux-2.4.20-uml/arch/um/kernel/tt/process_kern.c Sat Mar 15 18:34:04 2003 | |
354 | +++ linux-2.4.20-uml-o1/arch/um/kernel/tt/process_kern.c Sat Mar 15 20:06:05 2003 | |
355 | @@ -29,10 +29,6 @@ | |
356 | unsigned long flags; | |
357 | int err, vtalrm, alrm, prof, cpu; | |
358 | char c; | |
359 | - /* jailing and SMP are incompatible, so this doesn't need to be | |
360 | - * made per-cpu | |
361 | - */ | |
362 | - static int reading; | |
363 | ||
364 | from = prev; | |
365 | to = next; | |
b3bed06d JR |
366 | @@ -35,7 +35,7 @@ |
367 | ||
368 | to->thread.prev_sched = from; | |
369 | ||
370 | - cpu = from->processor; | |
371 | + cpu = from->cpu; | |
372 | if(cpu == 0) | |
373 | forward_interrupts(to->thread.mode.tt.extern_pid); | |
374 | #ifdef CONFIG_SMP | |
77993d39 JR |
375 | @@ -51,15 +47,15 @@ |
376 | alrm = change_sig(SIGALRM, 0); | |
377 | prof = change_sig(SIGPROF, 0); | |
378 | ||
b3bed06d | 379 | + forward_pending_sigio(to->thread.mode.tt.extern_pid); |
77993d39 JR |
380 | + |
381 | c = 0; | |
382 | set_current(to); | |
383 | ||
384 | - reading = 0; | |
385 | err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); | |
386 | if(err != sizeof(c)) | |
387 | panic("write of switch_pipe failed, errno = %d", -err); | |
388 | ||
389 | - reading = 1; | |
390 | if(from->state == TASK_ZOMBIE) | |
391 | os_kill_process(os_getpid(), 0); | |
392 | ||
393 | @@ -67,24 +63,6 @@ | |
394 | if(err != sizeof(c)) | |
395 | panic("read of switch_pipe failed, errno = %d", -err); | |
396 | ||
397 | - /* This works around a nasty race with 'jail'. If we are switching | |
398 | - * between two threads of a threaded app and the incoming process | |
399 | - * runs before the outgoing process reaches the read, and it makes | |
400 | - * it all the way out to userspace, then it will have write-protected | |
401 | - * the outgoing process stack. Then, when the outgoing process | |
402 | - * returns from the write, it will segfault because it can no longer | |
403 | - * write its own stack. So, in order to avoid that, the incoming | |
404 | - * thread sits in a loop yielding until 'reading' is set. This | |
405 | - * isn't entirely safe, since there may be a reschedule from a timer | |
406 | - * happening between setting 'reading' and sleeping in read. But, | |
407 | - * it should get a whole quantum in which to reach the read and sleep, | |
408 | - * which should be enough. | |
409 | - */ | |
410 | - | |
411 | - if(jail){ | |
412 | - while(!reading) sched_yield(); | |
413 | - } | |
414 | - | |
415 | change_sig(SIGVTALRM, vtalrm); | |
416 | change_sig(SIGALRM, alrm); | |
417 | change_sig(SIGPROF, prof); | |
418 | @@ -108,7 +86,7 @@ | |
419 | close(current->thread.mode.tt.switch_pipe[1]); | |
420 | } | |
421 | ||
422 | -extern void schedule_tail(struct task_struct *prev); | |
423 | +asmlinkage void schedule_tail(task_t *prev); | |
424 | ||
425 | static void new_thread_handler(int sig) | |
426 | { | |
427 | @@ -126,8 +104,10 @@ | |
428 | set_cmdline("(kernel thread)"); | |
429 | force_flush_all(); | |
430 | ||
431 | +#ifdef CONFIG_SMP | |
432 | if(current->thread.prev_sched != NULL) | |
433 | schedule_tail(current->thread.prev_sched); | |
434 | +#endif | |
435 | current->thread.prev_sched = NULL; | |
436 | ||
437 | change_sig(SIGUSR1, 1); | |
438 | @@ -169,8 +149,10 @@ | |
439 | 1, 0, 1); | |
440 | task_protections((unsigned long) current); | |
441 | ||
442 | +#ifdef CONFIG_SMP | |
443 | if(current->thread.prev_sched != NULL) | |
444 | schedule_tail(current->thread.prev_sched); | |
445 | +#endif | |
446 | current->thread.prev_sched = NULL; | |
447 | ||
448 | free_page(current->thread.temp_stack); | |
b3bed06d JR |
449 | @@ -281,7 +281,7 @@ |
450 | pid = thread->request.u.exec.pid; | |
451 | do_exec(thread->mode.tt.extern_pid, pid); | |
452 | thread->mode.tt.extern_pid = pid; | |
453 | - cpu_tasks[task->processor].pid = pid; | |
454 | + cpu_tasks[task->cpu].pid = pid; | |
455 | break; | |
456 | case OP_FORK: | |
457 | attach_process(thread->request.u.fork.pid); | |
77993d39 JR |
458 | diff -urN linux-2.4.20-uml/include/asm-um/cache.h linux-2.4.20-uml-o1/include/asm-um/cache.h |
459 | --- linux-2.4.20-uml/include/asm-um/cache.h Sat Mar 15 18:34:04 2003 | |
460 | +++ linux-2.4.20-uml-o1/include/asm-um/cache.h Sat Mar 15 20:23:30 2003 | |
461 | @@ -1,6 +1,7 @@ | |
462 | #ifndef __UM_CACHE_H | |
463 | #define __UM_CACHE_H | |
464 | ||
465 | -#define L1_CACHE_BYTES 32 | |
466 | +#define L1_CACHE_SHIFT (5) | |
467 | +#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) | |
468 | ||
469 | #endif | |
470 | diff -urN linux-2.4.20-uml/include/asm-um/fixmap.h linux-2.4.20-uml-o1/include/asm-um/fixmap.h | |
471 | --- linux-2.4.20-uml/include/asm-um/fixmap.h Sat Mar 15 18:34:04 2003 | |
472 | +++ linux-2.4.20-uml-o1/include/asm-um/fixmap.h Sat Mar 15 20:44:39 2003 | |
473 | @@ -2,7 +2,9 @@ | |
474 | #define __UM_FIXMAP_H | |
475 | ||
476 | #include <linux/config.h> | |
477 | +#ifdef CONFIG_HIGHMEM | |
478 | #include <asm/kmap_types.h> | |
479 | +#endif | |
480 | ||
481 | /* | |
482 | * Here we define all the compile-time 'special' virtual | |
483 | diff -urN linux-2.4.20-uml/include/asm-um/page.h linux-2.4.20-uml-o1/include/asm-um/page.h | |
484 | --- linux-2.4.20-uml/include/asm-um/page.h Sat Mar 15 18:34:04 2003 | |
485 | +++ linux-2.4.20-uml-o1/include/asm-um/page.h Sat Mar 15 19:47:48 2003 | |
486 | @@ -50,4 +50,7 @@ | |
487 | extern struct page *arch_validate(struct page *page, int mask, int order); | |
488 | #define HAVE_ARCH_VALIDATE | |
489 | ||
490 | +#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ | |
491 | + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) | |
492 | + | |
493 | #endif | |
494 | diff -urN linux-2.4.20-uml/include/asm-um/smp.h linux-2.4.20-uml-o1/include/asm-um/smp.h | |
495 | --- linux-2.4.20-uml/include/asm-um/smp.h Sat Mar 15 18:34:04 2003 | |
496 | +++ linux-2.4.20-uml-o1/include/asm-um/smp.h Sat Mar 15 19:50:18 2003 | |
497 | @@ -6,7 +6,7 @@ | |
498 | #include "linux/config.h" | |
499 | #include "asm/current.h" | |
500 | ||
501 | -#define smp_processor_id() (current->processor) | |
502 | +#define smp_processor_id() (current->cpu) | |
503 | #define cpu_logical_map(n) (n) | |
504 | #define cpu_number_map(n) (n) | |
505 | #define PROC_CHANGE_PENALTY 15 /* Pick a number, any number */ |