diff options
| author | Paul Mackerras <paulus@samba.org> | 2003-02-23 10:28:57 +1100 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2003-02-23 10:28:57 +1100 |
| commit | aeffbd1b6416b5de4dcd18301ddac9c669a6bfa1 (patch) | |
| tree | 2ddb040c5af54f9d8deb727ed729b59f4ba968ae | |
| parent | 5a983302652b8e949f4352fe98e8290a24d48b43 (diff) | |
PPC32: Make switch_to return the previous task in the `last' argument
| -rw-r--r-- | arch/ppc/kernel/process.c | 7 | ||||
| -rw-r--r-- | include/asm-ppc/system.h | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/arch/ppc/kernel/process.c b/arch/ppc/kernel/process.c index 0194e65053e9..803c73301b9d 100644 --- a/arch/ppc/kernel/process.c +++ b/arch/ppc/kernel/process.c @@ -197,10 +197,12 @@ dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpregs) return 1; } -void __switch_to(struct task_struct *prev, struct task_struct *new) +struct task_struct *__switch_to(struct task_struct *prev, + struct task_struct *new) { struct thread_struct *new_thread, *old_thread; unsigned long s; + struct task_struct *last; local_irq_save(s); #if CHECK_STACK @@ -244,8 +246,9 @@ void __switch_to(struct task_struct *prev, struct task_struct *new) new->thread.regs->msr |= MSR_VEC; new_thread = &new->thread; old_thread = ¤t->thread; - _switch(old_thread, new_thread); + last = _switch(old_thread, new_thread); local_irq_restore(s); + return last; } void show_regs(struct pt_regs * regs) diff --git a/include/asm-ppc/system.h b/include/asm-ppc/system.h index 837f9bc6bab5..baf8f1567836 100644 --- a/include/asm-ppc/system.h +++ b/include/asm-ppc/system.h @@ -86,8 +86,9 @@ struct device_node; extern void note_scsi_host(struct device_node *, void *); struct task_struct; -extern void __switch_to(struct task_struct *, struct task_struct *); -#define switch_to(prev, next, last) __switch_to((prev), (next)) +extern struct task_struct *__switch_to(struct task_struct *, + struct task_struct *); +#define switch_to(prev, next, last) ((last) = __switch_to((prev), (next))) struct thread_struct; extern struct task_struct *_switch(struct thread_struct *prev, |
