[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |