Skip to content

Commit

Permalink
x86/entry/64: Move non entry code into .text section
Browse files Browse the repository at this point in the history
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: Thomas Gleixner <[email protected]>
Reviewed-by: Steven Rostedt (VMware) <[email protected]>
Reviewed-by: Alexandre Chartre <[email protected]>
Acked-by: Peter Zijlstra <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
  • Loading branch information
KAGA-KOKO committed Jun 11, 2020
1 parent fba8dbe commit b9f6976
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
18 changes: 14 additions & 4 deletions arch/x86/entry/entry_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ SYM_CODE_END(entry_SYSCALL_64)
* %rdi: prev task
* %rsi: next task
*/
.pushsection .text, "ax"
SYM_FUNC_START(__switch_to_asm)
/*
* Save callee-saved registers
Expand Down Expand Up @@ -321,6 +322,7 @@ SYM_FUNC_START(__switch_to_asm)

jmp __switch_to
SYM_FUNC_END(__switch_to_asm)
.popsection

/*
* A newly forked process directly context switches into this address.
Expand All @@ -329,6 +331,7 @@ SYM_FUNC_END(__switch_to_asm)
* rbx: kernel thread func (NULL for user thread)
* r12: kernel thread arg
*/
.pushsection .text, "ax"
SYM_CODE_START(ret_from_fork)
UNWIND_HINT_EMPTY
movq %rax, %rdi
Expand Down Expand Up @@ -357,6 +360,7 @@ SYM_CODE_START(ret_from_fork)
movq $0, RAX(%rsp)
jmp 2b
SYM_CODE_END(ret_from_fork)
.popsection

/*
* Build the entry stubs with some assembler magic.
Expand Down Expand Up @@ -1037,10 +1041,12 @@ idtentry alignment_check do_alignment_check has_error_code=1
idtentry simd_coprocessor_error do_simd_coprocessor_error has_error_code=0


/*
* Reload gs selector with exception handling
* edi: new selector
*/
/*
* Reload gs selector with exception handling
* edi: new selector
*
* Is in entry.text as it shouldn't be instrumented.
*/
SYM_FUNC_START(native_load_gs_index)
FRAME_BEGIN
pushfq
Expand Down Expand Up @@ -1076,6 +1082,7 @@ SYM_CODE_END(.Lbad_gs)
.previous

/* Call softirq on interrupt stack. Interrupts are off. */
.pushsection .text, "ax"
SYM_FUNC_START(do_softirq_own_stack)
pushq %rbp
mov %rsp, %rbp
Expand All @@ -1085,6 +1092,7 @@ SYM_FUNC_START(do_softirq_own_stack)
leaveq
ret
SYM_FUNC_END(do_softirq_own_stack)
.popsection

#ifdef CONFIG_XEN_PV
idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0
Expand Down Expand Up @@ -1728,6 +1736,7 @@ SYM_CODE_START(ignore_sysret)
SYM_CODE_END(ignore_sysret)
#endif

.pushsection .text, "ax"
SYM_CODE_START(rewind_stack_do_exit)
UNWIND_HINT_FUNC
/* Prevent any naive code from trying to unwind to our caller. */
Expand All @@ -1739,3 +1748,4 @@ SYM_CODE_START(rewind_stack_do_exit)

call do_exit
SYM_CODE_END(rewind_stack_do_exit)
.popsection
2 changes: 1 addition & 1 deletion arch/x86/kernel/ftrace_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#include <asm/frame.h>

.code64
.section .entry.text, "ax"
.section .text, "ax"

#ifdef CONFIG_FRAME_POINTER
/* Save parent and function stack frames (rip and rbp) */
Expand Down

0 comments on commit b9f6976

Please sign in to comment.