| Jeremy Fitzhardinge | 70463da | 2006-12-07 02:14:03 +0100 | [diff] [blame] | 1 | /* | 
|  | 2 | * Per-cpu current frame pointer - the location of the last exception frame on | 
| Jeremy Fitzhardinge | 7c3576d | 2007-05-02 19:27:16 +0200 | [diff] [blame] | 3 | * the stack, stored in the per-cpu area. | 
| Jeremy Fitzhardinge | 70463da | 2006-12-07 02:14:03 +0100 | [diff] [blame] | 4 | * | 
|  | 5 | * Jeremy Fitzhardinge <jeremy@goop.org> | 
|  | 6 | */ | 
|  | 7 | #ifndef _ASM_I386_IRQ_REGS_H | 
|  | 8 | #define _ASM_I386_IRQ_REGS_H | 
|  | 9 |  | 
| Jeremy Fitzhardinge | 7c3576d | 2007-05-02 19:27:16 +0200 | [diff] [blame] | 10 | #include <asm/percpu.h> | 
|  | 11 |  | 
|  | 12 | DECLARE_PER_CPU(struct pt_regs *, irq_regs); | 
| Jeremy Fitzhardinge | 70463da | 2006-12-07 02:14:03 +0100 | [diff] [blame] | 13 |  | 
|  | 14 | static inline struct pt_regs *get_irq_regs(void) | 
|  | 15 | { | 
| Jeremy Fitzhardinge | 7c3576d | 2007-05-02 19:27:16 +0200 | [diff] [blame] | 16 | return x86_read_percpu(irq_regs); | 
| Jeremy Fitzhardinge | 70463da | 2006-12-07 02:14:03 +0100 | [diff] [blame] | 17 | } | 
|  | 18 |  | 
|  | 19 | static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs) | 
|  | 20 | { | 
|  | 21 | struct pt_regs *old_regs; | 
|  | 22 |  | 
| Jeremy Fitzhardinge | 7c3576d | 2007-05-02 19:27:16 +0200 | [diff] [blame] | 23 | old_regs = get_irq_regs(); | 
|  | 24 | x86_write_percpu(irq_regs, new_regs); | 
| Jeremy Fitzhardinge | 70463da | 2006-12-07 02:14:03 +0100 | [diff] [blame] | 25 |  | 
|  | 26 | return old_regs; | 
|  | 27 | } | 
|  | 28 |  | 
|  | 29 | #endif /* _ASM_I386_IRQ_REGS_H */ |