[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Fix x86/64 failsafe callback handling.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1182445370 -3600
# Node ID b35b8053012e6b1720a392964bc7114ba30de420
# Parent  04d4b7b6f5b752a4375cbb58f6ce3efc207f708a
Fix x86/64 failsafe callback handling.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/x86/x86_64/compat/entry.S |   10 +++++-----
 xen/arch/x86/x86_64/entry.S        |   22 +++++++++++-----------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff -r 04d4b7b6f5b7 -r b35b8053012e xen/arch/x86/x86_64/compat/entry.S
--- a/xen/arch/x86/x86_64/compat/entry.S        Thu Jun 21 15:17:31 2007 +0100
+++ b/xen/arch/x86/x86_64/compat/entry.S        Thu Jun 21 18:02:50 2007 +0100
@@ -143,12 +143,12 @@ compat_restore_all_guest:
 .Lft0:  iretq
 
 .section .fixup,"ax"
-.Lfx0:  popq  -15*8-8(%rsp)            # error_code/entry_vector
-        SAVE_ALL                       # 15*8 bytes pushed
-        movq  -8(%rsp),%rsi            # error_code/entry_vector
-        sti                            # after stack abuse (-1024(%rsp))
+.Lfx0:  sti
+        SAVE_ALL
+        movq  UREGS_error_code(%rsp),%rsi
+        movq  %rsp,%rax
+        andq  $~0xf,%rsp
         pushq $__HYPERVISOR_DS         # SS
-        leaq  8(%rsp),%rax
         pushq %rax                     # RSP
         pushfq                         # RFLAGS
         pushq $__HYPERVISOR_CS         # CS
diff -r 04d4b7b6f5b7 -r b35b8053012e xen/arch/x86/x86_64/entry.S
--- a/xen/arch/x86/x86_64/entry.S       Thu Jun 21 15:17:31 2007 +0100
+++ b/xen/arch/x86/x86_64/entry.S       Thu Jun 21 18:02:50 2007 +0100
@@ -57,23 +57,23 @@ 1:      sysretl
 /* No special register assumptions. */
 iret_exit_to_guest:
         addq  $8,%rsp
-.Lft1:  iretq
+.Lft0:  iretq
 
 .section .fixup,"ax"
-.Lfx1:  popq  -15*8-8(%rsp)            # error_code/entry_vector
-        SAVE_ALL                       # 15*8 bytes pushed
-        movq  -8(%rsp),%rsi            # error_code/entry_vector
-        sti                            # after stack abuse (-1024(%rsp))
+.Lfx0:  sti
+        SAVE_ALL
+        movq  UREGS_error_code(%rsp),%rsi
+        movq  %rsp,%rax
+        andq  $~0xf,%rsp
         pushq $__HYPERVISOR_DS         # SS
-        leaq  8(%rsp),%rax
         pushq %rax                     # RSP
-        pushf                          # RFLAGS
+        pushfq                         # RFLAGS
         pushq $__HYPERVISOR_CS         # CS
-        leaq  .Ldf1(%rip),%rax
+        leaq  .Ldf0(%rip),%rax
         pushq %rax                     # RIP
         pushq %rsi                     # error_code/entry_vector
         jmp   handle_exception
-.Ldf1:  GET_CURRENT(%rbx)
+.Ldf0:  GET_CURRENT(%rbx)
         jmp   test_all_events
 failsafe_callback:
         GET_CURRENT(%rbx)
@@ -88,10 +88,10 @@ 1:      call  create_bounce_frame
         jmp   test_all_events
 .previous
 .section __pre_ex_table,"a"
-        .quad .Lft1,.Lfx1
+        .quad .Lft0,.Lfx0
 .previous
 .section __ex_table,"a"
-        .quad .Ldf1,failsafe_callback
+        .quad .Ldf0,failsafe_callback
 .previous
 
         ALIGN

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.