When generating an exception frame for injection into a guest, that
frame''s
base should be aligned on a 16-byte boundary (as is done by the
hardware).
Signed-off-by: Jan Beulich <jbeulich@novell.com>
--- src/xen/2005-08-29/xen/arch/x86/x86_64/entry.S 2005-08-29
14:29:56.000000000 +0200
+++ cpp/xen/2005-08-29/xen/arch/x86/x86_64/entry.S 2005-08-29
17:17:40.304663936 +0200
@@ -339,6 +339,7 @@ create_bounce_frame:
1: /* In kernel context already: push new frame at existing %rsp.
*/
movq UREGS_rsp+8(%rsp),%rsi
andb $0xfc,UREGS_cs+8(%rsp) # Indicate kernel context to
guest.
+ andq $~0xf,%rsi # Align frame like hardware
would.
2: movq $HYPERVISOR_VIRT_START,%rax
cmpq %rax,%rsi
jb 1f # In +ve address space? Then
okay.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel