• Jan Beulich's avatar
    x86-64: Use RIP-relative addressing for most per-CPU accesses · 97b67ae5
    Jan Beulich authored
    Observing that per-CPU data (in the SMP case) is reachable by
    exploiting 64-bit address wraparound (building on the default kernel
    load address being at 16Mb), the one byte shorter RIP-relative
    addressing form can be used for most per-CPU accesses. The one
    exception are the "stable" reads, where the use of the "P" operand
    modifier prevents the compiler from using RIP-relative addressing, but
    is unavoidable due to the use of the "p" constraint (side note: with
    gcc 4.9.x the intended effect of this isn't being achieved anymore,
    see gcc bug 63637).
    
    With the dependency on the minimum kernel load address, arbitrarily
    low values for CONFIG_PHYSICAL_START are now no longer possible. A
    link time assertion is being added, directing to the need to increase
    that value when it triggers.
    Signed-off-by: default avatarJan Beulich <jbeulich@suse.com>
    Link: http://lkml.kernel.org/r/5458A1780200007800044A9D@mail.emea.novell.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    97b67ae5
vmlinux.lds.S 8.9 KB