Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 build updates from Ingo Molnar: "The biggest change is the forcing of asm-goto support on x86, which effectively increases the GCC minimum supported version to gcc-4.5 (on x86)" * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/build: Don't pass in -D__KERNEL__ multiple times x86: Remove FAST_FEATURE_TESTS x86: Force asm-goto x86/build: Drop superfluous ALIGN from the linker script
This commit is contained in:
commit
e68b4bad71
13
Makefile
13
Makefile
|
@ -496,6 +496,13 @@ RETPOLINE_CFLAGS_CLANG := -mretpoline-external-thunk
|
||||||
RETPOLINE_CFLAGS := $(call cc-option,$(RETPOLINE_CFLAGS_GCC),$(call cc-option,$(RETPOLINE_CFLAGS_CLANG)))
|
RETPOLINE_CFLAGS := $(call cc-option,$(RETPOLINE_CFLAGS_GCC),$(call cc-option,$(RETPOLINE_CFLAGS_CLANG)))
|
||||||
export RETPOLINE_CFLAGS
|
export RETPOLINE_CFLAGS
|
||||||
|
|
||||||
|
# check for 'asm goto'
|
||||||
|
ifeq ($(call shell-cached,$(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
|
||||||
|
CC_HAVE_ASM_GOTO := 1
|
||||||
|
KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
|
||||||
|
KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(config-targets),1)
|
ifeq ($(config-targets),1)
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
# *config targets only - make sure prerequisites are updated, and descend
|
# *config targets only - make sure prerequisites are updated, and descend
|
||||||
|
@ -660,12 +667,6 @@ KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \
|
||||||
# Tell gcc to never replace conditional load with a non-conditional one
|
# Tell gcc to never replace conditional load with a non-conditional one
|
||||||
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
||||||
|
|
||||||
# check for 'asm goto'
|
|
||||||
ifeq ($(call shell-cached,$(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
|
|
||||||
KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
|
|
||||||
KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
|
|
||||||
endif
|
|
||||||
|
|
||||||
include scripts/Makefile.kcov
|
include scripts/Makefile.kcov
|
||||||
include scripts/Makefile.gcc-plugins
|
include scripts/Makefile.gcc-plugins
|
||||||
|
|
||||||
|
|
|
@ -393,17 +393,6 @@ config X86_FEATURE_NAMES
|
||||||
|
|
||||||
If in doubt, say Y.
|
If in doubt, say Y.
|
||||||
|
|
||||||
config X86_FAST_FEATURE_TESTS
|
|
||||||
bool "Fast CPU feature tests" if EMBEDDED
|
|
||||||
default y
|
|
||||||
---help---
|
|
||||||
Some fast-paths in the kernel depend on the capabilities of the CPU.
|
|
||||||
Say Y here for the kernel to patch in the appropriate code at runtime
|
|
||||||
based on the capabilities of the CPU. The infrastructure for patching
|
|
||||||
code at runtime takes up some additional space; space-constrained
|
|
||||||
embedded systems may wish to say N here to produce smaller, slightly
|
|
||||||
slower code.
|
|
||||||
|
|
||||||
config X86_X2APIC
|
config X86_X2APIC
|
||||||
bool "Support x2apic"
|
bool "Support x2apic"
|
||||||
depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
|
depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
|
||||||
|
|
|
@ -31,8 +31,7 @@ endif
|
||||||
CODE16GCC_CFLAGS := -m32 -Wa,$(srctree)/arch/x86/boot/code16gcc.h
|
CODE16GCC_CFLAGS := -m32 -Wa,$(srctree)/arch/x86/boot/code16gcc.h
|
||||||
M16_CFLAGS := $(call cc-option, -m16, $(CODE16GCC_CFLAGS))
|
M16_CFLAGS := $(call cc-option, -m16, $(CODE16GCC_CFLAGS))
|
||||||
|
|
||||||
REALMODE_CFLAGS := $(M16_CFLAGS) -g -Os -D__KERNEL__ \
|
REALMODE_CFLAGS := $(M16_CFLAGS) -g -Os -DDISABLE_BRANCH_PROFILING \
|
||||||
-DDISABLE_BRANCH_PROFILING \
|
|
||||||
-Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
|
-Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
|
||||||
-fno-strict-aliasing -fomit-frame-pointer -fno-pic \
|
-fno-strict-aliasing -fomit-frame-pointer -fno-pic \
|
||||||
-mno-mmx -mno-sse
|
-mno-mmx -mno-sse
|
||||||
|
@ -181,6 +180,10 @@ ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifndef CC_HAVE_ASM_GOTO
|
||||||
|
$(error Compiler lacks asm-goto support.)
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Jump labels need '-maccumulate-outgoing-args' for gcc < 4.5.2 to prevent a
|
# Jump labels need '-maccumulate-outgoing-args' for gcc < 4.5.2 to prevent a
|
||||||
# GCC bug (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46226). There's no way
|
# GCC bug (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46226). There's no way
|
||||||
|
|
|
@ -26,7 +26,7 @@ KCOV_INSTRUMENT := n
|
||||||
targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
|
targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
|
||||||
vmlinux.bin.xz vmlinux.bin.lzo vmlinux.bin.lz4
|
vmlinux.bin.xz vmlinux.bin.lzo vmlinux.bin.lz4
|
||||||
|
|
||||||
KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ -O2
|
KBUILD_CFLAGS := -m$(BITS) -O2
|
||||||
KBUILD_CFLAGS += -fno-strict-aliasing $(call cc-option, -fPIE, -fPIC)
|
KBUILD_CFLAGS += -fno-strict-aliasing $(call cc-option, -fPIE, -fPIC)
|
||||||
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
|
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
|
||||||
cflags-$(CONFIG_X86_32) := -march=i386
|
cflags-$(CONFIG_X86_32) := -march=i386
|
||||||
|
|
|
@ -140,7 +140,6 @@ extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit);
|
||||||
|
|
||||||
#define setup_force_cpu_bug(bit) setup_force_cpu_cap(bit)
|
#define setup_force_cpu_bug(bit) setup_force_cpu_cap(bit)
|
||||||
|
|
||||||
#if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_X86_FAST_FEATURE_TESTS)
|
|
||||||
/*
|
/*
|
||||||
* Static testing of CPU features. Used the same as boot_cpu_has().
|
* Static testing of CPU features. Used the same as boot_cpu_has().
|
||||||
* These will statically patch the target code for additional
|
* These will statically patch the target code for additional
|
||||||
|
@ -196,13 +195,6 @@ static __always_inline __pure bool _static_cpu_has(u16 bit)
|
||||||
boot_cpu_has(bit) : \
|
boot_cpu_has(bit) : \
|
||||||
_static_cpu_has(bit) \
|
_static_cpu_has(bit) \
|
||||||
)
|
)
|
||||||
#else
|
|
||||||
/*
|
|
||||||
* Fall back to dynamic for gcc versions which don't support asm goto. Should be
|
|
||||||
* a minority now anyway.
|
|
||||||
*/
|
|
||||||
#define static_cpu_has(bit) boot_cpu_has(bit)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define cpu_has_bug(c, bit) cpu_has(c, (bit))
|
#define cpu_has_bug(c, bit) cpu_has(c, (bit))
|
||||||
#define set_cpu_bug(c, bit) set_cpu_cap(c, (bit))
|
#define set_cpu_bug(c, bit) set_cpu_cap(c, (bit))
|
||||||
|
|
|
@ -102,7 +102,6 @@ SECTIONS
|
||||||
_stext = .;
|
_stext = .;
|
||||||
/* bootstrapping code */
|
/* bootstrapping code */
|
||||||
HEAD_TEXT
|
HEAD_TEXT
|
||||||
. = ALIGN(8);
|
|
||||||
TEXT_TEXT
|
TEXT_TEXT
|
||||||
SCHED_TEXT
|
SCHED_TEXT
|
||||||
CPUIDLE_TEXT
|
CPUIDLE_TEXT
|
||||||
|
@ -200,7 +199,7 @@ SECTIONS
|
||||||
. = __vvar_beginning_hack + PAGE_SIZE;
|
. = __vvar_beginning_hack + PAGE_SIZE;
|
||||||
} :data
|
} :data
|
||||||
|
|
||||||
. = ALIGN(__vvar_page + PAGE_SIZE, PAGE_SIZE);
|
. = ALIGN(__vvar_page + PAGE_SIZE, PAGE_SIZE);
|
||||||
|
|
||||||
/* Init code and data - will be freed after init */
|
/* Init code and data - will be freed after init */
|
||||||
. = ALIGN(PAGE_SIZE);
|
. = ALIGN(PAGE_SIZE);
|
||||||
|
@ -368,8 +367,8 @@ SECTIONS
|
||||||
. = ALIGN(PAGE_SIZE); /* keep VO_INIT_SIZE page aligned */
|
. = ALIGN(PAGE_SIZE); /* keep VO_INIT_SIZE page aligned */
|
||||||
_end = .;
|
_end = .;
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
|
||||||
/* Sections to be discarded */
|
/* Sections to be discarded */
|
||||||
DISCARDS
|
DISCARDS
|
||||||
|
|
Loading…
Reference in New Issue