aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan S. Arnold <rsa@us.ibm.com>2011-05-18 15:19:56 -0500
committerRyan S. Arnold <rsa@us.ibm.com>2011-05-18 15:19:56 -0500
commit4749a0058b27274a95c5a798e339c7299cdf890e (patch)
tree53bd047458036251633acad8a7828352f0b225ad
parentba2d2313fbb29915b25c5e3e58e991deb61f85cb (diff)
downloadglibc-4749a0058b27274a95c5a798e339c7299cdf890e.tar
glibc-4749a0058b27274a95c5a798e339c7299cdf890e.tar.gz
glibc-4749a0058b27274a95c5a798e339c7299cdf890e.tar.bz2
glibc-4749a0058b27274a95c5a798e339c7299cdf890e.zip
Prevent Altivec and VSX insns on PowerPC64 when no FPRs or VRs are avail.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/powerpc/powerpc64/Makefile7
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f6316741c7..dd8a270412 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-18 Ryan S. Arnold <rsa@us.ibm.com>
+
+ * sysdeps/powerpc/powerpc64/Makefile (no-special-regs): Add -mno-vsx
+ and -mno-altivec to prevent the compiler from using Altivec and/or
+ VSX instructions when the corresponding registers are not available.
+
2011-02-11 Jakub Jelinek <jakub@redhat.com>
* stdio-common/printf-parsemb.c (__parse_one_specmb): Handle
diff --git a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile
index fe96aae4d4..4d9be6c73a 100644
--- a/sysdeps/powerpc/powerpc64/Makefile
+++ b/sysdeps/powerpc/powerpc64/Makefile
@@ -12,7 +12,10 @@ endif
# These flags prevent FPU or Altivec registers from being used,
# for code called in contexts that is not allowed to touch those registers.
-# Stupid GCC requires us to pass all these ridiculous switches.
+# Stupid GCC requires us to pass all these ridiculous switches. We need to
+# pass the -mno-* switches as well to prevent the compiler from attempting
+# to emit altivec or vsx instructions, especially when the registers aren't
+# available.
no-special-regs := $(sort $(foreach n,40 41 50 51 60 61 62 63 \
$(foreach m,2 3 4 5 6 7 8 9, \
3$m 4$m 5$m),\
@@ -20,7 +23,7 @@ no-special-regs := $(sort $(foreach n,40 41 50 51 60 61 62 63 \
$(sort $(foreach n,$(foreach m,0 1 2 3 4 5 6 7 8 9,\
$m 1$m 2$m) 30 31,\
-ffixed-v$n)) \
- -ffixed-vrsave -ffixed-vscr
+ -ffixed-vrsave -ffixed-vscr -mno-altivec -mno-vsx
ifeq ($(subdir),csu)
sysdep_routines += hp-timing