Module Name: src
Committed By: uebayasi
Date: Sat Jun 22 08:48:48 UTC 2013
Modified Files:
src/sys/arch/amd64/amd64: vector.S
src/sys/arch/i386/i386: vector.S
Log Message:
Use END()/IDTVEC_END() to set ELF symbol size. Set some type info too.
To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/amd64/amd64/vector.S
cvs rdiff -u -r1.60 -r1.61 src/sys/arch/i386/i386/vector.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/amd64/amd64/vector.S
diff -u src/sys/arch/amd64/amd64/vector.S:1.42 src/sys/arch/amd64/amd64/vector.S:1.43
--- src/sys/arch/amd64/amd64/vector.S:1.42 Fri Nov 2 08:33:16 2012
+++ src/sys/arch/amd64/amd64/vector.S Sat Jun 22 08:48:48 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: vector.S,v 1.42 2012/11/02 08:33:16 yamt Exp $ */
+/* $NetBSD: vector.S,v 1.43 2013/06/22 08:48:48 uebayasi Exp $ */
/*-
* Copyright (c) 1998, 2007, 2008 The NetBSD Foundation, Inc.
@@ -115,9 +115,11 @@
IDTVEC(trap00)
ZTRAP(T_DIVIDE)
+IDTVEC_END(trap00)
IDTVEC(trap01)
ZTRAP(T_TRCTRAP)
+IDTVEC_END(trap01)
IDTVEC(trap02)
#if defined(XEN)
@@ -152,6 +154,7 @@ IDTVEC(trap02)
addq $TF_REGSIZE+16,%rsp
iretq
#endif /* defined(XEN) */
+IDTVEC_END(trap02)
IDTVEC(trap03)
#ifndef KDTRACE_HOOKS
@@ -195,15 +198,19 @@ dtrace_invop_calltrap_addr:
.zero 8
.text
#endif
+IDTVEC_END(trap03)
IDTVEC(trap04)
ZTRAP(T_OFLOW)
+IDTVEC_END(trap04)
IDTVEC(trap05)
ZTRAP(T_BOUND)
+IDTVEC_END(trap05)
IDTVEC(trap06)
ZTRAP(T_PRIVINFLT)
+IDTVEC_END(trap06)
IDTVEC(trap07)
ZTRAP_NJ(T_ASTFLT)
@@ -214,15 +221,19 @@ IDTVEC(trap07)
movq CPUVAR(SELF),%rdi
call _C_LABEL(fpudna)
jmp .Lalltraps_checkusr
+IDTVEC_END(trap07)
IDTVEC(trap08)
TRAP(T_DOUBLEFLT)
+IDTVEC_END(trap08)
IDTVEC(trap09)
ZTRAP(T_FPOPFLT)
+IDTVEC_END(trap09)
IDTVEC(trap0a)
TRAP(T_TSSFLT)
+IDTVEC_END(trap0a)
#ifdef XEN
/*
@@ -236,10 +247,12 @@ IDTVEC(trap0a)
IDTVEC(trap0b) /* #NP() Segment not present */
TRAP_NJ(T_SEGNPFLT)
jmp check_swapgs
+IDTVEC_END(trap0b) /* #NP() Segment not present */
IDTVEC(trap0c) /* #SS() Stack exception */
TRAP_NJ(T_STKFLT)
jmp check_swapgs
+IDTVEC_END(trap0c) /* #SS() Stack exception */
IDTVEC(trap0d) /* #GP() General protection */
TRAP_NJ(T_PROTFLT)
@@ -271,9 +284,11 @@ check_swapgs:
jne 2b /* No - normal kernel fault */
jmp 1b /* Yes - restore %gs */
#endif
+IDTVEC_END(trap0d)
IDTVEC(trap0e)
TRAP(T_PAGEFLT)
+IDTVEC_END(trap0e)
IDTVEC(intrspurious)
IDTVEC(trap0f)
@@ -283,6 +298,8 @@ IDTVEC(trap0f)
movl CPUVAR(ILEVEL),%ebx
#endif /* DIAGNOSTIC */
jmp .Lalltraps_checkusr
+IDTVEC_END(trap0f)
+IDTVEC_END(intrspurious)
IDTVEC(trap10)
ZTRAP_NJ(T_ARITHTRAP)
@@ -299,16 +316,20 @@ IDTVEC(trap10)
1:
STI(si)
jmp calltrap
+IDTVEC_END(trap10)
IDTVEC(trap11)
TRAP(T_ALIGNFLT)
+IDTVEC_END(trap11)
IDTVEC(trap12)
ZTRAP(T_MCA)
+IDTVEC_END(trap12)
IDTVEC(trap13)
ZTRAP_NJ(T_XMM)
jmp .Ldo_fputrap
+IDTVEC_END(trap13)
IDTVEC(trap14)
IDTVEC(trap15)
@@ -324,6 +345,18 @@ IDTVEC(trap1e)
IDTVEC(trap1f)
/* 20 - 31 reserved for future exp */
ZTRAP(T_RESERVED)
+IDTVEC_END(trap1f)
+IDTVEC_END(trap1e)
+IDTVEC_END(trap1d)
+IDTVEC_END(trap1c)
+IDTVEC_END(trap1b)
+IDTVEC_END(trap1a)
+IDTVEC_END(trap19)
+IDTVEC_END(trap18)
+IDTVEC_END(trap17)
+IDTVEC_END(trap16)
+IDTVEC_END(trap15)
+IDTVEC_END(trap14)
IDTVEC(exceptions)
.quad _C_LABEL(Xtrap00), _C_LABEL(Xtrap01)
@@ -342,6 +375,7 @@ IDTVEC(exceptions)
.quad _C_LABEL(Xtrap1a), _C_LABEL(Xtrap1b)
.quad _C_LABEL(Xtrap1c), _C_LABEL(Xtrap1d)
.quad _C_LABEL(Xtrap1e), _C_LABEL(Xtrap1f)
+IDTVEC_END(exceptions)
/*
* trap() calls here when it detects a fault in INTRFASTEXIT (loading the
@@ -351,13 +385,15 @@ IDTVEC(exceptions)
* Typically the code will have raised a SIGSEGV which will be actioned
* by the code below.
*/
-_C_LABEL(trap_return_fault_return): .globl trap_return_fault_return
+ .type _C_LABEL(trap_return_fault_return), @function
+LABEL(trap_return_fault_return)
mov %rdi,%rsp /* frame for user return */
#ifdef DIAGNOSTIC
/* We can't recover the saved %rbx, so suppress warning */
movl CPUVAR(ILEVEL),%ebx
#endif /* DIAGNOSTIC */
jmp .Lalltraps_checkusr
+END(trap_return_fault_return)
/*
* All traps go through here. Call the generic trap handler, and
@@ -412,6 +448,7 @@ calltrap:
9: STI(si)
call _C_LABEL(do_pmap_load)
jmp .Lalltraps_checkast /* re-check ASTs */
+END(alltraps)
#define __HAVE_GENERIC_SOFT_INTERRUPTS /* XXX */
@@ -451,6 +488,7 @@ IDTVEC(recurse_lapic_ipi)
pushq $T_ASTFLT
INTRENTRY
jmp 1f
+IDTVEC_END(recurse_lapic_ipi)
IDTVEC(intr_lapic_ipi)
pushq $0
@@ -471,6 +509,8 @@ IDTVEC(resume_lapic_ipi)
2:
orl $(1 << LIR_IPI),CPUVAR(IPENDING)
INTRFASTEXIT
+IDTVEC_END(resume_lapic_ipi)
+IDTVEC_END(intr_lapic_ipi)
#if defined(DDB)
IDTVEC(intrddb)
@@ -486,6 +526,7 @@ IDTVEC(intrddb)
xorl %eax,%eax
movq %rax,%cr8
INTRFASTEXIT
+IDTVEC_END(intrddb)
#endif /* DDB */
#endif /* MULTIPROCESSOR */
@@ -498,6 +539,7 @@ IDTVEC(recurse_lapic_ltimer)
pushq $T_ASTFLT
INTRENTRY
jmp 1f
+IDTVEC_END(recurse_lapic_ltimer)
IDTVEC(intr_lapic_ltimer)
pushq $0
@@ -520,6 +562,8 @@ IDTVEC(resume_lapic_ltimer)
2:
orl $(1 << LIR_TIMER),CPUVAR(IPENDING)
INTRFASTEXIT
+IDTVEC_END(resume_lapic_ltimer)
+IDTVEC_END(intr_lapic_ltimer)
#endif /* NLAPIC > 0 */
#ifndef XEN
@@ -533,6 +577,7 @@ IDTVEC(intr_lapic_tlb)
movl $0, _C_LABEL(local_apic)+LAPIC_EOI
callq _C_LABEL(pmap_tlb_intr)
INTRFASTEXIT
+IDTVEC_END(intr_lapic_tlb)
#endif /* !XEN */
@@ -721,8 +766,8 @@ INTRSTUB(ioapic_level,31,voidop,ioapic_a
#endif
-.globl _C_LABEL(i8259_stubs)
-_C_LABEL(i8259_stubs):
+ .type _C_LABEL(i8259_stubs), @object
+LABEL(i8259_stubs)
.quad _C_LABEL(Xintr_legacy0), _C_LABEL(Xrecurse_legacy0)
.quad _C_LABEL(Xresume_legacy0)
.quad _C_LABEL(Xintr_legacy1), _C_LABEL(Xrecurse_legacy1)
@@ -755,10 +800,11 @@ _C_LABEL(i8259_stubs):
.quad _C_LABEL(Xresume_legacy14)
.quad _C_LABEL(Xintr_legacy15), _C_LABEL(Xrecurse_legacy15)
.quad _C_LABEL(Xresume_legacy15)
+END(i8259_stubs)
#if NIOAPIC > 0
-.globl _C_LABEL(ioapic_edge_stubs)
-_C_LABEL(ioapic_edge_stubs):
+ .type _C_LABEL(ioapic_edge_stubs), @object
+LABEL(ioapic_edge_stubs)
.quad _C_LABEL(Xintr_ioapic_edge0), _C_LABEL(Xrecurse_ioapic_edge0)
.quad _C_LABEL(Xresume_ioapic_edge0)
.quad _C_LABEL(Xintr_ioapic_edge1), _C_LABEL(Xrecurse_ioapic_edge1)
@@ -823,9 +869,10 @@ _C_LABEL(ioapic_edge_stubs):
.quad _C_LABEL(Xresume_ioapic_edge30)
.quad _C_LABEL(Xintr_ioapic_edge31), _C_LABEL(Xrecurse_ioapic_edge31)
.quad _C_LABEL(Xresume_ioapic_edge31)
+END(ioapic_edge_stubs)
-.globl _C_LABEL(ioapic_level_stubs)
-_C_LABEL(ioapic_level_stubs):
+ .type _C_LABEL(ioapic_level_stubs), @object
+LABEL(ioapic_level_stubs)
.quad _C_LABEL(Xintr_ioapic_level0), _C_LABEL(Xrecurse_ioapic_level0)
.quad _C_LABEL(Xresume_ioapic_level0)
.quad _C_LABEL(Xintr_ioapic_level1), _C_LABEL(Xrecurse_ioapic_level1)
@@ -890,6 +937,7 @@ _C_LABEL(ioapic_level_stubs):
.quad _C_LABEL(Xresume_ioapic_level30)
.quad _C_LABEL(Xintr_ioapic_level31), _C_LABEL(Xrecurse_ioapic_level31)
.quad _C_LABEL(Xresume_ioapic_level31)
+END(ioapic_level_stubs)
#endif
#else /* !XEN */
@@ -962,8 +1010,7 @@ XENINTRSTUB(xenev,29,voidop,voidop,voido
XENINTRSTUB(xenev,30,voidop,voidop,voidop,hypervisor_asm_unmask,voidop)
XENINTRSTUB(xenev,31,voidop,voidop,voidop,hypervisor_asm_unmask,voidop)
-.globl _C_LABEL(xenev_stubs)
-_C_LABEL(xenev_stubs):
+LABEL(xenev_stubs)
.quad _C_LABEL(Xrecurse_xenev0), _C_LABEL(Xresume_xenev0)
.quad _C_LABEL(Xrecurse_xenev1) ,_C_LABEL(Xresume_xenev1)
.quad _C_LABEL(Xrecurse_xenev2) ,_C_LABEL(Xresume_xenev2)
@@ -996,6 +1043,7 @@ _C_LABEL(xenev_stubs):
.quad _C_LABEL(Xrecurse_xenev29), _C_LABEL(Xresume_xenev29)
.quad _C_LABEL(Xrecurse_xenev30), _C_LABEL(Xresume_xenev30)
.quad _C_LABEL(Xrecurse_xenev31), _C_LABEL(Xresume_xenev31)
+END(xenev_stubs)
# Xen callbacks
@@ -1015,6 +1063,7 @@ NENTRY(hypervisor_callback)
jnz doreti_checkast
1:
INTRFASTEXIT
+END(hypervisor_callback)
# Panic?
NENTRY(failsafe_callback)
@@ -1029,5 +1078,6 @@ NENTRY(failsafe_callback)
call xen_failsafe_handler
INTRFASTEXIT
# jmp HYPERVISOR_iret
+END(failsafe_callback)
#endif /* !XEN */
Index: src/sys/arch/i386/i386/vector.S
diff -u src/sys/arch/i386/i386/vector.S:1.60 src/sys/arch/i386/i386/vector.S:1.61
--- src/sys/arch/i386/i386/vector.S:1.60 Fri Jun 15 14:23:46 2012
+++ src/sys/arch/i386/i386/vector.S Sat Jun 22 08:48:48 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: vector.S,v 1.60 2012/06/15 14:23:46 yamt Exp $ */
+/* $NetBSD: vector.S,v 1.61 2013/06/22 08:48:48 uebayasi Exp $ */
/*
* Copyright 2002 (c) Wasabi Systems, Inc.
@@ -65,7 +65,7 @@
*/
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: vector.S,v 1.60 2012/06/15 14:23:46 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vector.S,v 1.61 2013/06/22 08:48:48 uebayasi Exp $");
#include "opt_ddb.h"
#include "opt_multiprocessor.h"
@@ -444,8 +444,8 @@ INTRSTUB(ioapic_level,31,voidop,ioapic_a
#endif
-.globl _C_LABEL(i8259_stubs)
-_C_LABEL(i8259_stubs):
+ .type _C_LABEL(i8259_stubs), @object
+LABEL(i8259_stubs)
.long _C_LABEL(Xintr_legacy0), _C_LABEL(Xrecurse_legacy0)
.long _C_LABEL(Xresume_legacy0)
.long _C_LABEL(Xintr_legacy1), _C_LABEL(Xrecurse_legacy1)
@@ -478,10 +478,11 @@ _C_LABEL(i8259_stubs):
.long _C_LABEL(Xresume_legacy14)
.long _C_LABEL(Xintr_legacy15), _C_LABEL(Xrecurse_legacy15)
.long _C_LABEL(Xresume_legacy15)
+END(i8259_stubs)
#if NIOAPIC > 0
-.globl _C_LABEL(ioapic_edge_stubs)
-_C_LABEL(ioapic_edge_stubs):
+ .type _C_LABEL(ioapic_edge_stubs), @object
+LABEL(ioapic_edge_stubs)
.long _C_LABEL(Xintr_ioapic_edge0), _C_LABEL(Xrecurse_ioapic_edge0)
.long _C_LABEL(Xresume_ioapic_edge0)
.long _C_LABEL(Xintr_ioapic_edge1), _C_LABEL(Xrecurse_ioapic_edge1)
@@ -546,9 +547,10 @@ _C_LABEL(ioapic_edge_stubs):
.long _C_LABEL(Xresume_ioapic_edge30)
.long _C_LABEL(Xintr_ioapic_edge31), _C_LABEL(Xrecurse_ioapic_edge31)
.long _C_LABEL(Xresume_ioapic_edge31)
+END(ioapic_edge_stubs)
-.globl _C_LABEL(ioapic_level_stubs)
-_C_LABEL(ioapic_level_stubs):
+ .type _C_LABEL(ioapic_level_stubs), @object
+LABEL(ioapic_level_stubs)
.long _C_LABEL(Xintr_ioapic_level0), _C_LABEL(Xrecurse_ioapic_level0)
.long _C_LABEL(Xresume_ioapic_level0)
.long _C_LABEL(Xintr_ioapic_level1), _C_LABEL(Xrecurse_ioapic_level1)
@@ -613,6 +615,7 @@ _C_LABEL(ioapic_level_stubs):
.long _C_LABEL(Xresume_ioapic_level30)
.long _C_LABEL(Xintr_ioapic_level31), _C_LABEL(Xrecurse_ioapic_level31)
.long _C_LABEL(Xresume_ioapic_level31)
+END(ioapic_level_stubs)
#endif
#else /* XEN */
#define voidop(num)
@@ -692,8 +695,8 @@ XENINTRSTUB(xenev,29,voidop,voidop,voido
XENINTRSTUB(xenev,30,voidop,voidop,voidop,hypervisor_asm_unmask,voidop)
XENINTRSTUB(xenev,31,voidop,voidop,voidop,hypervisor_asm_unmask,voidop)
-.globl _C_LABEL(xenev_stubs)
-_C_LABEL(xenev_stubs):
+ .type _C_LABEL(xenev_stubs), @object
+LABEL(xenev_stubs)
.long _C_LABEL(Xrecurse_xenev0), _C_LABEL(Xresume_xenev0)
.long _C_LABEL(Xrecurse_xenev1) ,_C_LABEL(Xresume_xenev1)
.long _C_LABEL(Xrecurse_xenev2) ,_C_LABEL(Xresume_xenev2)
@@ -726,6 +729,7 @@ _C_LABEL(xenev_stubs):
.long _C_LABEL(Xrecurse_xenev29), _C_LABEL(Xresume_xenev29)
.long _C_LABEL(Xrecurse_xenev30), _C_LABEL(Xresume_xenev30)
.long _C_LABEL(Xrecurse_xenev31), _C_LABEL(Xresume_xenev31)
+END(xenev_stubs)
#endif /* XEN */
@@ -753,19 +757,25 @@ _C_LABEL(xenev_stubs):
.text
IDTVEC(trap00)
ZTRAP(T_DIVIDE)
+IDTVEC_END(trap00)
IDTVEC(trap01)
BPTTRAP(T_TRCTRAP)
+IDTVEC_END(trap01)
IDTVEC(trap02)
pushl $0
pushl $(T_NMI)
INTRENTRY
jmp _C_LABEL(calltrap)
+IDTVEC_END(trap02)
IDTVEC(trap03)
BPTTRAP(T_BPTFLT)
+IDTVEC_END(trap03)
IDTVEC(trap04)
ZTRAP(T_OFLOW)
+IDTVEC_END(trap04)
IDTVEC(trap05)
ZTRAP(T_BOUND)
+IDTVEC_END(trap05)
/*
* Privileged instruction fault.
*/
@@ -803,9 +813,11 @@ IDTVEC(trap06)
*/
norm_ill:
ZTRAP(T_PRIVINFLT)
+IDTVEC_END(trap06)
#else
IDTVEC(trap06)
ZTRAP(T_PRIVINFLT)
+IDTVEC_END(trap06)
#endif
IDTVEC(trap07)
#if NNPX > 0
@@ -827,20 +839,27 @@ IDTVEC(trap07)
#endif
ZTRAP(T_DNA)
#endif
+IDTVEC_END(trap07)
IDTVEC(trap08)
TRAP(T_DOUBLEFLT)
+IDTVEC_END(trap08)
IDTVEC(trap09)
ZTRAP(T_FPOPFLT)
+IDTVEC_END(trap09)
IDTVEC(trap0a)
TRAP(T_TSSFLT)
+IDTVEC_END(trap0a)
IDTVEC(trap0b)
TRAP(T_SEGNPFLT)
+IDTVEC_END(trap0b)
IDTVEC(trap0c)
TRAP(T_STKFLT)
+IDTVEC_END(trap0c)
IDTVEC(trap0d)
TRAP(T_PROTFLT)
-#ifndef XEN
+IDTVEC_END(trap0d)
IDTVEC(trap0e)
+#ifndef XEN
pushl $T_PAGEFLT
INTRENTRY
STI(%eax)
@@ -853,9 +872,9 @@ IDTVEC(trap0e)
movb $T_PRIVINFLT,TF_TRAPNO(%esp)
jmp calltrap
#else /* !XEN */
-IDTVEC(trap0e)
TRAP(T_PAGEFLT)
#endif /* !XEN */
+IDTVEC_END(trap0e)
IDTVEC(intrspurious)
IDTVEC(trap0f)
@@ -875,6 +894,8 @@ IDTVEC(trap0f)
movl CPUVAR(ILEVEL),%ebx
#endif
jmp _C_LABEL(trapreturn)
+IDTVEC_END(trap0f)
+IDTVEC_END(intrspurious)
IDTVEC(trap10)
#if NNPX > 0
@@ -899,8 +920,10 @@ IDTVEC(trap10)
sti
ZTRAP(T_ARITHTRAP)
#endif
+IDTVEC_END(trap10)
IDTVEC(trap11)
TRAP(T_ALIGNFLT)
+IDTVEC_END(trap11)
#ifdef XEN
IDTVEC(trap12)
IDTVEC(trap13)
@@ -924,6 +947,26 @@ IDTVEC(trap1e)
IDTVEC(trap1f)
/* 20 - 31 reserved for future exp */
ZTRAP(T_RESERVED)
+IDTVEC_END(trap1f)
+IDTVEC_END(trap1e)
+IDTVEC_END(trap1d)
+IDTVEC_END(trap1c)
+IDTVEC_END(trap1b)
+IDTVEC_END(trap1a)
+IDTVEC_END(trap19)
+IDTVEC_END(trap18)
+IDTVEC_END(trap17)
+IDTVEC_END(trap16)
+IDTVEC_END(trap15)
+IDTVEC_END(trap14)
+#ifndef XEN
+IDTVEC_END(trap13)
+IDTVEC_END(trap12)
+#else
+IDTVEC_END(trap13)
+IDTVEC_END(trap12)
+#endif
+IDTVEC_END(trap11)
IDTVEC(exceptions)
.long _C_LABEL(Xtrap00), _C_LABEL(Xtrap01)
@@ -942,6 +985,7 @@ IDTVEC(exceptions)
.long _C_LABEL(Xtrap1a), _C_LABEL(Xtrap1b)
.long _C_LABEL(Xtrap1c), _C_LABEL(Xtrap1d)
.long _C_LABEL(Xtrap1e), _C_LABEL(Xtrap1f)
+IDTVEC_END(exceptions)
IDTVEC(tss_trap08)
@@ -956,6 +1000,7 @@ IDTVEC(tss_trap08)
addl $12,%esp
iret
jmp 1b
+IDTVEC_END(tss_trap08)
/*
* trap() calls here when it detects a fault in INTRFASTEXIT (loading the
@@ -965,9 +1010,11 @@ IDTVEC(tss_trap08)
* Typically the code will have raised a SIGSEGV which will be actioned
* by the code below.
*/
-_C_LABEL(trap_return_fault_return): .globl trap_return_fault_return
+ .type _C_LABEL(trap_return_fault_return), @function
+LABEL(trap_return_fault_return)
mov 4(%esp),%esp /* frame for user return */
jmp _C_LABEL(trapreturn)
+END(trap_return_fault_return)
/* LINTSTUB: Ignore */
NENTRY(alltraps)
@@ -1048,6 +1095,7 @@ _C_LABEL(trapreturn): .globl trapreturn
9: STI(%eax)
call _C_LABEL(pmap_load)
jmp .Lalltraps_checkast /* re-check ASTs */
+END(alltraps)
#ifdef IPKDB
/* LINTSTUB: Ignore */
@@ -1099,6 +1147,7 @@ ipkdbrestore:
pushl %ecx
ret
+END(bpttraps)
#endif /* IPKDB */
#ifdef IPKDB
@@ -1113,6 +1162,7 @@ faultexit:
call ipkdbrestore
popl %ebp
ret
+END(ipkdbfbyte)
/* LINTSTUB: Func: int ipkdbsbyte(u_char *c, int i) */
NENTRY(ipkdbsbyte)
@@ -1132,6 +1182,7 @@ fault:
movl %eax,(%esp)
movl $-1,%eax
iret
+END(ipkdbsbyte)
#endif /* IPKDB */
#ifdef XEN
@@ -1210,6 +1261,7 @@ critical_region_fixup:
loop 15b
16: movl %edi,%esp # final %edi is top of merged stack
jmp 11b
+END(hypervisor_callback)
/*
@@ -1222,5 +1274,6 @@ NENTRY(failsafe_callback)
pop %gs
call _C_LABEL(xen_failsafe_handler)
iret
+END(failsafe_callback)
#endif /* XEN */