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 /arch/x86/kernel/entry_64.S | |
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 'arch/x86/kernel/entry_64.S')
-rw-r--r-- | arch/x86/kernel/entry_64.S | 6 |
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 |
62 | ENTRY(native_usersp_sysret) | 62 | ENTRY(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 */ |