diff -urN uml-ref/arch/um/config.in uml/arch/um/config.in --- uml-ref/arch/um/config.in Mon Jul 23 17:07:16 2001 +++ uml/arch/um/config.in Mon Jul 23 17:08:33 2001 @@ -8,7 +8,7 @@ define_bool CONFIG_UID16 y -define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y +define_bool CONFIG_RWSEM_GENERIC_SPINLOCK y mainmenu_option next_comment comment 'Code maturity level options' diff -urN uml-ref/arch/um/include/kern_util.h uml/arch/um/include/kern_util.h --- uml-ref/arch/um/include/kern_util.h Mon Jul 23 17:07:17 2001 +++ uml/arch/um/include/kern_util.h Mon Jul 23 17:08:33 2001 @@ -28,7 +28,6 @@ extern long execute_syscall(struct sys_pt_regs regs); extern void syscall_segv(int sig); extern int current_pid(void); -extern void do_bh(void); extern void set_init_pid(int pid); extern unsigned long alloc_stack(void); extern int do_signal(unsigned long *error, int *again_out); diff -urN uml-ref/arch/um/kernel/process_kern.c uml/arch/um/kernel/process_kern.c --- uml-ref/arch/um/kernel/process_kern.c Mon Jul 23 17:07:17 2001 +++ uml/arch/um/kernel/process_kern.c Mon Jul 23 17:09:54 2001 @@ -217,25 +217,12 @@ return(current->thread.request.u.cswitch.from); } -void do_bh(void) -{ -#ifndef CONFIG_SMP - if (softirq_pending(0)){ - do_softirq(); - unblock_signals(); - } -#else -#error Need to update do_bh -#endif -} - void ret_from_sys_call(void *t) { struct task_struct *task; task = t; if(task == NULL) task = current; - do_bh(); if(task->need_resched) schedule(); if(task->sigpending != 0) do_signal(NULL, NULL); } diff -urN uml-ref/arch/um/kernel/time.c uml/arch/um/kernel/time.c --- uml-ref/arch/um/kernel/time.c Mon Jul 23 17:07:17 2001 +++ uml/arch/um/kernel/time.c Mon Jul 23 17:08:36 2001 @@ -16,7 +16,7 @@ #include "user.h" #include "process.h" -extern struct timeval xtime; +extern volatile struct timeval xtime; void timer_handler(int sig, void *sc, int usermode) { diff -urN uml-ref/arch/um/kernel/trap_kern.c uml/arch/um/kernel/trap_kern.c --- uml-ref/arch/um/kernel/trap_kern.c Mon Jul 23 17:07:17 2001 +++ uml/arch/um/kernel/trap_kern.c Mon Jul 23 17:08:36 2001 @@ -41,7 +41,7 @@ if(!vma) ok = 0; else if(vma->vm_start > address){ if((vma->vm_flags & VM_STACK_FLAGS) != VM_STACK_FLAGS) ok = 0; - else if(expand_stack(vma, address)) ok = 0; + else if(expand_stack(vma, address, NULL)) ok = 0; } if(!ok){ if (current->thread.fault_catcher != NULL) { diff -urN uml-ref/include/asm-um/rwsem.h uml/include/asm-um/rwsem.h --- uml-ref/include/asm-um/rwsem.h Mon Jul 23 17:07:17 2001 +++ uml/include/asm-um/rwsem.h Thu Jan 1 01:00:00 1970 @@ -1,10 +0,0 @@ -#ifndef __UM_RWSEM_H__ -#define __UM_RWSEM_H__ - -#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) -#define __builtin_expect(exp,c) (exp) -#endif - -#include "asm/arch/rwsem.h" - -#endif diff -urN uml-ref/include/asm-um/rwsem_xchgadd.h uml/include/asm-um/rwsem_xchgadd.h --- uml-ref/include/asm-um/rwsem_xchgadd.h Thu Jan 1 01:00:00 1970 +++ uml/include/asm-um/rwsem_xchgadd.h Mon Jul 23 17:08:36 2001 @@ -0,0 +1,6 @@ +#ifndef __UM_RWSEM_H__ +#define __UM_RWSEM_H__ + +#include "asm/arch/rwsem_xchgadd.h" + +#endif diff -urN uml-ref/include/asm-um/timex.h uml/include/asm-um/timex.h --- uml-ref/include/asm-um/timex.h Mon Jul 23 17:07:17 2001 +++ uml/include/asm-um/timex.h Mon Jul 23 17:08:36 2001 @@ -12,4 +12,8 @@ return 0; } +typedef long last_schedule_t; +#define get_last_schedule() ({ jiffies; }) +#define last_schedule_before(a, b) ({ a < b; }) + #endif