Commit b9f6976b authored by Thomas Gleixner's avatar Thomas Gleixner

x86/entry/64: Move non entry code into .text section

All ASM code which is not part of the entry functionality can move out into
the .text section. No reason to keep it in the non-instrumentable entry
section.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
Reviewed-by: default avatarAlexandre Chartre <alexandre.chartre@oracle.com>
Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20200505134340.227579223@linutronix.de


parent fba8dbea
...@@ -279,6 +279,7 @@ SYM_CODE_END(entry_SYSCALL_64) ...@@ -279,6 +279,7 @@ SYM_CODE_END(entry_SYSCALL_64)
* %rdi: prev task * %rdi: prev task
* %rsi: next task * %rsi: next task
*/ */
.pushsection .text, "ax"
SYM_FUNC_START(__switch_to_asm) SYM_FUNC_START(__switch_to_asm)
/* /*
* Save callee-saved registers * Save callee-saved registers
...@@ -321,6 +322,7 @@ SYM_FUNC_START(__switch_to_asm) ...@@ -321,6 +322,7 @@ SYM_FUNC_START(__switch_to_asm)
jmp __switch_to jmp __switch_to
SYM_FUNC_END(__switch_to_asm) SYM_FUNC_END(__switch_to_asm)
.popsection
/* /*
* A newly forked process directly context switches into this address. * A newly forked process directly context switches into this address.
...@@ -329,6 +331,7 @@ SYM_FUNC_END(__switch_to_asm) ...@@ -329,6 +331,7 @@ SYM_FUNC_END(__switch_to_asm)
* rbx: kernel thread func (NULL for user thread) * rbx: kernel thread func (NULL for user thread)
* r12: kernel thread arg * r12: kernel thread arg
*/ */
.pushsection .text, "ax"
SYM_CODE_START(ret_from_fork) SYM_CODE_START(ret_from_fork)
UNWIND_HINT_EMPTY UNWIND_HINT_EMPTY
movq %rax, %rdi movq %rax, %rdi
...@@ -357,6 +360,7 @@ SYM_CODE_START(ret_from_fork) ...@@ -357,6 +360,7 @@ SYM_CODE_START(ret_from_fork)
movq $0, RAX(%rsp) movq $0, RAX(%rsp)
jmp 2b jmp 2b
SYM_CODE_END(ret_from_fork) SYM_CODE_END(ret_from_fork)
.popsection
/* /*
* Build the entry stubs with some assembler magic. * Build the entry stubs with some assembler magic.
...@@ -1037,9 +1041,11 @@ idtentry alignment_check do_alignment_check has_error_code=1 ...@@ -1037,9 +1041,11 @@ idtentry alignment_check do_alignment_check has_error_code=1
idtentry simd_coprocessor_error do_simd_coprocessor_error has_error_code=0 idtentry simd_coprocessor_error do_simd_coprocessor_error has_error_code=0
/* /*
* Reload gs selector with exception handling * Reload gs selector with exception handling
* edi: new selector * edi: new selector
*
* Is in entry.text as it shouldn't be instrumented.
*/ */
SYM_FUNC_START(native_load_gs_index) SYM_FUNC_START(native_load_gs_index)
FRAME_BEGIN FRAME_BEGIN
...@@ -1076,6 +1082,7 @@ SYM_CODE_END(.Lbad_gs) ...@@ -1076,6 +1082,7 @@ SYM_CODE_END(.Lbad_gs)
.previous .previous
/* Call softirq on interrupt stack. Interrupts are off. */ /* Call softirq on interrupt stack. Interrupts are off. */
.pushsection .text, "ax"
SYM_FUNC_START(do_softirq_own_stack) SYM_FUNC_START(do_softirq_own_stack)
pushq %rbp pushq %rbp
mov %rsp, %rbp mov %rsp, %rbp
...@@ -1085,6 +1092,7 @@ SYM_FUNC_START(do_softirq_own_stack) ...@@ -1085,6 +1092,7 @@ SYM_FUNC_START(do_softirq_own_stack)
leaveq leaveq
ret ret
SYM_FUNC_END(do_softirq_own_stack) SYM_FUNC_END(do_softirq_own_stack)
.popsection
#ifdef CONFIG_XEN_PV #ifdef CONFIG_XEN_PV
idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0 idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0
...@@ -1728,6 +1736,7 @@ SYM_CODE_START(ignore_sysret) ...@@ -1728,6 +1736,7 @@ SYM_CODE_START(ignore_sysret)
SYM_CODE_END(ignore_sysret) SYM_CODE_END(ignore_sysret)
#endif #endif
.pushsection .text, "ax"
SYM_CODE_START(rewind_stack_do_exit) SYM_CODE_START(rewind_stack_do_exit)
UNWIND_HINT_FUNC UNWIND_HINT_FUNC
/* Prevent any naive code from trying to unwind to our caller. */ /* Prevent any naive code from trying to unwind to our caller. */
...@@ -1739,3 +1748,4 @@ SYM_CODE_START(rewind_stack_do_exit) ...@@ -1739,3 +1748,4 @@ SYM_CODE_START(rewind_stack_do_exit)
call do_exit call do_exit
SYM_CODE_END(rewind_stack_do_exit) SYM_CODE_END(rewind_stack_do_exit)
.popsection
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#include <asm/frame.h> #include <asm/frame.h>
.code64 .code64
.section .entry.text, "ax" .section .text, "ax"
#ifdef CONFIG_FRAME_POINTER #ifdef CONFIG_FRAME_POINTER
/* Save parent and function stack frames (rip and rbp) */ /* Save parent and function stack frames (rip and rbp) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment