diff options
Diffstat (limited to 'arch/x86/lguest/boot.c')
-rw-r--r-- | arch/x86/lguest/boot.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index 92f1c6f3e19d..19e33b6cd593 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
@@ -173,24 +173,29 @@ static unsigned long save_fl(void) | |||
173 | { | 173 | { |
174 | return lguest_data.irq_enabled; | 174 | return lguest_data.irq_enabled; |
175 | } | 175 | } |
176 | PV_CALLEE_SAVE_REGS_THUNK(save_fl); | ||
176 | 177 | ||
177 | /* restore_flags() just sets the flags back to the value given. */ | 178 | /* restore_flags() just sets the flags back to the value given. */ |
178 | static void restore_fl(unsigned long flags) | 179 | static void restore_fl(unsigned long flags) |
179 | { | 180 | { |
180 | lguest_data.irq_enabled = flags; | 181 | lguest_data.irq_enabled = flags; |
181 | } | 182 | } |
183 | PV_CALLEE_SAVE_REGS_THUNK(restore_fl); | ||
182 | 184 | ||
183 | /* Interrupts go off... */ | 185 | /* Interrupts go off... */ |
184 | static void irq_disable(void) | 186 | static void irq_disable(void) |
185 | { | 187 | { |
186 | lguest_data.irq_enabled = 0; | 188 | lguest_data.irq_enabled = 0; |
187 | } | 189 | } |
190 | PV_CALLEE_SAVE_REGS_THUNK(irq_disable); | ||
188 | 191 | ||
189 | /* Interrupts go on... */ | 192 | /* Interrupts go on... */ |
190 | static void irq_enable(void) | 193 | static void irq_enable(void) |
191 | { | 194 | { |
192 | lguest_data.irq_enabled = X86_EFLAGS_IF; | 195 | lguest_data.irq_enabled = X86_EFLAGS_IF; |
193 | } | 196 | } |
197 | PV_CALLEE_SAVE_REGS_THUNK(irq_enable); | ||
198 | |||
194 | /*:*/ | 199 | /*:*/ |
195 | /*M:003 Note that we don't check for outstanding interrupts when we re-enable | 200 | /*M:003 Note that we don't check for outstanding interrupts when we re-enable |
196 | * them (or when we unmask an interrupt). This seems to work for the moment, | 201 | * them (or when we unmask an interrupt). This seems to work for the moment, |
@@ -984,10 +989,10 @@ __init void lguest_init(void) | |||
984 | 989 | ||
985 | /* interrupt-related operations */ | 990 | /* interrupt-related operations */ |
986 | pv_irq_ops.init_IRQ = lguest_init_IRQ; | 991 | pv_irq_ops.init_IRQ = lguest_init_IRQ; |
987 | pv_irq_ops.save_fl = save_fl; | 992 | pv_irq_ops.save_fl = PV_CALLEE_SAVE(save_fl); |
988 | pv_irq_ops.restore_fl = restore_fl; | 993 | pv_irq_ops.restore_fl = PV_CALLEE_SAVE(restore_fl); |
989 | pv_irq_ops.irq_disable = irq_disable; | 994 | pv_irq_ops.irq_disable = PV_CALLEE_SAVE(irq_disable); |
990 | pv_irq_ops.irq_enable = irq_enable; | 995 | pv_irq_ops.irq_enable = PV_CALLEE_SAVE(irq_enable); |
991 | pv_irq_ops.safe_halt = lguest_safe_halt; | 996 | pv_irq_ops.safe_halt = lguest_safe_halt; |
992 | 997 | ||
993 | /* init-time operations */ | 998 | /* init-time operations */ |