diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2009-01-31 02:18:41 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-02-02 11:06:33 -0500 |
commit | 664c7954721adfc9bd61de6ec78f89f482f1a802 (patch) | |
tree | 7f6c83dd628aae50d59927cbd9e1acd5aea36168 /arch/x86/kernel/vmi_32.c | |
parent | e584f559c7b8711cccdf319400acd6294b2c074e (diff) |
x86/vmi: fix interrupt enable/disable/save/restore calling convention.
Zach says:
> Enable/Disable have no clobbers at all.
> Save clobbers only return value, %eax
> Restore also clobbers nothing.
This is precisely compatible with the calling convention, so we can
just call them directly without wrapping.
(Compile tested only.)
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/kernel/vmi_32.c')
-rw-r--r-- | arch/x86/kernel/vmi_32.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 1d3302cc2ddf..eb9e7347928e 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c | |||
@@ -670,10 +670,11 @@ static inline int __init activate_vmi(void) | |||
670 | para_fill(pv_mmu_ops.write_cr2, SetCR2); | 670 | para_fill(pv_mmu_ops.write_cr2, SetCR2); |
671 | para_fill(pv_mmu_ops.write_cr3, SetCR3); | 671 | para_fill(pv_mmu_ops.write_cr3, SetCR3); |
672 | para_fill(pv_cpu_ops.write_cr4, SetCR4); | 672 | para_fill(pv_cpu_ops.write_cr4, SetCR4); |
673 | para_fill(pv_irq_ops.save_fl, GetInterruptMask); | 673 | |
674 | para_fill(pv_irq_ops.restore_fl, SetInterruptMask); | 674 | para_fill(pv_irq_ops.save_fl.func, GetInterruptMask); |
675 | para_fill(pv_irq_ops.irq_disable, DisableInterrupts); | 675 | para_fill(pv_irq_ops.restore_fl.func, SetInterruptMask); |
676 | para_fill(pv_irq_ops.irq_enable, EnableInterrupts); | 676 | para_fill(pv_irq_ops.irq_disable.func, DisableInterrupts); |
677 | para_fill(pv_irq_ops.irq_enable.func, EnableInterrupts); | ||
677 | 678 | ||
678 | para_fill(pv_cpu_ops.wbinvd, WBINVD); | 679 | para_fill(pv_cpu_ops.wbinvd, WBINVD); |
679 | para_fill(pv_cpu_ops.read_tsc, RDTSC); | 680 | para_fill(pv_cpu_ops.read_tsc, RDTSC); |