aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/entry_64.S
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/entry_64.S
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/entry_64.S')
-rw-r--r--arch/x86/kernel/entry_64.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 0056bc4c61a9..18447a373fbd 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -59,8 +59,7 @@
59#endif 59#endif
60 60
61#ifdef CONFIG_PARAVIRT 61#ifdef CONFIG_PARAVIRT
62ENTRY(native_usersp_sysret) 62ENTRY(native_usergs_sysret)
63 movq %gs:pda_oldrsp,%rsp
64 swapgs 63 swapgs
65 sysretq 64 sysretq
66#endif /* CONFIG_PARAVIRT */ 65#endif /* CONFIG_PARAVIRT */
@@ -275,7 +274,8 @@ sysret_check:
275 CFI_REGISTER rip,rcx 274 CFI_REGISTER rip,rcx
276 RESTORE_ARGS 0,-ARG_SKIP,1 275 RESTORE_ARGS 0,-ARG_SKIP,1
277 /*CFI_REGISTER rflags,r11*/ 276 /*CFI_REGISTER rflags,r11*/
278 USERSP_SYSRET 277 movq %gs:pda_oldrsp, %rsp
278 USERGS_SYSRET
279 279
280 CFI_RESTORE_STATE 280 CFI_RESTORE_STATE
281 /* Handle reschedules */ 281 /* Handle reschedules */