aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/paravirt.c
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-06-25 00:19:27 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-08 07:13:37 -0400
commitc7245da6ae7e5208504ff027c4e0eec69b788651 (patch)
tree47767af25940999d36f4682dd3e0820c1580092a /arch/x86/kernel/paravirt.c
parentd75cd22fdd5f7d203fb60014d426942df33dd9a6 (diff)
x86/paravirt, 64-bit: don't restore user rsp within sysret
There's no need to combine restoring the user rsp within the sysret pvop, so split it out. This makes the pvop's semantics closer to the machine instruction. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citirx.com> Cc: xen-devel <xen-devel@lists.xensource.com> Cc: Stephen Tweedie <sct@redhat.com> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/paravirt.c')
-rw-r--r--arch/x86/kernel/paravirt.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 565ee7a990ea..b0b17f0bc7e9 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -141,7 +141,7 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
141 ret = paravirt_patch_nop(); 141 ret = paravirt_patch_nop();
142 else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) || 142 else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
143 type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) || 143 type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) ||
144 type == PARAVIRT_PATCH(pv_cpu_ops.usersp_sysret)) 144 type == PARAVIRT_PATCH(pv_cpu_ops.usergs_sysret))
145 /* If operation requires a jmp, then jmp */ 145 /* If operation requires a jmp, then jmp */
146 ret = paravirt_patch_jmp(insnbuf, opfunc, addr, len); 146 ret = paravirt_patch_jmp(insnbuf, opfunc, addr, len);
147 else 147 else
@@ -193,7 +193,7 @@ static void native_flush_tlb_single(unsigned long addr)
193/* These are in entry.S */ 193/* These are in entry.S */
194extern void native_iret(void); 194extern void native_iret(void);
195extern void native_irq_enable_sysexit(void); 195extern void native_irq_enable_sysexit(void);
196extern void native_usersp_sysret(void); 196extern void native_usergs_sysret(void);
197 197
198static int __init print_banner(void) 198static int __init print_banner(void)
199{ 199{
@@ -332,7 +332,7 @@ struct pv_cpu_ops pv_cpu_ops = {
332#ifdef CONFIG_X86_32 332#ifdef CONFIG_X86_32
333 .irq_enable_sysexit = native_irq_enable_sysexit, 333 .irq_enable_sysexit = native_irq_enable_sysexit,
334#else 334#else
335 .usersp_sysret = native_usersp_sysret, 335 .usergs_sysret = native_usergs_sysret,
336#endif 336#endif
337 .iret = native_iret, 337 .iret = native_iret,
338 .swapgs = native_swapgs, 338 .swapgs = native_swapgs,