diff options
author | Martin Roth <martinroth@google.com> | 2016-02-01 17:33:37 -0700 |
---|---|---|
committer | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2016-02-03 02:58:10 +0100 |
commit | 0cd9ff8987f9d4f303e01aefe9bfc812916fee04 (patch) | |
tree | df98a7414d37ce131eace54497589465c59c9c4f | |
parent | a9fa0c897c378b6c4f52d7bc71a3f672af7f2ee8 (diff) |
xcompile: Add a way to specify -march=i586
Instead of instructing users to edit xcompile when they want to build
a quark platform, give the build a way to set -march=586 so that
the quark code will build correctly. The Quark processor does not
support the instructions introduced with the Pentium 6 architecture.
Change-Id: I0ed69aadc515f86f76800180e0e33bcd75feac5a
Signed-off-by: Martin Roth <martinroth@google.com>
Reviewed-on: https://review.coreboot.org/13552
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Leroy P Leahy <leroy.p.leahy@intel.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: FEI WANG <wangfei.jimei@gmail.com>
-rw-r--r-- | src/arch/x86/Kconfig | 6 | ||||
-rwxr-xr-x | util/xcompile/xcompile | 27 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index 738e7d1c0a..49f940acd1 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -58,6 +58,12 @@ config ARCH_RAMSTAGE_X86_64 bool default n +config USE_MARCH_586 + def_bool n + help + Allow a platform or processor to select to be compiled using + the '-march=i586' option instead of the typical '-march=i686' + # This is an SMP option. It relates to starting up APs. # It is usually set in mainboard/*/Kconfig. # TODO: Improve description. diff --git a/util/xcompile/xcompile b/util/xcompile/xcompile index 176518362f..79c8a4c0b0 100755 --- a/util/xcompile/xcompile +++ b/util/xcompile/xcompile @@ -182,11 +182,6 @@ detect_special_flags() { case "$architecture" in x86) - # Always build for i686 -- no sse/mmx instructions since SMM - # modules are compiled using these flags. Note that this - # doesn't prevent a project using xcompile to explicitly - # specify -mmsse, etc flags. - CFLAGS_GCC="$CFLAGS_GCC -march=i686" ;; x64) ;; @@ -224,6 +219,27 @@ GCC_CC_${TARCH}:=${GCC} GCC_CFLAGS_${TARCH}:=${CFLAGS_GCC} GCC_COMPILER_RT_${TARCH}:=${CC_RT_GCC} GCC_COMPILER_RT_FLAGS_${TARCH}:=${CC_RT_EXTRA_GCC} +EOF + +# Generally the x86 should build for i686 -- no sse/mmx +# instructions since SMM modules are compiled using these +# flags. Note that this doesn't prevent a project using +# xcompile to explicitly specify -mmsse, etc flags. +# The Quark processor doesn't support the instructions +# introduced with the Pentium 6 architecture, so allow it +# to use i586 instead. +if [ "${TARCH}" = "x86_64" ] || [ "${TARCH}" = "x86_32" ]; then +cat <<EOF + +ifeq (\$(CONFIG_USE_MARCH_586),y) + GCC_CFLAGS_${TARCH} += -march=i586 +else + GCC_CFLAGS_${TARCH} += -march=i686 +endif +EOF +fi + +cat <<EOF # Clang CLANG_CC_${TARCH}:=${CLANG} @@ -245,6 +261,7 @@ else COMPILER_RT_${TARCH}:=\$(CLANG_COMPILER_RT_${TARCH}) COMPILER_RT_FLAGS_${TARCH}:=\$(CLANG_COMPILER_RT_FLAGS_${TARCH}) endif + CPP_${TARCH}:=${GCCPREFIX}cpp AS_${TARCH}:=${GCCPREFIX}as ${ASFLAGS} LD_${TARCH}:=${GCCPREFIX}ld${LINKER_SUFFIX} ${LDFLAGS} |