x86, asm: Cleanup thunk_64.S
authorBorislav Petkov <bp@alien8.de>
Tue, 31 May 2011 20:21:54 +0000 (22:21 +0200)
committerH. Peter Anvin <hpa@linux.intel.com>
Fri, 3 Jun 2011 21:38:55 +0000 (14:38 -0700)
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 <bp@alien8.de>
Link: http://lkml.kernel.org/r/1306873314-32523-5-git-send-email-bp@alien8.de
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/lib/thunk_64.S

index 782b082c9ff74a3ba62b86f5c07830e9eaadccfb..d5b088b3ab81dbb010b51f236a5745aab4535d08 100644 (file)
@@ -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