lkml.org 
[lkml]   [2011]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/asm] x86, asm: Cleanup thunk_64.S
    Commit-ID:  38e6b75d3b6f4b9445eb6486e28fc716acda44ae
    Gitweb: http://git.kernel.org/tip/38e6b75d3b6f4b9445eb6486e28fc716acda44ae
    Author: Borislav Petkov <bp@alien8.de>
    AuthorDate: Tue, 31 May 2011 22:21:54 +0200
    Committer: H. Peter Anvin <hpa@linux.intel.com>
    CommitDate: Fri, 3 Jun 2011 14:38:55 -0700

    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: 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 | 46 +++++++++++++++++++---------------------------
    1 files changed, 19 insertions(+), 27 deletions(-)

    diff --git a/arch/x86/lib/thunk_64.S b/arch/x86/lib/thunk_64.S
    index 782b082..d5b088b 100644
    --- a/arch/x86/lib/thunk_64.S
    +++ b/arch/x86/lib/thunk_64.S
    @@ -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

    \
     
     \ /
      Last update: 2011-06-04 01:31    [W:0.033 / U:0.968 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site