Commit 38e6b75d authored by Borislav Petkov's avatar Borislav Petkov Committed by H. Peter Anvin

x86, asm: Cleanup thunk_64.S

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: default avatarBorislav Petkov <bp@alien8.de>
Link: http://lkml.kernel.org/r/1306873314-32523-5-git-send-email-bp@alien8.deSigned-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
parent 838feb47
...@@ -5,50 +5,42 @@ ...@@ -5,50 +5,42 @@
* Added trace_hardirqs callers - Copyright 2007 Steven Rostedt, Red Hat, Inc. * Added trace_hardirqs callers - Copyright 2007 Steven Rostedt, Red Hat, Inc.
* Subject to the GNU public license, v.2. No warranty of any kind. * 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> /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
#include <asm/dwarf2.h> .macro THUNK name, func, put_ret_addr_in_rdi=0
#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
.globl \name .globl \name
\name: \name:
CFI_STARTPROC CFI_STARTPROC
/* this one pushes 9 elems, the next one would be %rIP */
SAVE_ARGS SAVE_ARGS
/* SAVE_ARGS pushs 9 elements */
/* the next element would be the rip */ .if \put_ret_addr_in_rdi
movq 9*8(%rsp), %rdi movq_cfi_restore 9*8, rdi
.endif
call \func call \func
jmp restore jmp restore
CFI_ENDPROC CFI_ENDPROC
.endm .endm
thunk_ra trace_hardirqs_on_thunk,trace_hardirqs_on_caller #ifdef CONFIG_TRACE_IRQFLAGS
thunk_ra trace_hardirqs_off_thunk,trace_hardirqs_off_caller THUNK trace_hardirqs_on_thunk,trace_hardirqs_on_caller,1
THUNK trace_hardirqs_off_thunk,trace_hardirqs_off_caller,1
#endif #endif
#ifdef CONFIG_DEBUG_LOCK_ALLOC #ifdef CONFIG_DEBUG_LOCK_ALLOC
thunk lockdep_sys_exit_thunk,lockdep_sys_exit THUNK lockdep_sys_exit_thunk,lockdep_sys_exit
#endif #endif
/* SAVE_ARGS below is used only for the .cfi directives it contains. */ /* SAVE_ARGS below is used only for the .cfi directives it contains. */
CFI_STARTPROC CFI_STARTPROC
SAVE_ARGS SAVE_ARGS
restore: restore:
RESTORE_ARGS RESTORE_ARGS
ret ret
CFI_ENDPROC CFI_ENDPROC
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