x86, extable: Remove open-coded exception table entries in arch/x86/kernel/entry_32.S
authorH. Peter Anvin <hpa@zytor.com>
Fri, 20 Apr 2012 19:19:50 +0000 (12:19 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Fri, 20 Apr 2012 20:51:38 +0000 (13:51 -0700)
Remove open-coded exception table entries in arch/x86/kernel/entry_32.S,
and replace them with _ASM_EXTABLE() macros; this will allow us to
change the format and type of the exception table entries.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: David Daney <david.daney@cavium.com>
Link: http://lkml.kernel.org/r/CA%2B55aFyijf43qSu3N9nWHEBwaGbb7T2Oq9A=9EyR=Jtyqfq_cQ@mail.gmail.com
arch/x86/kernel/entry_32.S

index 7b784f4ef1e483876ad98e432283d1ba82c890a1..01ccf9b71473ce18ffe0cccf5fa09fd379dcf4cf 100644 (file)
@@ -56,6 +56,7 @@
 #include <asm/irq_vectors.h>
 #include <asm/cpufeature.h>
 #include <asm/alternative-asm.h>
+#include <asm/asm.h>
 
 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this.  */
 #include <linux/elf-em.h>
 .pushsection .fixup, "ax"
 99:    movl $0, (%esp)
        jmp 98b
-.section __ex_table, "a"
-       .align 4
-       .long 98b, 99b
 .popsection
+       _ASM_EXTABLE(98b,99b)
 .endm
 
 .macro PTGS_TO_GS
 .pushsection .fixup, "ax"
 99:    movl $0, PT_GS(%esp)
        jmp 98b
-.section __ex_table, "a"
-       .align 4
-       .long 98b, 99b
 .popsection
+       _ASM_EXTABLE(98b,99b)
 .endm
 
 .macro GS_TO_REG reg
        jmp 2b
 6:     movl $0, (%esp)
        jmp 3b
-.section __ex_table, "a"
-       .align 4
-       .long 1b, 4b
-       .long 2b, 5b
-       .long 3b, 6b
 .popsection
+       _ASM_EXTABLE(1b,4b)
+       _ASM_EXTABLE(2b,5b)
+       _ASM_EXTABLE(3b,6b)
        POP_GS_EX
 .endm
 
@@ -415,10 +410,7 @@ sysenter_past_esp:
        jae syscall_fault
 1:     movl (%ebp),%ebp
        movl %ebp,PT_EBP(%esp)
-.section __ex_table,"a"
-       .align 4
-       .long 1b,syscall_fault
-.previous
+       _ASM_EXTABLE(1b,syscall_fault)
 
        GET_THREAD_INFO(%ebp)
 
@@ -485,10 +477,8 @@ sysexit_audit:
 .pushsection .fixup,"ax"
 2:     movl $0,PT_FS(%esp)
        jmp 1b
-.section __ex_table,"a"
-       .align 4
-       .long 1b,2b
 .popsection
+       _ASM_EXTABLE(1b,2b)
        PTGS_TO_GS_EX
 ENDPROC(ia32_sysenter_target)
 
@@ -543,10 +533,7 @@ ENTRY(iret_exc)
        pushl $do_iret_error
        jmp error_code
 .previous
-.section __ex_table,"a"
-       .align 4
-       .long irq_return,iret_exc
-.previous
+       _ASM_EXTABLE(irq_return,iret_exc)
 
        CFI_RESTORE_STATE
 ldt_ss:
@@ -901,10 +888,7 @@ END(device_not_available)
 #ifdef CONFIG_PARAVIRT
 ENTRY(native_iret)
        iret
-.section __ex_table,"a"
-       .align 4
-       .long native_iret, iret_exc
-.previous
+       _ASM_EXTABLE(native_iret, iret_exc)
 END(native_iret)
 
 ENTRY(native_irq_enable_sysexit)
@@ -1093,13 +1077,10 @@ ENTRY(xen_failsafe_callback)
        movl %eax,16(%esp)
        jmp 4b
 .previous
-.section __ex_table,"a"
-       .align 4
-       .long 1b,6b
-       .long 2b,7b
-       .long 3b,8b
-       .long 4b,9b
-.previous
+       _ASM_EXTABLE(1b,6b)
+       _ASM_EXTABLE(2b,7b)
+       _ASM_EXTABLE(3b,8b)
+       _ASM_EXTABLE(4b,9b)
 ENDPROC(xen_failsafe_callback)
 
 BUILD_INTERRUPT3(xen_hvm_callback_vector, XEN_HVM_EVTCHN_CALLBACK,