summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorRyan S. Arnold <rsa@us.ibm.com>2011-05-20 06:34:48 -0400
committerUlrich Drepper <drepper@gmail.com>2011-05-20 06:34:48 -0400
commit457bddfc2a8aa8a65b176afb408f0d068a590316 (patch)
tree1e031089eff67d30ae5e2ad2750fedf166e9ef56 /sysdeps
parenta4527b51d41d87379ab7f63909a953a288c4c377 (diff)
downloadglibc-457bddfc2a8aa8a65b176afb408f0d068a590316.tar.gz
glibc-457bddfc2a8aa8a65b176afb408f0d068a590316.tar.xz
glibc-457bddfc2a8aa8a65b176afb408f0d068a590316.zip
Prevent Altivec and VSX insns on PowerPC64 when no FPRs or VRs are avail.
(cherry picked from commit 4749a0058b27274a95c5a798e339c7299cdf890e)

Conflicts:

	ChangeLog
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/powerpc/powerpc64/Makefile7
1 files changed, 5 insertions, 2 deletions
diff --git a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile
index 78d4f07e57..136de3008e 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