• Dominik Brodowski's avatar
    x86/entry/64: Move ENTER_IRQ_STACK from interrupt macro to interrupt_entry · 2ba64741
    Dominik Brodowski authored
    Moving the switch to IRQ stack from the interrupt macro to the helper
    function requires some trickery: All ENTER_IRQ_STACK really cares about
    is where the "original" stack -- meaning the GP registers etc. -- is
    stored. Therefore, we need to offset the stored RSP value by 8 whenever
    ENTER_IRQ_STACK is called from within a function. In such cases, and
    after switching to the IRQ stack, we need to push the "original" return
    address (i.e. the return address from the call to the interrupt entry
    function) to the IRQ stack.
    
    This trickery allows us to carve another .85k from the text size (it
    would be more except for the additional unwind hints):
    
       text	   data	    bss	    dec	    hex	filename
      18006	      0	      0	  18006	   4656	entry_64.o-orig
      17158	      0	      0	  17158	   4306	entry_64.o
    Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
    Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: dan.j.williams@intel.com
    Link: http://lkml.kernel.org/r/20180220210113.6725-3-linux@dominikbrodowski.netSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    2ba64741
entry_64.S 45.8 KB