diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-06-25 00:19:27 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 07:13:37 -0400 |
commit | c7245da6ae7e5208504ff027c4e0eec69b788651 (patch) | |
tree | 47767af25940999d36f4682dd3e0820c1580092a /include/asm-x86/paravirt.h | |
parent | d75cd22fdd5f7d203fb60014d426942df33dd9a6 (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 'include/asm-x86/paravirt.h')
-rw-r--r-- | include/asm-x86/paravirt.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h index 2668903b70f5..dad5b4186f51 100644 --- a/include/asm-x86/paravirt.h +++ b/include/asm-x86/paravirt.h | |||
@@ -143,7 +143,7 @@ struct pv_cpu_ops { | |||
143 | 143 | ||
144 | /* These three are jmp to, not actually called. */ | 144 | /* These three are jmp to, not actually called. */ |
145 | void (*irq_enable_sysexit)(void); | 145 | void (*irq_enable_sysexit)(void); |
146 | void (*usersp_sysret)(void); | 146 | void (*usergs_sysret)(void); |
147 | void (*iret)(void); | 147 | void (*iret)(void); |
148 | 148 | ||
149 | void (*swapgs)(void); | 149 | void (*swapgs)(void); |
@@ -1505,10 +1505,10 @@ static inline unsigned long __raw_local_irq_save(void) | |||
1505 | movq %rax, %rcx; \ | 1505 | movq %rax, %rcx; \ |
1506 | xorq %rax, %rax; | 1506 | xorq %rax, %rax; |
1507 | 1507 | ||
1508 | #define USERSP_SYSRET \ | 1508 | #define USERGS_SYSRET \ |
1509 | PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usersp_sysret), \ | 1509 | PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usergs_sysret), \ |
1510 | CLBR_NONE, \ | 1510 | CLBR_NONE, \ |
1511 | jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usersp_sysret)) | 1511 | jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret)) |
1512 | #endif | 1512 | #endif |
1513 | 1513 | ||
1514 | #endif /* __ASSEMBLY__ */ | 1514 | #endif /* __ASSEMBLY__ */ |