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

[Xen-changelog] [linux-2.6.18-xen] x86: adjust unwind info for special HYPERVISOR_iret stack layout


  • To: xen-changelog@xxxxxxxxxxxxxxxxxxx
  • From: Xen patchbot-linux-2.6.18-xen <patchbot@xxxxxxx>
  • Date: Mon, 26 Nov 2012 08:33:04 +0000
  • Delivery-date: Mon, 26 Nov 2012 08:33:15 +0000
  • List-id: "Change log for Mercurial \(receive only\)" <xen-changelog.lists.xen.org>

# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxx>
# Date 1353918649 -3600
# Node ID b9b0a1e9130eb933a34b548508f9ee43fd6e4871
# Parent  b357fab4566ac8daf168e49fee383b1b0a4b9ffb
x86: adjust unwind info for special HYPERVISOR_iret stack layout

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
---


diff -r b357fab4566a -r b9b0a1e9130e arch/i386/kernel/head-xen.S
--- a/arch/i386/kernel/head-xen.S       Mon Nov 26 09:29:19 2012 +0100
+++ b/arch/i386/kernel/head-xen.S       Mon Nov 26 09:30:49 2012 +0100
@@ -70,7 +70,13 @@ ENTRY(startup_32)
 .org HYPERCALL_PAGE_OFFSET
 ENTRY(hypercall_page)
        CFI_STARTPROC
-.skip 0x1000
+       .skip __HYPERVISOR_iret * 32
+       CFI_REMEMBER_STATE
+       .skip 1 /* push %eax */
+       CFI_ADJUST_CFA_OFFSET   8
+       CFI_REL_OFFSET  eax,0
+       CFI_RESTORE_STATE
+       .balign 0x1000,0
        CFI_ENDPROC
 
 /*
diff -r b357fab4566a -r b9b0a1e9130e arch/x86_64/kernel/head-xen.S
--- a/arch/x86_64/kernel/head-xen.S     Mon Nov 26 09:29:19 2012 +0100
+++ b/arch/x86_64/kernel/head-xen.S     Mon Nov 26 09:30:49 2012 +0100
@@ -23,6 +23,7 @@
 #include <asm/msr.h>
 #include <asm/cache.h>
 #include <asm/dwarf2.h>
+#include <xen/interface/xen.h>
 #include <xen/interface/elfnote.h>
 #include <xen/interface/features.h>
 
@@ -80,6 +81,7 @@ NEXT_PAGE(level3_user_pgt)
 
 NEXT_PAGE(hypercall_page)
        CFI_STARTPROC
+       i = 0
        .rept 0x1000 / 0x20
        .skip 1 /* push %rcx */
        CFI_ADJUST_CFA_OFFSET   8
@@ -87,15 +89,25 @@ NEXT_PAGE(hypercall_page)
        .skip 2 /* push %r11 */
        CFI_ADJUST_CFA_OFFSET   8
        CFI_REL_OFFSET  r11,0
+       .if i == __HYPERVISOR_iret
+       .skip 1 /* push %rax */
+       CFI_ADJUST_CFA_OFFSET   8
+       CFI_REL_OFFSET  rax,0
+       .endif
        .skip 5 /* mov $#,%eax */
        .skip 2 /* syscall */
+       .if i == __HYPERVISOR_iret
+       CFI_ADJUST_CFA_OFFSET   -3*8
+       .else
        .skip 2 /* pop %r11 */
        CFI_ADJUST_CFA_OFFSET -8
        CFI_RESTORE r11
        .skip 1 /* pop %rcx */
        CFI_ADJUST_CFA_OFFSET -8
        CFI_RESTORE rcx
-       .align 0x20,0 /* ret */
+       .endif
+       .balign 0x20,0 /* ret */
+       i = i + 1
        .endr
        CFI_ENDPROC
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
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®.