diff options
Diffstat (limited to 'arch/x86/include/asm/irq_regs.h')
| -rw-r--r-- | arch/x86/include/asm/irq_regs.h | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/arch/x86/include/asm/irq_regs.h b/arch/x86/include/asm/irq_regs.h index 89c898ab298..77843225b7e 100644 --- a/arch/x86/include/asm/irq_regs.h +++ b/arch/x86/include/asm/irq_regs.h | |||
| @@ -1,5 +1,31 @@ | |||
| 1 | #ifdef CONFIG_X86_32 | 1 | /* |
| 2 | # include "irq_regs_32.h" | 2 | * Per-cpu current frame pointer - the location of the last exception frame on |
| 3 | #else | 3 | * the stack, stored in the per-cpu area. |
| 4 | # include "irq_regs_64.h" | 4 | * |
| 5 | #endif | 5 | * Jeremy Fitzhardinge <jeremy@goop.org> |
| 6 | */ | ||
| 7 | #ifndef _ASM_X86_IRQ_REGS_H | ||
| 8 | #define _ASM_X86_IRQ_REGS_H | ||
| 9 | |||
| 10 | #include <asm/percpu.h> | ||
| 11 | |||
| 12 | #define ARCH_HAS_OWN_IRQ_REGS | ||
| 13 | |||
| 14 | DECLARE_PER_CPU(struct pt_regs *, irq_regs); | ||
| 15 | |||
| 16 | static inline struct pt_regs *get_irq_regs(void) | ||
| 17 | { | ||
| 18 | return percpu_read(irq_regs); | ||
| 19 | } | ||
| 20 | |||
| 21 | static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs) | ||
| 22 | { | ||
| 23 | struct pt_regs *old_regs; | ||
| 24 | |||
| 25 | old_regs = get_irq_regs(); | ||
| 26 | percpu_write(irq_regs, new_regs); | ||
| 27 | |||
| 28 | return old_regs; | ||
| 29 | } | ||
| 30 | |||
| 31 | #endif /* _ASM_X86_IRQ_REGS_32_H */ | ||
