diff options
| -rw-r--r-- | arch/x86/ia32/ia32entry.S | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/entry_32.S | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/entry_64.S | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/vmlinux.lds.S | 1 | ||||
| -rw-r--r-- | include/asm-generic/sections.h | 1 | ||||
| -rw-r--r-- | include/asm-generic/vmlinux.lds.h | 6 |
6 files changed, 18 insertions, 4 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 518bb99c3394..f729b2e9679c 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
| @@ -25,6 +25,8 @@ | |||
| 25 | #define sysretl_audit ia32_ret_from_sys_call | 25 | #define sysretl_audit ia32_ret_from_sys_call |
| 26 | #endif | 26 | #endif |
| 27 | 27 | ||
| 28 | .section .entry.text, "ax" | ||
| 29 | |||
| 28 | #define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8) | 30 | #define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8) |
| 29 | 31 | ||
| 30 | .macro IA32_ARG_FIXUP noebp=0 | 32 | .macro IA32_ARG_FIXUP noebp=0 |
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index c8b4efad7ebb..f5accf8eaa78 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
| @@ -65,6 +65,8 @@ | |||
| 65 | #define sysexit_audit syscall_exit_work | 65 | #define sysexit_audit syscall_exit_work |
| 66 | #endif | 66 | #endif |
| 67 | 67 | ||
| 68 | .section .entry.text, "ax" | ||
| 69 | |||
| 68 | /* | 70 | /* |
| 69 | * We use macros for low-level operations which need to be overridden | 71 | * We use macros for low-level operations which need to be overridden |
| 70 | * for paravirtualization. The following will never clobber any registers: | 72 | * for paravirtualization. The following will never clobber any registers: |
| @@ -788,7 +790,7 @@ ENDPROC(ptregs_clone) | |||
| 788 | */ | 790 | */ |
| 789 | .section .init.rodata,"a" | 791 | .section .init.rodata,"a" |
| 790 | ENTRY(interrupt) | 792 | ENTRY(interrupt) |
| 791 | .text | 793 | .section .entry.text, "ax" |
| 792 | .p2align 5 | 794 | .p2align 5 |
| 793 | .p2align CONFIG_X86_L1_CACHE_SHIFT | 795 | .p2align CONFIG_X86_L1_CACHE_SHIFT |
| 794 | ENTRY(irq_entries_start) | 796 | ENTRY(irq_entries_start) |
| @@ -807,7 +809,7 @@ vector=FIRST_EXTERNAL_VECTOR | |||
| 807 | .endif | 809 | .endif |
| 808 | .previous | 810 | .previous |
| 809 | .long 1b | 811 | .long 1b |
| 810 | .text | 812 | .section .entry.text, "ax" |
| 811 | vector=vector+1 | 813 | vector=vector+1 |
| 812 | .endif | 814 | .endif |
| 813 | .endr | 815 | .endr |
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index aed1ffbeb0c9..0a0ed794edb2 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
| @@ -61,6 +61,8 @@ | |||
| 61 | #define __AUDIT_ARCH_LE 0x40000000 | 61 | #define __AUDIT_ARCH_LE 0x40000000 |
| 62 | 62 | ||
| 63 | .code64 | 63 | .code64 |
| 64 | .section .entry.text, "ax" | ||
| 65 | |||
| 64 | #ifdef CONFIG_FUNCTION_TRACER | 66 | #ifdef CONFIG_FUNCTION_TRACER |
| 65 | #ifdef CONFIG_DYNAMIC_FTRACE | 67 | #ifdef CONFIG_DYNAMIC_FTRACE |
| 66 | ENTRY(mcount) | 68 | ENTRY(mcount) |
| @@ -744,7 +746,7 @@ END(stub_rt_sigreturn) | |||
| 744 | */ | 746 | */ |
| 745 | .section .init.rodata,"a" | 747 | .section .init.rodata,"a" |
| 746 | ENTRY(interrupt) | 748 | ENTRY(interrupt) |
| 747 | .text | 749 | .section .entry.text |
| 748 | .p2align 5 | 750 | .p2align 5 |
| 749 | .p2align CONFIG_X86_L1_CACHE_SHIFT | 751 | .p2align CONFIG_X86_L1_CACHE_SHIFT |
| 750 | ENTRY(irq_entries_start) | 752 | ENTRY(irq_entries_start) |
| @@ -763,7 +765,7 @@ vector=FIRST_EXTERNAL_VECTOR | |||
| 763 | .endif | 765 | .endif |
| 764 | .previous | 766 | .previous |
| 765 | .quad 1b | 767 | .quad 1b |
| 766 | .text | 768 | .section .entry.text |
| 767 | vector=vector+1 | 769 | vector=vector+1 |
| 768 | .endif | 770 | .endif |
| 769 | .endr | 771 | .endr |
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index bf4700755184..6d4341d5c52a 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S | |||
| @@ -105,6 +105,7 @@ SECTIONS | |||
| 105 | SCHED_TEXT | 105 | SCHED_TEXT |
| 106 | LOCK_TEXT | 106 | LOCK_TEXT |
| 107 | KPROBES_TEXT | 107 | KPROBES_TEXT |
| 108 | ENTRY_TEXT | ||
| 108 | IRQENTRY_TEXT | 109 | IRQENTRY_TEXT |
| 109 | *(.fixup) | 110 | *(.fixup) |
| 110 | *(.gnu.warning) | 111 | *(.gnu.warning) |
diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index b3bfabc258f3..c1a1216e29ce 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h | |||
| @@ -11,6 +11,7 @@ extern char _sinittext[], _einittext[]; | |||
| 11 | extern char _end[]; | 11 | extern char _end[]; |
| 12 | extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[]; | 12 | extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[]; |
| 13 | extern char __kprobes_text_start[], __kprobes_text_end[]; | 13 | extern char __kprobes_text_start[], __kprobes_text_end[]; |
| 14 | extern char __entry_text_start[], __entry_text_end[]; | ||
| 14 | extern char __initdata_begin[], __initdata_end[]; | 15 | extern char __initdata_begin[], __initdata_end[]; |
| 15 | extern char __start_rodata[], __end_rodata[]; | 16 | extern char __start_rodata[], __end_rodata[]; |
| 16 | 17 | ||
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index fe77e3395b40..906c3ceca9a2 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
| @@ -424,6 +424,12 @@ | |||
| 424 | *(.kprobes.text) \ | 424 | *(.kprobes.text) \ |
| 425 | VMLINUX_SYMBOL(__kprobes_text_end) = .; | 425 | VMLINUX_SYMBOL(__kprobes_text_end) = .; |
| 426 | 426 | ||
| 427 | #define ENTRY_TEXT \ | ||
| 428 | ALIGN_FUNCTION(); \ | ||
| 429 | VMLINUX_SYMBOL(__entry_text_start) = .; \ | ||
| 430 | *(.entry.text) \ | ||
| 431 | VMLINUX_SYMBOL(__entry_text_end) = .; | ||
| 432 | |||
| 427 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 433 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
| 428 | #define IRQENTRY_TEXT \ | 434 | #define IRQENTRY_TEXT \ |
| 429 | ALIGN_FUNCTION(); \ | 435 | ALIGN_FUNCTION(); \ |
