summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2016-02-01 17:33:37 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2016-02-03 02:58:10 +0100
commit0cd9ff8987f9d4f303e01aefe9bfc812916fee04 (patch)
treedf98a7414d37ce131eace54497589465c59c9c4f
parenta9fa0c897c378b6c4f52d7bc71a3f672af7f2ee8 (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/Kconfig6
-rwxr-xr-xutil/xcompile/xcompile27
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}