aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/xen-asm_64.S
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-07-08 18:07:00 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-16 05:02:31 -0400
commit997409d3d0bd6894f33e31ced251c0fdf523aa14 (patch)
treecc4a963310cc9ae00138607cdaa35c99e7d5f76c /arch/x86/xen/xen-asm_64.S
parente176d367d0cc8b8efd2e0960c9edf5d2fe7cd9f1 (diff)
xen64: deal with extra words Xen pushes onto exception frames
Xen pushes two extra words containing the values of rcx and r11. This pvop hook copies the words back into their appropriate registers, and cleans them off the stack. This leaves the stack in native form, so the normal handler can run unchanged. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.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/xen/xen-asm_64.S')
-rw-r--r--arch/x86/xen/xen-asm_64.S5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/xen/xen-asm_64.S b/arch/x86/xen/xen-asm_64.S
index 4ec10827370b..b147b495daef 100644
--- a/arch/x86/xen/xen-asm_64.S
+++ b/arch/x86/xen/xen-asm_64.S
@@ -133,6 +133,11 @@ check_events:
133 ret 133 ret
134#endif 134#endif
135 135
136ENTRY(xen_adjust_exception_frame)
137 mov 8+0(%rsp),%rcx
138 mov 8+8(%rsp),%r11
139 ret $16
140
136ENTRY(xen_iret) 141ENTRY(xen_iret)
137 pushq $0 142 pushq $0
138 jmp hypercall_page + __HYPERVISOR_iret * 32 143 jmp hypercall_page + __HYPERVISOR_iret * 32