| /* |
| * Copyright (C) 2004-2006 Atmel Corporation |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| #ifndef __ASM_AVR32_SWITCH_TO_H |
| #define __ASM_AVR32_SWITCH_TO_H |
| |
| /* |
| * Help PathFinder and other Nexus-compliant debuggers keep track of |
| * the current PID by emitting an Ownership Trace Message each time we |
| * switch task. |
| */ |
| #ifdef CONFIG_OWNERSHIP_TRACE |
| #include <asm/ocd.h> |
| #define finish_arch_switch(prev) \ |
| do { \ |
| ocd_write(PID, prev->pid); \ |
| ocd_write(PID, current->pid); \ |
| } while(0) |
| #endif |
| |
| /* |
| * switch_to(prev, next, last) should switch from task `prev' to task |
| * `next'. `prev' will never be the same as `next'. |
| * |
| * We just delegate everything to the __switch_to assembly function, |
| * which is implemented in arch/avr32/kernel/switch_to.S |
| * |
| * mb() tells GCC not to cache `current' across this call. |
| */ |
| struct cpu_context; |
| struct task_struct; |
| extern struct task_struct *__switch_to(struct task_struct *, |
| struct cpu_context *, |
| struct cpu_context *); |
| #define switch_to(prev, next, last) \ |
| do { \ |
| last = __switch_to(prev, &prev->thread.cpu_context + 1, \ |
| &next->thread.cpu_context); \ |
| } while (0) |
| |
| |
| #endif /* __ASM_AVR32_SWITCH_TO_H */ |