From c8e5702127e507e82e6f68a4b8c546803accea9d Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Jun 2005 08:19:37 +0000 Subject: import clean BK tree at cset 1.3670 --- packages/gcc/gcc-3.3.3/arm-14558.dpatch | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'packages/gcc/gcc-3.3.3/arm-14558.dpatch') diff --git a/packages/gcc/gcc-3.3.3/arm-14558.dpatch b/packages/gcc/gcc-3.3.3/arm-14558.dpatch index e69de29bb2..9d15eaecd8 100644 --- a/packages/gcc/gcc-3.3.3/arm-14558.dpatch +++ b/packages/gcc/gcc-3.3.3/arm-14558.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +# DP: Patch for invalid QImode insn resulting from HImode reload on ARMv3 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config/arm/arm.h.old Thu Feb 19 13:48:41 2004 ++++ gcc/config/arm/arm.h Thu Feb 19 13:56:31 2004 +@@ -2003,10 +2003,17 @@ + && INTVAL (op) <= 31) \ + goto LABEL; \ + } \ +- /* NASTY: Since this limits the addressing of unsigned \ +- byte loads. */ \ +- range = ((MODE) == HImode || (MODE) == QImode) \ +- ? (arm_arch4 ? 256 : 4095) : 4096; \ ++ /* XXX For ARM v4 we may be doing a sign-extend operation \ ++ during the load, but that has a restricted addressing \ ++ range and we are unable to tell here whether that is the \ ++ case. To be safe we restrict all loads to that \ ++ range. */ \ ++ if (arm_arch4) \ ++ range = (mode == HImode || mode == QImode) ? 256 : 4096; \ ++ else if (mode == HImode) \ ++ range = 4095; \ ++ else \ ++ range = 4096; \ + if (code == CONST_INT && INTVAL (INDEX) < range \ + && INTVAL (INDEX) > -range) \ + goto LABEL; \ -- cgit 1.2.3-korg