aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/x86_64/entry.S
diff options
context:
space:
mode:
authorKeir Fraser <keir@xen.org>2010-12-24 08:47:23 +0000
committerKeir Fraser <keir@xen.org>2010-12-24 08:47:23 +0000
commit0c4ff0fb92533aff947945f3562221a83bbfb941 (patch)
tree6c87342b77718bc05e02e23841051c8aa01d6abe /xen/arch/x86/x86_64/entry.S
parentabf60d361232f53ad3c51fab74ff3b6f084d7f8e (diff)
downloadxen-0c4ff0fb92533aff947945f3562221a83bbfb941.tar.gz
xen-0c4ff0fb92533aff947945f3562221a83bbfb941.tar.bz2
xen-0c4ff0fb92533aff947945f3562221a83bbfb941.zip
x86-64: use PC-relative exception table entries
... thus allowing to make the entries half their current size. Rather than adjusting all instances to the new layout, abstract the construction the table entries via a macro (paralleling a similar one in recent Linux). Also change the name of the section (to allow easier detection of missed cases) and merge the final resulting output sections into .data.read_mostly. Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/arch/x86/x86_64/entry.S')
-rw-r--r--xen/arch/x86/x86_64/entry.S28
1 files changed, 14 insertions, 14 deletions
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 7c5fe92786..b30f2d0c13 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -84,12 +84,8 @@ failsafe_callback:
1: call create_bounce_frame
jmp test_all_events
.previous
-.section __pre_ex_table,"a"
- .quad .Lft0,.Lfx0
-.previous
-.section __ex_table,"a"
- .quad .Ldf0,failsafe_callback
-.previous
+ _ASM_PRE_EXTABLE(.Lft0, .Lfx0)
+ _ASM_EXTABLE(.Ldf0, failsafe_callback)
ALIGN
/* No special register assumptions. */
@@ -412,14 +408,18 @@ UNLIKELY_END(bounce_failsafe)
jz domain_crash_synchronous
movq %rax,UREGS_rip+8(%rsp)
ret
-.section __ex_table,"a"
- .quad .Lft2,domain_crash_synchronous , .Lft3,domain_crash_synchronous
- .quad .Lft4,domain_crash_synchronous , .Lft5,domain_crash_synchronous
- .quad .Lft6,domain_crash_synchronous , .Lft7,domain_crash_synchronous
- .quad .Lft8,domain_crash_synchronous , .Lft9,domain_crash_synchronous
- .quad .Lft10,domain_crash_synchronous , .Lft11,domain_crash_synchronous
- .quad .Lft12,domain_crash_synchronous , .Lft13,domain_crash_synchronous
-.previous
+ _ASM_EXTABLE(.Lft2, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft3, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft4, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft5, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft6, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft7, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft8, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft9, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft10, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft11, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft12, domain_crash_synchronous)
+ _ASM_EXTABLE(.Lft13, domain_crash_synchronous)
domain_crash_synchronous_string:
.asciz "domain_crash_sync called from entry.S\n"