diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/process_kern.c linux-2.6.13-stack/arch/um/kernel/process_kern.c --- linux-2.6.13/arch/um/kernel/process_kern.c 2005-08-28 19:41:01.000000000 -0400 +++ linux-2.6.13-stack/arch/um/kernel/process_kern.c 2005-08-31 17:50:17.000000000 -0400 @@ -113,8 +113,17 @@ void *_switch_to(void *prev, void *next, void *last) { - return(CHOOSE_MODE(switch_to_tt(prev, next), - switch_to_skas(prev, next))); + struct task_struct *from=(struct task_struct*)prev; + struct task_struct *to=(struct task_struct*)next; + + to->thread.prev_sched = from; + set_current(to); + + CHOOSE_MODE(switch_to_tt(prev, next), + switch_to_skas(prev, next)); + + return(current->thread.prev_sched); + } void interrupt_end(void) diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/skas/include/mode_kern-skas.h linux-2.6.13-stack/arch/um/kernel/skas/include/mode_kern-skas.h --- linux-2.6.13/arch/um/kernel/skas/include/mode_kern-skas.h 2005-08-28 19:41:01.000000000 -0400 +++ linux-2.6.13-stack/arch/um/kernel/skas/include/mode_kern-skas.h 2005-08-30 16:46:17.000000000 -0400 @@ -11,7 +11,7 @@ #include "asm/ptrace.h" extern void flush_thread_skas(void); -extern void *switch_to_skas(void *prev, void *next); +extern int switch_to_skas(void *prev, void *next); extern void start_thread_skas(struct pt_regs *regs, unsigned long eip, unsigned long esp); extern int copy_thread_skas(int nr, unsigned long clone_flags, diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/skas/process_kern.c linux-2.6.13-stack/arch/um/kernel/skas/process_kern.c --- linux-2.6.13/arch/um/kernel/skas/process_kern.c 2005-08-28 19:41:01.000000000 -0400 +++ linux-2.6.13-stack/arch/um/kernel/skas/process_kern.c 2005-08-31 15:48:35.000000000 -0400 @@ -24,7 +24,7 @@ #include "proc_mm.h" #include "registers.h" -void *switch_to_skas(void *prev, void *next) +int switch_to_skas(void *prev, void *next) { struct task_struct *from, *to; @@ -35,8 +35,6 @@ if(current->pid == 0) switch_timers(0); - to->thread.prev_sched = from; - set_current(to); switch_threads(&from->thread.mode.skas.switch_buf, to->thread.mode.skas.switch_buf); @@ -44,7 +42,7 @@ if(current->pid == 0) switch_timers(1); - return(current->thread.prev_sched); + return(0); } extern void schedule_tail(struct task_struct *prev); diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/tt/include/mode_kern-tt.h linux-2.6.13-stack/arch/um/kernel/tt/include/mode_kern-tt.h --- linux-2.6.13/arch/um/kernel/tt/include/mode_kern-tt.h 2005-08-28 19:41:01.000000000 -0400 +++ linux-2.6.13-stack/arch/um/kernel/tt/include/mode_kern-tt.h 2005-08-31 11:15:55.000000000 -0400 @@ -11,7 +11,7 @@ #include "asm/ptrace.h" #include "asm/uaccess.h" -extern void *switch_to_tt(void *prev, void *next); +extern int switch_to_tt(void *prev, void *next); extern void flush_thread_tt(void); extern void start_thread_tt(struct pt_regs *regs, unsigned long eip, unsigned long esp); diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/tt/process_kern.c linux-2.6.13-stack/arch/um/kernel/tt/process_kern.c --- linux-2.6.13/arch/um/kernel/tt/process_kern.c 2005-08-28 19:41:01.000000000 -0400 +++ linux-2.6.13-stack/arch/um/kernel/tt/process_kern.c 2005-08-31 15:48:31.000000000 -0400 @@ -26,7 +26,7 @@ #include "init.h" #include "tt.h" -void *switch_to_tt(void *prev, void *next, void *last) +int switch_to_tt(void *prev, void *next, void *last) { struct task_struct *from, *to, *prev_sched; unsigned long flags; @@ -36,7 +36,6 @@ from = prev; to = next; - to->thread.prev_sched = from; cpu = from->thread_info->cpu; if(cpu == 0) @@ -53,7 +52,6 @@ forward_pending_sigio(to->thread.mode.tt.extern_pid); c = 0; - set_current(to); err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); if(err != sizeof(c)) @@ -86,7 +84,7 @@ flush_tlb_all(); local_irq_restore(flags); - return(current->thread.prev_sched); + return(0); } void release_thread_tt(struct task_struct *task)