Module Name: src
Committed By: maxv
Date: Fri Feb 9 08:42:26 UTC 2018
Modified Files:
src/sys/arch/amd64/amd64: vector.S
Log Message:
Define INTRSTUB_ARRAY, simplifies a lot.
To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/amd64/amd64/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.57 src/sys/arch/amd64/amd64/vector.S:1.58
--- src/sys/arch/amd64/amd64/vector.S:1.57 Sat Jan 27 18:17:57 2018
+++ src/sys/arch/amd64/amd64/vector.S Fri Feb 9 08:42:26 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: vector.S,v 1.57 2018/01/27 18:17:57 maxv Exp $ */
+/* $NetBSD: vector.S,v 1.58 2018/02/09 08:42:26 maxv Exp $ */
/*
* Copyright (c) 1998, 2007, 2008 The NetBSD Foundation, Inc.
@@ -87,8 +87,6 @@
.text
-/*****************************************************************************/
-
/*
* Macros for interrupt entry, call to handler, and exit.
*
@@ -599,277 +597,60 @@ LABEL(i8259_stubs)
END(i8259_stubs)
#if NIOAPIC > 0
- .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)
- .quad _C_LABEL(Xresume_ioapic_edge1)
- .quad _C_LABEL(Xintr_ioapic_edge2), _C_LABEL(Xrecurse_ioapic_edge2)
- .quad _C_LABEL(Xresume_ioapic_edge2)
- .quad _C_LABEL(Xintr_ioapic_edge3), _C_LABEL(Xrecurse_ioapic_edge3)
- .quad _C_LABEL(Xresume_ioapic_edge3)
- .quad _C_LABEL(Xintr_ioapic_edge4), _C_LABEL(Xrecurse_ioapic_edge4)
- .quad _C_LABEL(Xresume_ioapic_edge4)
- .quad _C_LABEL(Xintr_ioapic_edge5), _C_LABEL(Xrecurse_ioapic_edge5)
- .quad _C_LABEL(Xresume_ioapic_edge5)
- .quad _C_LABEL(Xintr_ioapic_edge6), _C_LABEL(Xrecurse_ioapic_edge6)
- .quad _C_LABEL(Xresume_ioapic_edge6)
- .quad _C_LABEL(Xintr_ioapic_edge7), _C_LABEL(Xrecurse_ioapic_edge7)
- .quad _C_LABEL(Xresume_ioapic_edge7)
- .quad _C_LABEL(Xintr_ioapic_edge8), _C_LABEL(Xrecurse_ioapic_edge8)
- .quad _C_LABEL(Xresume_ioapic_edge8)
- .quad _C_LABEL(Xintr_ioapic_edge9), _C_LABEL(Xrecurse_ioapic_edge9)
- .quad _C_LABEL(Xresume_ioapic_edge9)
- .quad _C_LABEL(Xintr_ioapic_edge10), _C_LABEL(Xrecurse_ioapic_edge10)
- .quad _C_LABEL(Xresume_ioapic_edge10)
- .quad _C_LABEL(Xintr_ioapic_edge11), _C_LABEL(Xrecurse_ioapic_edge11)
- .quad _C_LABEL(Xresume_ioapic_edge11)
- .quad _C_LABEL(Xintr_ioapic_edge12), _C_LABEL(Xrecurse_ioapic_edge12)
- .quad _C_LABEL(Xresume_ioapic_edge12)
- .quad _C_LABEL(Xintr_ioapic_edge13), _C_LABEL(Xrecurse_ioapic_edge13)
- .quad _C_LABEL(Xresume_ioapic_edge13)
- .quad _C_LABEL(Xintr_ioapic_edge14), _C_LABEL(Xrecurse_ioapic_edge14)
- .quad _C_LABEL(Xresume_ioapic_edge14)
- .quad _C_LABEL(Xintr_ioapic_edge15), _C_LABEL(Xrecurse_ioapic_edge15)
- .quad _C_LABEL(Xresume_ioapic_edge15)
- .quad _C_LABEL(Xintr_ioapic_edge16), _C_LABEL(Xrecurse_ioapic_edge16)
- .quad _C_LABEL(Xresume_ioapic_edge16)
- .quad _C_LABEL(Xintr_ioapic_edge17), _C_LABEL(Xrecurse_ioapic_edge17)
- .quad _C_LABEL(Xresume_ioapic_edge17)
- .quad _C_LABEL(Xintr_ioapic_edge18), _C_LABEL(Xrecurse_ioapic_edge18)
- .quad _C_LABEL(Xresume_ioapic_edge18)
- .quad _C_LABEL(Xintr_ioapic_edge19), _C_LABEL(Xrecurse_ioapic_edge19)
- .quad _C_LABEL(Xresume_ioapic_edge19)
- .quad _C_LABEL(Xintr_ioapic_edge20), _C_LABEL(Xrecurse_ioapic_edge20)
- .quad _C_LABEL(Xresume_ioapic_edge20)
- .quad _C_LABEL(Xintr_ioapic_edge21), _C_LABEL(Xrecurse_ioapic_edge21)
- .quad _C_LABEL(Xresume_ioapic_edge21)
- .quad _C_LABEL(Xintr_ioapic_edge22), _C_LABEL(Xrecurse_ioapic_edge22)
- .quad _C_LABEL(Xresume_ioapic_edge22)
- .quad _C_LABEL(Xintr_ioapic_edge23), _C_LABEL(Xrecurse_ioapic_edge23)
- .quad _C_LABEL(Xresume_ioapic_edge23)
- .quad _C_LABEL(Xintr_ioapic_edge24), _C_LABEL(Xrecurse_ioapic_edge24)
- .quad _C_LABEL(Xresume_ioapic_edge24)
- .quad _C_LABEL(Xintr_ioapic_edge25), _C_LABEL(Xrecurse_ioapic_edge25)
- .quad _C_LABEL(Xresume_ioapic_edge25)
- .quad _C_LABEL(Xintr_ioapic_edge26), _C_LABEL(Xrecurse_ioapic_edge26)
- .quad _C_LABEL(Xresume_ioapic_edge26)
- .quad _C_LABEL(Xintr_ioapic_edge27), _C_LABEL(Xrecurse_ioapic_edge27)
- .quad _C_LABEL(Xresume_ioapic_edge27)
- .quad _C_LABEL(Xintr_ioapic_edge28), _C_LABEL(Xrecurse_ioapic_edge28)
- .quad _C_LABEL(Xresume_ioapic_edge28)
- .quad _C_LABEL(Xintr_ioapic_edge29), _C_LABEL(Xrecurse_ioapic_edge29)
- .quad _C_LABEL(Xresume_ioapic_edge29)
- .quad _C_LABEL(Xintr_ioapic_edge30), _C_LABEL(Xrecurse_ioapic_edge30)
- .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)
-
- .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)
- .quad _C_LABEL(Xresume_ioapic_level1)
- .quad _C_LABEL(Xintr_ioapic_level2), _C_LABEL(Xrecurse_ioapic_level2)
- .quad _C_LABEL(Xresume_ioapic_level2)
- .quad _C_LABEL(Xintr_ioapic_level3), _C_LABEL(Xrecurse_ioapic_level3)
- .quad _C_LABEL(Xresume_ioapic_level3)
- .quad _C_LABEL(Xintr_ioapic_level4), _C_LABEL(Xrecurse_ioapic_level4)
- .quad _C_LABEL(Xresume_ioapic_level4)
- .quad _C_LABEL(Xintr_ioapic_level5), _C_LABEL(Xrecurse_ioapic_level5)
- .quad _C_LABEL(Xresume_ioapic_level5)
- .quad _C_LABEL(Xintr_ioapic_level6), _C_LABEL(Xrecurse_ioapic_level6)
- .quad _C_LABEL(Xresume_ioapic_level6)
- .quad _C_LABEL(Xintr_ioapic_level7), _C_LABEL(Xrecurse_ioapic_level7)
- .quad _C_LABEL(Xresume_ioapic_level7)
- .quad _C_LABEL(Xintr_ioapic_level8), _C_LABEL(Xrecurse_ioapic_level8)
- .quad _C_LABEL(Xresume_ioapic_level8)
- .quad _C_LABEL(Xintr_ioapic_level9), _C_LABEL(Xrecurse_ioapic_level9)
- .quad _C_LABEL(Xresume_ioapic_level9)
- .quad _C_LABEL(Xintr_ioapic_level10), _C_LABEL(Xrecurse_ioapic_level10)
- .quad _C_LABEL(Xresume_ioapic_level10)
- .quad _C_LABEL(Xintr_ioapic_level11), _C_LABEL(Xrecurse_ioapic_level11)
- .quad _C_LABEL(Xresume_ioapic_level11)
- .quad _C_LABEL(Xintr_ioapic_level12), _C_LABEL(Xrecurse_ioapic_level12)
- .quad _C_LABEL(Xresume_ioapic_level12)
- .quad _C_LABEL(Xintr_ioapic_level13), _C_LABEL(Xrecurse_ioapic_level13)
- .quad _C_LABEL(Xresume_ioapic_level13)
- .quad _C_LABEL(Xintr_ioapic_level14), _C_LABEL(Xrecurse_ioapic_level14)
- .quad _C_LABEL(Xresume_ioapic_level14)
- .quad _C_LABEL(Xintr_ioapic_level15), _C_LABEL(Xrecurse_ioapic_level15)
- .quad _C_LABEL(Xresume_ioapic_level15)
- .quad _C_LABEL(Xintr_ioapic_level16), _C_LABEL(Xrecurse_ioapic_level16)
- .quad _C_LABEL(Xresume_ioapic_level16)
- .quad _C_LABEL(Xintr_ioapic_level17), _C_LABEL(Xrecurse_ioapic_level17)
- .quad _C_LABEL(Xresume_ioapic_level17)
- .quad _C_LABEL(Xintr_ioapic_level18), _C_LABEL(Xrecurse_ioapic_level18)
- .quad _C_LABEL(Xresume_ioapic_level18)
- .quad _C_LABEL(Xintr_ioapic_level19), _C_LABEL(Xrecurse_ioapic_level19)
- .quad _C_LABEL(Xresume_ioapic_level19)
- .quad _C_LABEL(Xintr_ioapic_level20), _C_LABEL(Xrecurse_ioapic_level20)
- .quad _C_LABEL(Xresume_ioapic_level20)
- .quad _C_LABEL(Xintr_ioapic_level21), _C_LABEL(Xrecurse_ioapic_level21)
- .quad _C_LABEL(Xresume_ioapic_level21)
- .quad _C_LABEL(Xintr_ioapic_level22), _C_LABEL(Xrecurse_ioapic_level22)
- .quad _C_LABEL(Xresume_ioapic_level22)
- .quad _C_LABEL(Xintr_ioapic_level23), _C_LABEL(Xrecurse_ioapic_level23)
- .quad _C_LABEL(Xresume_ioapic_level23)
- .quad _C_LABEL(Xintr_ioapic_level24), _C_LABEL(Xrecurse_ioapic_level24)
- .quad _C_LABEL(Xresume_ioapic_level24)
- .quad _C_LABEL(Xintr_ioapic_level25), _C_LABEL(Xrecurse_ioapic_level25)
- .quad _C_LABEL(Xresume_ioapic_level25)
- .quad _C_LABEL(Xintr_ioapic_level26), _C_LABEL(Xrecurse_ioapic_level26)
- .quad _C_LABEL(Xresume_ioapic_level26)
- .quad _C_LABEL(Xintr_ioapic_level27), _C_LABEL(Xrecurse_ioapic_level27)
- .quad _C_LABEL(Xresume_ioapic_level27)
- .quad _C_LABEL(Xintr_ioapic_level28), _C_LABEL(Xrecurse_ioapic_level28)
- .quad _C_LABEL(Xresume_ioapic_level28)
- .quad _C_LABEL(Xintr_ioapic_level29), _C_LABEL(Xrecurse_ioapic_level29)
- .quad _C_LABEL(Xresume_ioapic_level29)
- .quad _C_LABEL(Xintr_ioapic_level30), _C_LABEL(Xrecurse_ioapic_level30)
- .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)
-
- .type _C_LABEL(x2apic_edge_stubs), @object
-LABEL(x2apic_edge_stubs)
- .quad _C_LABEL(Xintr_x2apic_edge0), _C_LABEL(Xrecurse_x2apic_edge0)
- .quad _C_LABEL(Xresume_x2apic_edge0)
- .quad _C_LABEL(Xintr_x2apic_edge1), _C_LABEL(Xrecurse_x2apic_edge1)
- .quad _C_LABEL(Xresume_x2apic_edge1)
- .quad _C_LABEL(Xintr_x2apic_edge2), _C_LABEL(Xrecurse_x2apic_edge2)
- .quad _C_LABEL(Xresume_x2apic_edge2)
- .quad _C_LABEL(Xintr_x2apic_edge3), _C_LABEL(Xrecurse_x2apic_edge3)
- .quad _C_LABEL(Xresume_x2apic_edge3)
- .quad _C_LABEL(Xintr_x2apic_edge4), _C_LABEL(Xrecurse_x2apic_edge4)
- .quad _C_LABEL(Xresume_x2apic_edge4)
- .quad _C_LABEL(Xintr_x2apic_edge5), _C_LABEL(Xrecurse_x2apic_edge5)
- .quad _C_LABEL(Xresume_x2apic_edge5)
- .quad _C_LABEL(Xintr_x2apic_edge6), _C_LABEL(Xrecurse_x2apic_edge6)
- .quad _C_LABEL(Xresume_x2apic_edge6)
- .quad _C_LABEL(Xintr_x2apic_edge7), _C_LABEL(Xrecurse_x2apic_edge7)
- .quad _C_LABEL(Xresume_x2apic_edge7)
- .quad _C_LABEL(Xintr_x2apic_edge8), _C_LABEL(Xrecurse_x2apic_edge8)
- .quad _C_LABEL(Xresume_x2apic_edge8)
- .quad _C_LABEL(Xintr_x2apic_edge9), _C_LABEL(Xrecurse_x2apic_edge9)
- .quad _C_LABEL(Xresume_x2apic_edge9)
- .quad _C_LABEL(Xintr_x2apic_edge10), _C_LABEL(Xrecurse_x2apic_edge10)
- .quad _C_LABEL(Xresume_x2apic_edge10)
- .quad _C_LABEL(Xintr_x2apic_edge11), _C_LABEL(Xrecurse_x2apic_edge11)
- .quad _C_LABEL(Xresume_x2apic_edge11)
- .quad _C_LABEL(Xintr_x2apic_edge12), _C_LABEL(Xrecurse_x2apic_edge12)
- .quad _C_LABEL(Xresume_x2apic_edge12)
- .quad _C_LABEL(Xintr_x2apic_edge13), _C_LABEL(Xrecurse_x2apic_edge13)
- .quad _C_LABEL(Xresume_x2apic_edge13)
- .quad _C_LABEL(Xintr_x2apic_edge14), _C_LABEL(Xrecurse_x2apic_edge14)
- .quad _C_LABEL(Xresume_x2apic_edge14)
- .quad _C_LABEL(Xintr_x2apic_edge15), _C_LABEL(Xrecurse_x2apic_edge15)
- .quad _C_LABEL(Xresume_x2apic_edge15)
- .quad _C_LABEL(Xintr_x2apic_edge16), _C_LABEL(Xrecurse_x2apic_edge16)
- .quad _C_LABEL(Xresume_x2apic_edge16)
- .quad _C_LABEL(Xintr_x2apic_edge17), _C_LABEL(Xrecurse_x2apic_edge17)
- .quad _C_LABEL(Xresume_x2apic_edge17)
- .quad _C_LABEL(Xintr_x2apic_edge18), _C_LABEL(Xrecurse_x2apic_edge18)
- .quad _C_LABEL(Xresume_x2apic_edge18)
- .quad _C_LABEL(Xintr_x2apic_edge19), _C_LABEL(Xrecurse_x2apic_edge19)
- .quad _C_LABEL(Xresume_x2apic_edge19)
- .quad _C_LABEL(Xintr_x2apic_edge20), _C_LABEL(Xrecurse_x2apic_edge20)
- .quad _C_LABEL(Xresume_x2apic_edge20)
- .quad _C_LABEL(Xintr_x2apic_edge21), _C_LABEL(Xrecurse_x2apic_edge21)
- .quad _C_LABEL(Xresume_x2apic_edge21)
- .quad _C_LABEL(Xintr_x2apic_edge22), _C_LABEL(Xrecurse_x2apic_edge22)
- .quad _C_LABEL(Xresume_x2apic_edge22)
- .quad _C_LABEL(Xintr_x2apic_edge23), _C_LABEL(Xrecurse_x2apic_edge23)
- .quad _C_LABEL(Xresume_x2apic_edge23)
- .quad _C_LABEL(Xintr_x2apic_edge24), _C_LABEL(Xrecurse_x2apic_edge24)
- .quad _C_LABEL(Xresume_x2apic_edge24)
- .quad _C_LABEL(Xintr_x2apic_edge25), _C_LABEL(Xrecurse_x2apic_edge25)
- .quad _C_LABEL(Xresume_x2apic_edge25)
- .quad _C_LABEL(Xintr_x2apic_edge26), _C_LABEL(Xrecurse_x2apic_edge26)
- .quad _C_LABEL(Xresume_x2apic_edge26)
- .quad _C_LABEL(Xintr_x2apic_edge27), _C_LABEL(Xrecurse_x2apic_edge27)
- .quad _C_LABEL(Xresume_x2apic_edge27)
- .quad _C_LABEL(Xintr_x2apic_edge28), _C_LABEL(Xrecurse_x2apic_edge28)
- .quad _C_LABEL(Xresume_x2apic_edge28)
- .quad _C_LABEL(Xintr_x2apic_edge29), _C_LABEL(Xrecurse_x2apic_edge29)
- .quad _C_LABEL(Xresume_x2apic_edge29)
- .quad _C_LABEL(Xintr_x2apic_edge30), _C_LABEL(Xrecurse_x2apic_edge30)
- .quad _C_LABEL(Xresume_x2apic_edge30)
- .quad _C_LABEL(Xintr_x2apic_edge31), _C_LABEL(Xrecurse_x2apic_edge31)
- .quad _C_LABEL(Xresume_x2apic_edge31)
-END(x2apic_edge_stubs)
-
- .type _C_LABEL(x2apic_level_stubs), @object
-LABEL(x2apic_level_stubs)
- .quad _C_LABEL(Xintr_x2apic_level0), _C_LABEL(Xrecurse_x2apic_level0)
- .quad _C_LABEL(Xresume_x2apic_level0)
- .quad _C_LABEL(Xintr_x2apic_level1), _C_LABEL(Xrecurse_x2apic_level1)
- .quad _C_LABEL(Xresume_x2apic_level1)
- .quad _C_LABEL(Xintr_x2apic_level2), _C_LABEL(Xrecurse_x2apic_level2)
- .quad _C_LABEL(Xresume_x2apic_level2)
- .quad _C_LABEL(Xintr_x2apic_level3), _C_LABEL(Xrecurse_x2apic_level3)
- .quad _C_LABEL(Xresume_x2apic_level3)
- .quad _C_LABEL(Xintr_x2apic_level4), _C_LABEL(Xrecurse_x2apic_level4)
- .quad _C_LABEL(Xresume_x2apic_level4)
- .quad _C_LABEL(Xintr_x2apic_level5), _C_LABEL(Xrecurse_x2apic_level5)
- .quad _C_LABEL(Xresume_x2apic_level5)
- .quad _C_LABEL(Xintr_x2apic_level6), _C_LABEL(Xrecurse_x2apic_level6)
- .quad _C_LABEL(Xresume_x2apic_level6)
- .quad _C_LABEL(Xintr_x2apic_level7), _C_LABEL(Xrecurse_x2apic_level7)
- .quad _C_LABEL(Xresume_x2apic_level7)
- .quad _C_LABEL(Xintr_x2apic_level8), _C_LABEL(Xrecurse_x2apic_level8)
- .quad _C_LABEL(Xresume_x2apic_level8)
- .quad _C_LABEL(Xintr_x2apic_level9), _C_LABEL(Xrecurse_x2apic_level9)
- .quad _C_LABEL(Xresume_x2apic_level9)
- .quad _C_LABEL(Xintr_x2apic_level10), _C_LABEL(Xrecurse_x2apic_level10)
- .quad _C_LABEL(Xresume_x2apic_level10)
- .quad _C_LABEL(Xintr_x2apic_level11), _C_LABEL(Xrecurse_x2apic_level11)
- .quad _C_LABEL(Xresume_x2apic_level11)
- .quad _C_LABEL(Xintr_x2apic_level12), _C_LABEL(Xrecurse_x2apic_level12)
- .quad _C_LABEL(Xresume_x2apic_level12)
- .quad _C_LABEL(Xintr_x2apic_level13), _C_LABEL(Xrecurse_x2apic_level13)
- .quad _C_LABEL(Xresume_x2apic_level13)
- .quad _C_LABEL(Xintr_x2apic_level14), _C_LABEL(Xrecurse_x2apic_level14)
- .quad _C_LABEL(Xresume_x2apic_level14)
- .quad _C_LABEL(Xintr_x2apic_level15), _C_LABEL(Xrecurse_x2apic_level15)
- .quad _C_LABEL(Xresume_x2apic_level15)
- .quad _C_LABEL(Xintr_x2apic_level16), _C_LABEL(Xrecurse_x2apic_level16)
- .quad _C_LABEL(Xresume_x2apic_level16)
- .quad _C_LABEL(Xintr_x2apic_level17), _C_LABEL(Xrecurse_x2apic_level17)
- .quad _C_LABEL(Xresume_x2apic_level17)
- .quad _C_LABEL(Xintr_x2apic_level18), _C_LABEL(Xrecurse_x2apic_level18)
- .quad _C_LABEL(Xresume_x2apic_level18)
- .quad _C_LABEL(Xintr_x2apic_level19), _C_LABEL(Xrecurse_x2apic_level19)
- .quad _C_LABEL(Xresume_x2apic_level19)
- .quad _C_LABEL(Xintr_x2apic_level20), _C_LABEL(Xrecurse_x2apic_level20)
- .quad _C_LABEL(Xresume_x2apic_level20)
- .quad _C_LABEL(Xintr_x2apic_level21), _C_LABEL(Xrecurse_x2apic_level21)
- .quad _C_LABEL(Xresume_x2apic_level21)
- .quad _C_LABEL(Xintr_x2apic_level22), _C_LABEL(Xrecurse_x2apic_level22)
- .quad _C_LABEL(Xresume_x2apic_level22)
- .quad _C_LABEL(Xintr_x2apic_level23), _C_LABEL(Xrecurse_x2apic_level23)
- .quad _C_LABEL(Xresume_x2apic_level23)
- .quad _C_LABEL(Xintr_x2apic_level24), _C_LABEL(Xrecurse_x2apic_level24)
- .quad _C_LABEL(Xresume_x2apic_level24)
- .quad _C_LABEL(Xintr_x2apic_level25), _C_LABEL(Xrecurse_x2apic_level25)
- .quad _C_LABEL(Xresume_x2apic_level25)
- .quad _C_LABEL(Xintr_x2apic_level26), _C_LABEL(Xrecurse_x2apic_level26)
- .quad _C_LABEL(Xresume_x2apic_level26)
- .quad _C_LABEL(Xintr_x2apic_level27), _C_LABEL(Xrecurse_x2apic_level27)
- .quad _C_LABEL(Xresume_x2apic_level27)
- .quad _C_LABEL(Xintr_x2apic_level28), _C_LABEL(Xrecurse_x2apic_level28)
- .quad _C_LABEL(Xresume_x2apic_level28)
- .quad _C_LABEL(Xintr_x2apic_level29), _C_LABEL(Xrecurse_x2apic_level29)
- .quad _C_LABEL(Xresume_x2apic_level29)
- .quad _C_LABEL(Xintr_x2apic_level30), _C_LABEL(Xrecurse_x2apic_level30)
- .quad _C_LABEL(Xresume_x2apic_level30)
- .quad _C_LABEL(Xintr_x2apic_level31), _C_LABEL(Xrecurse_x2apic_level31)
- .quad _C_LABEL(Xresume_x2apic_level31)
-END(x2apic_level_stubs)
+
+/*
+ * Create a struct intrstub.
+ */
+#define INTRSTUB_ENTRY(name) \
+ .quad _C_LABEL(Xintr_ ## name ), _C_LABEL(Xrecurse_ ## name ) ; \
+ .quad _C_LABEL(Xresume_ ## name ) ;
+
+/*
+ * Create an array of structs intrstub.
+ */
+#define INTRSTUB_ARRAY(name) ; \
+ .type _C_LABEL(name ## _stubs), @object ; \
+LABEL(name ## _stubs) ; \
+ INTRSTUB_ENTRY(name ## 0) ; \
+ INTRSTUB_ENTRY(name ## 1) ; \
+ INTRSTUB_ENTRY(name ## 2) ; \
+ INTRSTUB_ENTRY(name ## 3) ; \
+ INTRSTUB_ENTRY(name ## 4) ; \
+ INTRSTUB_ENTRY(name ## 5) ; \
+ INTRSTUB_ENTRY(name ## 6) ; \
+ INTRSTUB_ENTRY(name ## 7) ; \
+ INTRSTUB_ENTRY(name ## 8) ; \
+ INTRSTUB_ENTRY(name ## 9) ; \
+ INTRSTUB_ENTRY(name ## 10) ; \
+ INTRSTUB_ENTRY(name ## 11) ; \
+ INTRSTUB_ENTRY(name ## 12) ; \
+ INTRSTUB_ENTRY(name ## 13) ; \
+ INTRSTUB_ENTRY(name ## 14) ; \
+ INTRSTUB_ENTRY(name ## 15) ; \
+ INTRSTUB_ENTRY(name ## 16) ; \
+ INTRSTUB_ENTRY(name ## 17) ; \
+ INTRSTUB_ENTRY(name ## 18) ; \
+ INTRSTUB_ENTRY(name ## 19) ; \
+ INTRSTUB_ENTRY(name ## 20) ; \
+ INTRSTUB_ENTRY(name ## 21) ; \
+ INTRSTUB_ENTRY(name ## 22) ; \
+ INTRSTUB_ENTRY(name ## 23) ; \
+ INTRSTUB_ENTRY(name ## 24) ; \
+ INTRSTUB_ENTRY(name ## 25) ; \
+ INTRSTUB_ENTRY(name ## 26) ; \
+ INTRSTUB_ENTRY(name ## 27) ; \
+ INTRSTUB_ENTRY(name ## 28) ; \
+ INTRSTUB_ENTRY(name ## 29) ; \
+ INTRSTUB_ENTRY(name ## 30) ; \
+ INTRSTUB_ENTRY(name ## 31) ; \
+END(name ## _stubs)
+
+INTRSTUB_ARRAY(ioapic_edge)
+INTRSTUB_ARRAY(ioapic_level)
+
+INTRSTUB_ARRAY(x2apic_edge)
+INTRSTUB_ARRAY(x2apic_level)
+
#endif
#endif /* !defined(XEN) */