]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/gcc/gcc-3.3.3/arm-14558.dpatch
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / gcc / gcc-3.3.3 / arm-14558.dpatch
1 #! /bin/sh -e
2
3 # DP: Patch for invalid QImode insn resulting from HImode reload on ARMv3
4
5 dir=
6 if [ $# -eq 3 -a "$2" = '-d' ]; then
7     pdir="-d $3"
8     dir="$3/"
9 elif [ $# -ne 1 ]; then
10     echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
11     exit 1
12 fi
13 case "$1" in
14     -patch)
15         patch $pdir -f --no-backup-if-mismatch -p0 < $0
16         #cd ${dir}gcc && autoconf
17         ;;
18     -unpatch)
19         patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
20         #rm ${dir}gcc/configure
21         ;;
22     *)
23         echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
24         exit 1
25 esac
26 exit 0
27
28 --- gcc/config/arm/arm.h.old    Thu Feb 19 13:48:41 2004
29 +++ gcc/config/arm/arm.h        Thu Feb 19 13:56:31 2004
30 @@ -2003,10 +2003,17 @@
31                   && INTVAL (op) <= 31)                                 \
32                 goto LABEL;                                             \
33             }                                                           \
34 -         /* NASTY: Since this limits the addressing of unsigned        \
35 -            byte loads.  */                                            \
36 -         range = ((MODE) == HImode || (MODE) == QImode)                \
37 -           ? (arm_arch4 ? 256 : 4095) : 4096;                          \
38 +         /* XXX For ARM v4 we may be doing a sign-extend operation     \
39 +            during the load, but that has a restricted addressing      \
40 +            range and we are unable to tell here whether that is the   \
41 +            case.  To be safe we restrict all loads to that            \
42 +            range.  */                                                 \
43 +          if (arm_arch4)                                               \
44 +           range = (mode == HImode || mode == QImode) ? 256 : 4096;    \
45 +         else if (mode == HImode)                                      \
46 +           range = 4095;                                               \
47 +         else                                                          \
48 +           range = 4096;                                               \
49           if (code == CONST_INT && INTVAL (INDEX) < range               \
50               && INTVAL (INDEX) > -range)                               \
51             goto LABEL;                                                 \