* %rdi: prev task
* %rsi: next task
*/
+.pushsection .text, "ax"
SYM_FUNC_START(__switch_to_asm)
/*
* Save callee-saved registers
jmp __switch_to
SYM_FUNC_END(__switch_to_asm)
+.popsection
/*
* A newly forked process directly context switches into this address.
* 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
movq $0, RAX(%rsp)
jmp 2b
SYM_CODE_END(ret_from_fork)
+.popsection
/*
* Build the entry stubs with some assembler magic.
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
.previous
/* Call softirq on interrupt stack. Interrupts are off. */
+.pushsection .text, "ax"
SYM_FUNC_START(do_softirq_own_stack)
pushq %rbp
mov %rsp, %rbp
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
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. */
call do_exit
SYM_CODE_END(rewind_stack_do_exit)
+.popsection