diff options
Diffstat (limited to 'arch/mips/include/asm/irq.h')
-rw-r--r-- | arch/mips/include/asm/irq.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h index 956db6e201d1..ddd1c918103b 100644 --- a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h | |||
@@ -18,9 +18,24 @@ | |||
18 | #include <irq.h> | 18 | #include <irq.h> |
19 | 19 | ||
20 | #define IRQ_STACK_SIZE THREAD_SIZE | 20 | #define IRQ_STACK_SIZE THREAD_SIZE |
21 | #define IRQ_STACK_START (IRQ_STACK_SIZE - sizeof(unsigned long)) | ||
21 | 22 | ||
22 | extern void *irq_stack[NR_CPUS]; | 23 | extern void *irq_stack[NR_CPUS]; |
23 | 24 | ||
25 | /* | ||
26 | * The highest address on the IRQ stack contains a dummy frame put down in | ||
27 | * genex.S (handle_int & except_vec_vi_handler) which is structured as follows: | ||
28 | * | ||
29 | * top ------------ | ||
30 | * | task sp | <- irq_stack[cpu] + IRQ_STACK_START | ||
31 | * ------------ | ||
32 | * | | <- First frame of IRQ context | ||
33 | * ------------ | ||
34 | * | ||
35 | * task sp holds a copy of the task stack pointer where the struct pt_regs | ||
36 | * from exception entry can be found. | ||
37 | */ | ||
38 | |||
24 | static inline bool on_irq_stack(int cpu, unsigned long sp) | 39 | static inline bool on_irq_stack(int cpu, unsigned long sp) |
25 | { | 40 | { |
26 | unsigned long low = (unsigned long)irq_stack[cpu]; | 41 | unsigned long low = (unsigned long)irq_stack[cpu]; |