]>
Commit | Line | Data |
---|---|---|
ae473946 DH |
1 | /* |
2 | * Copyright (C) 2004-2006 Atmel Corporation | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or modify | |
5 | * it under the terms of the GNU General Public License version 2 as | |
6 | * published by the Free Software Foundation. | |
7 | */ | |
8 | #ifndef __ASM_AVR32_SWITCH_TO_H | |
9 | #define __ASM_AVR32_SWITCH_TO_H | |
10 | ||
11 | /* | |
12 | * Help PathFinder and other Nexus-compliant debuggers keep track of | |
13 | * the current PID by emitting an Ownership Trace Message each time we | |
14 | * switch task. | |
15 | */ | |
16 | #ifdef CONFIG_OWNERSHIP_TRACE | |
17 | #include <asm/ocd.h> | |
dfdbd597 | 18 | #define ocd_switch(prev, next) \ |
ae473946 DH |
19 | do { \ |
20 | ocd_write(PID, prev->pid); \ | |
dfdbd597 | 21 | ocd_write(PID, next->pid); \ |
ae473946 | 22 | } while(0) |
dfdbd597 PZ |
23 | #else |
24 | #define ocd_switch(prev, next) | |
ae473946 DH |
25 | #endif |
26 | ||
27 | /* | |
28 | * switch_to(prev, next, last) should switch from task `prev' to task | |
29 | * `next'. `prev' will never be the same as `next'. | |
30 | * | |
31 | * We just delegate everything to the __switch_to assembly function, | |
32 | * which is implemented in arch/avr32/kernel/switch_to.S | |
33 | * | |
34 | * mb() tells GCC not to cache `current' across this call. | |
35 | */ | |
36 | struct cpu_context; | |
37 | struct task_struct; | |
38 | extern struct task_struct *__switch_to(struct task_struct *, | |
39 | struct cpu_context *, | |
40 | struct cpu_context *); | |
41 | #define switch_to(prev, next, last) \ | |
42 | do { \ | |
dfdbd597 | 43 | ocd_switch(prev, next); \ |
ae473946 DH |
44 | last = __switch_to(prev, &prev->thread.cpu_context + 1, \ |
45 | &next->thread.cpu_context); \ | |
46 | } while (0) | |
47 | ||
48 | ||
49 | #endif /* __ASM_AVR32_SWITCH_TO_H */ |