Skip to content

Commit

Permalink
x86, asm: Cleanup thunk_64.S
Browse files Browse the repository at this point in the history
Drop thunk_ra macro in favor of an additional argument to the thunk
macro since their bodies are almost identical. Do a whitespace scrubbing
and use CFI-aware macros for full annotation.

Signed-off-by: Borislav Petkov <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: H. Peter Anvin <[email protected]>
  • Loading branch information
bp3tk0v authored and H. Peter Anvin committed Jun 3, 2011
1 parent 838feb4 commit 38e6b75
Showing 1 changed file with 19 additions and 27 deletions.
46 changes: 19 additions & 27 deletions arch/x86/lib/thunk_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -5,50 +5,42 @@
* Added trace_hardirqs callers - Copyright 2007 Steven Rostedt, Red Hat, Inc.
* 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>

#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

#ifdef CONFIG_TRACE_IRQFLAGS
/* put return address in rdi (arg1) */
.macro thunk_ra name,func
/* rdi: arg1 ... normal C conventions. rax is saved/restored. */
.macro THUNK name, func, put_ret_addr_in_rdi=0
.globl \name
\name:
CFI_STARTPROC

/* this one pushes 9 elems, the next one would be %rIP */
SAVE_ARGS
/* SAVE_ARGS pushs 9 elements */
/* the next element would be the rip */
movq 9*8(%rsp), %rdi

.if \put_ret_addr_in_rdi
movq_cfi_restore 9*8, rdi
.endif

call \func
jmp restore
CFI_ENDPROC
.endm

thunk_ra trace_hardirqs_on_thunk,trace_hardirqs_on_caller
thunk_ra trace_hardirqs_off_thunk,trace_hardirqs_off_caller
#ifdef CONFIG_TRACE_IRQFLAGS
THUNK trace_hardirqs_on_thunk,trace_hardirqs_on_caller,1
THUNK trace_hardirqs_off_thunk,trace_hardirqs_off_caller,1
#endif

#ifdef CONFIG_DEBUG_LOCK_ALLOC
thunk lockdep_sys_exit_thunk,lockdep_sys_exit
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
ret
CFI_ENDPROC

0 comments on commit 38e6b75

Please sign in to comment.