mirror of
https://github.com/torvalds/linux.git
synced 2024-11-14 08:02:07 +00:00
c6c2d7a084
Without this patch the linker will generate a section named .sched.text.1 which is unexpected. This is because the gcc generated section has "ax" but the assembler usage of .sched.text lacks the "ax" specifier. It would be better to have a definition we could use from assembler code but I did not find a suitable header file for it. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
72 lines
1.6 KiB
ArmAsm
72 lines
1.6 KiB
ArmAsm
/*
|
|
* Save registers before calling assembly functions. This avoids
|
|
* disturbance of register allocation in some inline assembly constructs.
|
|
* Copyright 2001,2002 by Andi Kleen, SuSE Labs.
|
|
* Subject to the GNU public license, v.2. No warranty of any kind.
|
|
*/
|
|
|
|
#include <linux/linkage.h>
|
|
#include <asm/dwarf2.h>
|
|
#include <asm/calling.h>
|
|
#include <asm/rwlock.h>
|
|
|
|
/* rdi: arg1 ... normal C conventions. rax is saved/restored. */
|
|
.macro thunk name,func
|
|
.globl \name
|
|
\name:
|
|
CFI_STARTPROC
|
|
SAVE_ARGS
|
|
call \func
|
|
jmp restore
|
|
CFI_ENDPROC
|
|
.endm
|
|
|
|
/* rdi: arg1 ... normal C conventions. rax is passed from C. */
|
|
.macro thunk_retrax name,func
|
|
.globl \name
|
|
\name:
|
|
CFI_STARTPROC
|
|
SAVE_ARGS
|
|
call \func
|
|
jmp restore_norax
|
|
CFI_ENDPROC
|
|
.endm
|
|
|
|
|
|
.section .sched.text, "ax"
|
|
#ifdef CONFIG_RWSEM_XCHGADD_ALGORITHM
|
|
thunk rwsem_down_read_failed_thunk,rwsem_down_read_failed
|
|
thunk rwsem_down_write_failed_thunk,rwsem_down_write_failed
|
|
thunk rwsem_wake_thunk,rwsem_wake
|
|
thunk rwsem_downgrade_thunk,rwsem_downgrade_wake
|
|
#endif
|
|
|
|
thunk __down_failed,__down
|
|
thunk_retrax __down_failed_interruptible,__down_interruptible
|
|
thunk_retrax __down_failed_trylock,__down_trylock
|
|
thunk __up_wakeup,__up
|
|
|
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
|
thunk trace_hardirqs_on_thunk,trace_hardirqs_on
|
|
thunk trace_hardirqs_off_thunk,trace_hardirqs_off
|
|
#endif
|
|
|
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
|
thunk lockdep_sys_exit_thunk,lockdep_sys_exit
|
|
#endif
|
|
|
|
/* SAVE_ARGS below is used only for the .cfi directives it contains. */
|
|
CFI_STARTPROC
|
|
SAVE_ARGS
|
|
restore:
|
|
RESTORE_ARGS
|
|
ret
|
|
CFI_ENDPROC
|
|
|
|
CFI_STARTPROC
|
|
SAVE_ARGS
|
|
restore_norax:
|
|
RESTORE_ARGS 1
|
|
ret
|
|
CFI_ENDPROC
|