• Dominik Brodowski's avatar
    x86/entry/64: Move the switch_to_thread_stack() call to interrupt_entry() · 90a6acc4
    Dominik Brodowski authored
    We can also move the CLD, SWAPGS, and the switch_to_thread_stack() call
    to the interrupt_entry() helper function. As we do not want call depths
    of two, convert switch_to_thread_stack() to a macro.
    
    However, switch_to_thread_stack() has another user in entry_64_compat.S,
    which currently expects it to be a function. To keep the code changes
    in this patch minimal, create a wrapper function.
    
    The switch to a macro means that there is some binary code duplication
    if CONFIG_IA32_EMULATION=y is enabled. Therefore, the size reduction
    differs whether CONFIG_IA32_EMULATION is enabled or not:
    
    CONFIG_IA32_EMULATION=y (-0.13k):
       text	   data	    bss	    dec	    hex	filename
      17158	      0	      0	  17158	   4306	entry_64.o-orig
      17028	      0	      0	  17028	   4284	entry_64.o
    
    CONFIG_IA32_EMULATION=n (-0.27k):
       text	   data	    bss	    dec	    hex	filename
      17158	      0	      0	  17158	   4306	entry_64.o-orig
      16882	      0	      0	  16882	   41f2	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-4-linux@dominikbrodowski.netSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    90a6acc4
entry_64.S 46 KB