lkml.org 
[lkml]   [2018]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 1/4] x86/entry/64: move PUSH_AND_CLEAR_REGS from interrupt macro to helper function
    Date
    The PUSH_AND_CLEAR_REGS macro is able to insert the GP registers
    "above" the original return address. This allows us to move a sizeable
    part of the interrupt entry macro to an interrupt entry helper function:

    text data bss dec hex filename
    20987 0 0 20987 51fb entry_64.o-orig
    17905 0 0 17905 45f1 entry_64.o

    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    ---
    arch/x86/entry/entry_64.S | 12 ++++++++++--
    1 file changed, 10 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
    index 5d9cb0f037e4..de8a0da0d347 100644
    --- a/arch/x86/entry/entry_64.S
    +++ b/arch/x86/entry/entry_64.S
    @@ -526,6 +526,15 @@ END(irq_entries_start)
    *
    * Entry runs with interrupts off.
    */
    +ENTRY(interrupt_helper)
    + UNWIND_HINT_FUNC
    + cld
    +
    + PUSH_AND_CLEAR_REGS save_ret=1
    + ENCODE_FRAME_POINTER 8
    +
    + ret
    +END(interrupt_helper)

    /* 0(%rsp): ~(interrupt number) */
    .macro interrupt func
    @@ -537,8 +546,7 @@ END(irq_entries_start)
    call switch_to_thread_stack
    1:

    - PUSH_AND_CLEAR_REGS
    - ENCODE_FRAME_POINTER
    + call interrupt_helper

    testb $3, CS(%rsp)
    jz 1f
    --
    2.16.1
    \
     
     \ /
      Last update: 2018-02-14 19:25    [W:2.537 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site