Skip to content
  • H.J. Lu's avatar
    x86/asm: Use -mskip-rax-setup if supported · d9ee948d
    H.J. Lu authored
    
    
    GCC 5 added a compiler option, -mskip-rax-setup, for x86-64. It skips
    setting up the RAX register when SSE is disabled and there are no
    variable arguments passed in vector registers. (According to the x86_64
    ABI, %al is used as a hidden register containing the number of vector
    registers used).
    
    Since the kernel doesn't pass vector registers to functions with
    variable arguments, this option can be used to optimize the x86-64
    kernel.
    
    This GCC feature was suggested by Rasmus Villemoes <linux@rasmusvillemoes.dk>.
    This is the corresponding kernel change using it.
    
    For kernel v3.17:
    
          text   data    bss    dec       filename
      11455921 2204048 5853184 19513153   vmlinux #with -mskip-rax-setup
      11480079 2204048 5853184 19537311   vmlinux
    
    For Kernel v4.0+ - custom config:
    
          text   data    bss    dec       filename
      10231778 3479800 16617472 30329050  vmlinux-gcc5+-mskip-rax-setup
      10268797 3547448 16621568 30437813  vmlinux
    
    Signed-off-by: default avatarH.J. Lu <hjl.tools@gmail.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    d9ee948d