yann@402
|
1 |
diff -ruN gcc-20030210.orig/boehm-gc/configure gcc-20030210/boehm-gc/configure
|
yann@402
|
2 |
--- gcc-20030210.orig/boehm-gc/configure Fri Jan 31 19:17:00 2003
|
yann@402
|
3 |
+++ gcc-20030210/boehm-gc/configure Sat Feb 22 01:40:14 2003
|
yann@402
|
4 |
@@ -1922,7 +1922,7 @@
|
yann@402
|
5 |
# This must be Linux ELF.
|
yann@402
|
6 |
linux-gnu*)
|
yann@402
|
7 |
case $host_cpu in
|
yann@402
|
8 |
- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
|
yann@402
|
9 |
+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
|
yann@402
|
10 |
lt_cv_deplibs_check_method=pass_all ;;
|
yann@402
|
11 |
*)
|
yann@402
|
12 |
# glibc up to 2.1.1 does not perform some relocations on ARM
|
yann@402
|
13 |
diff -ruN gcc-20030210.orig/config-ml.in gcc-20030210/config-ml.in
|
yann@402
|
14 |
--- gcc-20030210.orig/config-ml.in Fri Jan 31 19:16:59 2003
|
yann@402
|
15 |
+++ gcc-20030210/config-ml.in Sat Feb 22 01:40:14 2003
|
yann@402
|
16 |
@@ -545,6 +545,7 @@
|
yann@402
|
17 |
if [ -d ../$${dir}/$${lib} ]; then \
|
yann@402
|
18 |
flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
|
yann@402
|
19 |
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
|
yann@402
|
20 |
+ DESTDIR="$(DESTDIR)" \
|
yann@402
|
21 |
CFLAGS="$(CFLAGS) $${flags}" \
|
yann@402
|
22 |
prefix="$(prefix)" \
|
yann@402
|
23 |
exec_prefix="$(exec_prefix)" \
|
yann@402
|
24 |
diff -ruN gcc-20030210.orig/debian/edit-specs.in gcc-20030210/debian/edit-specs.in
|
yann@402
|
25 |
--- gcc-20030210.orig/debian/edit-specs.in Thu Jan 1 09:00:00 1970
|
yann@402
|
26 |
+++ gcc-20030210/debian/edit-specs.in Sat Feb 22 01:40:14 2003
|
yann@402
|
27 |
@@ -0,0 +1,45 @@
|
yann@402
|
28 |
+/^*asm:$/ {
|
yann@402
|
29 |
+n
|
yann@402
|
30 |
+c\
|
yann@402
|
31 |
+@AS_ENDIAN_FLAG@ %{mrelax:-relax}
|
yann@402
|
32 |
+}
|
yann@402
|
33 |
+/^*cpp:$/ {
|
yann@402
|
34 |
+n
|
yann@402
|
35 |
+c\
|
yann@402
|
36 |
+%(cpp_default_cpu_spec) %(subtarget_cpp_spec) %(subtarget_cpp_ptr_spec) %(subtarget_cpp_endian_spec)
|
yann@402
|
37 |
+}
|
yann@402
|
38 |
+/^*cc1:$/ {
|
yann@402
|
39 |
+n
|
yann@402
|
40 |
+c\
|
yann@402
|
41 |
+-musermode @CC1_CPU_ENDIAN_FLAGS@ %{profile:-p}
|
yann@402
|
42 |
+}
|
yann@402
|
43 |
+/^*link:$/ {
|
yann@402
|
44 |
+n
|
yann@402
|
45 |
+c\
|
yann@402
|
46 |
+%{!static:--eh-frame-hdr} @LINKER_CPU_ENDIAN_FLAGS@ @LINKER_RPATH_LINK_FLAG@ %{mrelax:-relax} %{shared:-shared} %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} %{static:-static}
|
yann@402
|
47 |
+}
|
yann@402
|
48 |
+/^*multilib:$/ {
|
yann@402
|
49 |
+n
|
yann@402
|
50 |
+c\
|
yann@402
|
51 |
+. ;
|
yann@402
|
52 |
+}
|
yann@402
|
53 |
+/^*multilib_matches:$/ {
|
yann@402
|
54 |
+n
|
yann@402
|
55 |
+c\
|
yann@402
|
56 |
+
|
yann@402
|
57 |
+}
|
yann@402
|
58 |
+/^*multilib_options:$/ {
|
yann@402
|
59 |
+n
|
yann@402
|
60 |
+c\
|
yann@402
|
61 |
+
|
yann@402
|
62 |
+}
|
yann@402
|
63 |
+/^*subtarget_cpp_endian_spec:$/ {
|
yann@402
|
64 |
+n
|
yann@402
|
65 |
+c\
|
yann@402
|
66 |
+@CPP_ENDIAN_DEF@
|
yann@402
|
67 |
+}
|
yann@402
|
68 |
+/^*cpp_default_cpu_spec:$/ {
|
yann@402
|
69 |
+n
|
yann@402
|
70 |
+c\
|
yann@402
|
71 |
+@CPP_CPU_DEFS@
|
yann@402
|
72 |
+}
|
yann@402
|
73 |
diff -ruN gcc-20030210.orig/debian/install-CPU-linux gcc-20030210/debian/install-CPU-linux
|
yann@402
|
74 |
--- gcc-20030210.orig/debian/install-CPU-linux Thu Jan 1 09:00:00 1970
|
yann@402
|
75 |
+++ gcc-20030210/debian/install-CPU-linux Sat Feb 22 01:40:14 2003
|
yann@402
|
76 |
@@ -0,0 +1,111 @@
|
yann@402
|
77 |
+#! /bin/sh
|
yann@402
|
78 |
+
|
yann@402
|
79 |
+VERSION=$1; shift
|
yann@402
|
80 |
+CPU=$1
|
yann@402
|
81 |
+
|
yann@402
|
82 |
+# literally (binary-ly) same
|
yann@402
|
83 |
+PROGS_C="cpp gcc"
|
yann@402
|
84 |
+PROGS_ADDITIONAL="c++ g++ g77 gcj"
|
yann@402
|
85 |
+
|
yann@402
|
86 |
+DRIVERS_C="cc1 cpp0 tradcpp0"
|
yann@402
|
87 |
+DRIVERS_ADDITIONAL="cc1obj cc1plus collect2 f771 jc1 jvgenmain"
|
yann@402
|
88 |
+if [ -z "$STEP1_COMPILER_BUILD" ]; then
|
yann@402
|
89 |
+ PROGS="$PROGS_C $PROGS_ADDITIONAL"
|
yann@402
|
90 |
+ DRIVERS="$DRIVERS_C $DRIVERSADDITIONAL"
|
yann@402
|
91 |
+ INITIAL=""
|
yann@402
|
92 |
+else
|
yann@402
|
93 |
+ PROGS=$PROGS_C
|
yann@402
|
94 |
+ DRIVERS=$DRIVERS_C
|
yann@402
|
95 |
+ INITIAL="-initial"
|
yann@402
|
96 |
+fi
|
yann@402
|
97 |
+
|
yann@402
|
98 |
+OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o"
|
yann@402
|
99 |
+LIBS_C="libgcc.a"
|
yann@402
|
100 |
+LIBS_1="libgcc_s.so libgcc_s.so.1 libstdc++.so libstdc++.so.3 libstdc++.so.3.0.2"
|
yann@402
|
101 |
+LIBS_2="libobjc.a libstdc++.a libsupc++.a"
|
yann@402
|
102 |
+INCLUDE="include"
|
yann@402
|
103 |
+
|
yann@402
|
104 |
+cd debian/gcc-sh-linux-others${INITIAL} || exit 1
|
yann@402
|
105 |
+
|
yann@402
|
106 |
+# Make directories.
|
yann@402
|
107 |
+mkdir -p usr/bin usr/share usr/share/man usr/share/man/man1 usr/lib \
|
yann@402
|
108 |
+ usr/lib/gcc-lib usr/lib/gcc-lib/${CPU}-linux \
|
yann@402
|
109 |
+ usr/lib/gcc-lib/${CPU}-linux/${VERSION} \
|
yann@402
|
110 |
+ usr/${CPU}-linux usr/${CPU}-linux/lib
|
yann@402
|
111 |
+
|
yann@402
|
112 |
+# Make symbolic links for include dir.
|
yann@402
|
113 |
+(cd usr/${CPU}-linux; ln -s ../sh-linux/include .)
|
yann@402
|
114 |
+
|
yann@402
|
115 |
+# Make symbolic links for executables.
|
yann@402
|
116 |
+(cd usr/bin;
|
yann@402
|
117 |
+ for p in ${PROGS}; do
|
yann@402
|
118 |
+ ln -s shCPU-linux-GCC ${CPU}-linux-$p
|
yann@402
|
119 |
+ done)
|
yann@402
|
120 |
+
|
yann@402
|
121 |
+case "${CPU}" in
|
yann@402
|
122 |
+ sh3)
|
yann@402
|
123 |
+ MULTILIBDIR=
|
yann@402
|
124 |
+ AS_ENDIAN_FLAG="-little"
|
yann@402
|
125 |
+ CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__"
|
yann@402
|
126 |
+ CPP_CPU_DEFS="-D__SH3__ -D__sh3__"
|
yann@402
|
127 |
+ CC1_CPU_ENDIAN_FLAGS="-ml -m3"
|
yann@402
|
128 |
+ LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3"
|
yann@402
|
129 |
+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3-linux/lib"
|
yann@402
|
130 |
+ ;;
|
yann@402
|
131 |
+ sh3eb)
|
yann@402
|
132 |
+ MULTILIBDIR=/mb
|
yann@402
|
133 |
+ AS_ENDIAN_FLAG="-big"
|
yann@402
|
134 |
+ CPP_ENDIAN_DEF="-D__BIG_ENDIAN__"
|
yann@402
|
135 |
+ CPP_CPU_DEFS="-D__SH3__ -D__sh3__"
|
yann@402
|
136 |
+ CC1_CPU_ENDIAN_FLAGS="-mb -m3"
|
yann@402
|
137 |
+ LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3"
|
yann@402
|
138 |
+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3eb-linux/lib"
|
yann@402
|
139 |
+ ;;
|
yann@402
|
140 |
+ sh4)
|
yann@402
|
141 |
+ MULTILIBDIR=/m4
|
yann@402
|
142 |
+ AS_ENDIAN_FLAG="-little"
|
yann@402
|
143 |
+ CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__"
|
yann@402
|
144 |
+ CPP_CPU_DEFS="-D__SH4__"
|
yann@402
|
145 |
+ CC1_CPU_ENDIAN_FLAGS="-ml -m4"
|
yann@402
|
146 |
+ LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh4"
|
yann@402
|
147 |
+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4-linux/lib"
|
yann@402
|
148 |
+ ;;
|
yann@402
|
149 |
+ sh4eb)
|
yann@402
|
150 |
+ MULTILIBDIR=/mb/m4
|
yann@402
|
151 |
+ AS_ENDIAN_FLAG="-big"
|
yann@402
|
152 |
+ CPP_ENDIAN_DEF="-D__BIG_ENDIAN__"
|
yann@402
|
153 |
+ CPP_CPU_DEFS="-D__SH4__"
|
yann@402
|
154 |
+ CC1_CPU_ENDIAN_FLAGS="-mb -m4"
|
yann@402
|
155 |
+ LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh4"
|
yann@402
|
156 |
+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4eb-linux/lib"
|
yann@402
|
157 |
+ ;;
|
yann@402
|
158 |
+esac
|
yann@402
|
159 |
+
|
yann@402
|
160 |
+# Make symbolic links for GCC drivers, objects, libraries, and include dir.
|
yann@402
|
161 |
+(cd usr/lib/gcc-lib/${CPU}-linux/${VERSION};
|
yann@402
|
162 |
+ for f in ${DRIVERS} ${INCLUDE}; do
|
yann@402
|
163 |
+ ln -s ../../sh-linux/${VERSION}/$f $f;
|
yann@402
|
164 |
+ done
|
yann@402
|
165 |
+ for f in ${OBJS} ${LIBS_C}; do
|
yann@402
|
166 |
+ ln -s ../../sh-linux/${VERSION}${MULTILIBDIR}/$f $f;
|
yann@402
|
167 |
+ done)
|
yann@402
|
168 |
+
|
yann@402
|
169 |
+if [ -z "$STEP1_COMPILER_BUILD" ]; then
|
yann@402
|
170 |
+ for f in ${LIBS_1} ${LIBS_2}; do
|
yann@402
|
171 |
+ mv ../gcc-sh-linux/usr/sh-linux/lib${MULTILIBDIR}/$f usr/${CPU}-linux/lib/;
|
yann@402
|
172 |
+ done
|
yann@402
|
173 |
+fi
|
yann@402
|
174 |
+
|
yann@402
|
175 |
+sed -e "s+@AS_ENDIAN_FLAG@+${AS_ENDIAN_FLAG}+" \
|
yann@402
|
176 |
+ -e "s+@CPP_ENDIAN_DEF@+${CPP_ENDIAN_DEF}+" \
|
yann@402
|
177 |
+ -e "s+@CPP_CPU_DEFS@+${CPP_CPU_DEFS}+" \
|
yann@402
|
178 |
+ -e "s+@CC1_CPU_ENDIAN_FLAGS@+${CC1_CPU_ENDIAN_FLAGS}+" \
|
yann@402
|
179 |
+ -e "s+@LINKER_CPU_ENDIAN_FLAGS@+${LINKER_CPU_ENDIAN_FLAGS}+" \
|
yann@402
|
180 |
+ -e "s+@LINKER_RPATH_LINK_FLAG@+${LINKER_RPATH_LINK_FLAG}+" \
|
yann@402
|
181 |
+ ../edit-specs.in >../edit-specs-${CPU}.sed
|
yann@402
|
182 |
+
|
yann@402
|
183 |
+sed -f ../edit-specs-${CPU}.sed \
|
yann@402
|
184 |
+ ../gcc-sh-linux${INITIAL}/usr/lib/gcc-lib/sh-linux/${VERSION}/specs \
|
yann@402
|
185 |
+ > usr/lib/gcc-lib/${CPU}-linux/${VERSION}/specs
|
yann@402
|
186 |
+
|
yann@402
|
187 |
+exit 0
|
yann@402
|
188 |
diff -ruN gcc-20030210.orig/debian/multilib-symlink gcc-20030210/debian/multilib-symlink
|
yann@402
|
189 |
--- gcc-20030210.orig/debian/multilib-symlink Thu Jan 1 09:00:00 1970
|
yann@402
|
190 |
+++ gcc-20030210/debian/multilib-symlink Sat Feb 22 01:40:14 2003
|
yann@402
|
191 |
@@ -0,0 +1,10 @@
|
yann@402
|
192 |
+#! /bin/sh
|
yann@402
|
193 |
+
|
yann@402
|
194 |
+cd /usr/sh-linux/lib
|
yann@402
|
195 |
+ln -s ../../sh3-linux/lib/{*.a,*.so*,*.o} .
|
yann@402
|
196 |
+cd m4
|
yann@402
|
197 |
+ln -s ../../../sh4-linux/lib/{*.a,*.so*,*.o} .
|
yann@402
|
198 |
+cd ../mb
|
yann@402
|
199 |
+ln -s ../../../sh3eb-linux/lib/{*.a,*.so*,*.o} .
|
yann@402
|
200 |
+cd m4
|
yann@402
|
201 |
+ln -s ../../../../sh4eb-linux/lib/{*.a,*.so*,*.o} .
|
yann@402
|
202 |
diff -ruN gcc-20030210.orig/debian/shCPU-linux-GCC gcc-20030210/debian/shCPU-linux-GCC
|
yann@402
|
203 |
--- gcc-20030210.orig/debian/shCPU-linux-GCC Thu Jan 1 09:00:00 1970
|
yann@402
|
204 |
+++ gcc-20030210/debian/shCPU-linux-GCC Sat Feb 22 01:40:14 2003
|
yann@402
|
205 |
@@ -0,0 +1,59 @@
|
yann@402
|
206 |
+#! /bin/bash
|
yann@402
|
207 |
+
|
yann@402
|
208 |
+BASENAME=${0##*/}
|
yann@402
|
209 |
+PROG=${BASENAME##*-}
|
yann@402
|
210 |
+CPU=${BASENAME%%-*}
|
yann@402
|
211 |
+
|
yann@402
|
212 |
+if [ "$PROG" = gcc ]; then
|
yann@402
|
213 |
+ if [ "$1" = "-b" -a "$2" = "i386-linux" ]; then
|
yann@402
|
214 |
+ shift 2
|
yann@402
|
215 |
+ exec /usr/bin/gcc "$@"
|
yann@402
|
216 |
+ elif [ "$1" = "-print-multi-lib" -o "$1" = "--print-multi-lib" ]; then
|
yann@402
|
217 |
+ echo ".;"
|
yann@402
|
218 |
+ exit 0
|
yann@402
|
219 |
+ elif [ "$1" = "-print-multi-os-directory" -o "$1" = "--print-multi-os-directory" ]; then
|
yann@402
|
220 |
+ echo "."
|
yann@402
|
221 |
+ exit 0
|
yann@402
|
222 |
+ elif [ "$1" = "-dumpspecs" ]; then
|
yann@402
|
223 |
+ cat /usr/lib/gcc-lib/${CPU}-linux/@@VERSION@@/specs
|
yann@402
|
224 |
+ exit 0
|
yann@402
|
225 |
+ fi
|
yann@402
|
226 |
+fi
|
yann@402
|
227 |
+
|
yann@402
|
228 |
+case "${CPU}" in
|
yann@402
|
229 |
+ sh3)
|
yann@402
|
230 |
+ ARCH=m3
|
yann@402
|
231 |
+ DEFINES="-D__sh3__ -D__SH3__ -D__LITTLE_ENDIAN__"
|
yann@402
|
232 |
+ ENDIAN=ml
|
yann@402
|
233 |
+ ;;
|
yann@402
|
234 |
+ sh3eb)
|
yann@402
|
235 |
+ ARCH=m3
|
yann@402
|
236 |
+ DEFINES="-D__sh3__ -D__SH3__ -D__BIG_ENDIAN__"
|
yann@402
|
237 |
+ ENDIAN=mb
|
yann@402
|
238 |
+ ;;
|
yann@402
|
239 |
+ sh4)
|
yann@402
|
240 |
+ ARCH=m4
|
yann@402
|
241 |
+ DEFINES="-D__SH4__ -D__LITTLE_ENDIAN__"
|
yann@402
|
242 |
+ ENDIAN=ml
|
yann@402
|
243 |
+ ;;
|
yann@402
|
244 |
+ sh4eb)
|
yann@402
|
245 |
+ ARCH=m4
|
yann@402
|
246 |
+ DEFINES="-D__SH4__ -D__BIG_ENDIAN__"
|
yann@402
|
247 |
+ ENDIAN=mb
|
yann@402
|
248 |
+ ;;
|
yann@402
|
249 |
+esac
|
yann@402
|
250 |
+
|
yann@402
|
251 |
+# Prepend the appropriate options
|
yann@402
|
252 |
+# If user specifies some options, it will be overridden
|
yann@402
|
253 |
+
|
yann@402
|
254 |
+case "${PROG}" in
|
yann@402
|
255 |
+ cpp)
|
yann@402
|
256 |
+ exec sh-linux-${PROG} $DEFINES "$@"
|
yann@402
|
257 |
+ ;;
|
yann@402
|
258 |
+ c++|g++|g77|gcc|gcj)
|
yann@402
|
259 |
+ exec sh-linux-${PROG} -$ARCH -$ENDIAN "$@"
|
yann@402
|
260 |
+ ;;
|
yann@402
|
261 |
+esac
|
yann@402
|
262 |
+
|
yann@402
|
263 |
+echo "Something wrong..."
|
yann@402
|
264 |
+exit 1
|
yann@402
|
265 |
diff -ruN gcc-20030210.orig/gcc/config/sh/elf.h gcc-20030210/gcc/config/sh/elf.h
|
yann@402
|
266 |
--- gcc-20030210.orig/gcc/config/sh/elf.h Fri Feb 22 01:42:28 2002
|
yann@402
|
267 |
+++ gcc-20030210/gcc/config/sh/elf.h Sat Feb 22 01:40:14 2003
|
yann@402
|
268 |
@@ -170,3 +170,7 @@
|
yann@402
|
269 |
#undef ENDFILE_SPEC
|
yann@402
|
270 |
#define ENDFILE_SPEC \
|
yann@402
|
271 |
"%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
|
yann@402
|
272 |
+
|
yann@402
|
273 |
+/* ASM_OUTPUT_CASE_LABEL is defined in elfos.h. With it,
|
yann@402
|
274 |
+ redundant .align will be generated. */
|
yann@402
|
275 |
+#undef ASM_OUTPUT_CASE_LABEL
|
yann@402
|
276 |
diff -ruN gcc-20030210.orig/gcc/config/sh/lib1funcs.asm gcc-20030210/gcc/config/sh/lib1funcs.asm
|
yann@402
|
277 |
--- gcc-20030210.orig/gcc/config/sh/lib1funcs.asm Fri Feb 22 01:42:28 2002
|
yann@402
|
278 |
+++ gcc-20030210/gcc/config/sh/lib1funcs.asm Sat Feb 22 01:40:14 2003
|
yann@402
|
279 |
@@ -39,8 +39,13 @@
|
yann@402
|
280 |
|
yann@402
|
281 |
#ifdef __ELF__
|
yann@402
|
282 |
#define LOCAL(X) .L_##X
|
yann@402
|
283 |
+#define FUNC(X) .type X,@function; .hidden X
|
yann@402
|
284 |
+#define _ENDFUNC(X) .Lfe_##X: .size X,.Lfe_##X-X
|
yann@402
|
285 |
+#define ENDFUNC(X) _ENDFUNC(X)
|
yann@402
|
286 |
#else
|
yann@402
|
287 |
#define LOCAL(X) L_##X
|
yann@402
|
288 |
+#define FUNC(X)
|
yann@402
|
289 |
+#define ENDFUNC(X)
|
yann@402
|
290 |
#endif
|
yann@402
|
291 |
|
yann@402
|
292 |
#ifdef __linux__
|
yann@402
|
293 |
@@ -91,6 +96,40 @@
|
yann@402
|
294 |
.global GLOBAL(ashiftrt_r4_31)
|
yann@402
|
295 |
.global GLOBAL(ashiftrt_r4_32)
|
yann@402
|
296 |
|
yann@402
|
297 |
+ FUNC(GLOBAL(ashiftrt_r4_0))
|
yann@402
|
298 |
+ FUNC(GLOBAL(ashiftrt_r4_1))
|
yann@402
|
299 |
+ FUNC(GLOBAL(ashiftrt_r4_2))
|
yann@402
|
300 |
+ FUNC(GLOBAL(ashiftrt_r4_3))
|
yann@402
|
301 |
+ FUNC(GLOBAL(ashiftrt_r4_4))
|
yann@402
|
302 |
+ FUNC(GLOBAL(ashiftrt_r4_5))
|
yann@402
|
303 |
+ FUNC(GLOBAL(ashiftrt_r4_6))
|
yann@402
|
304 |
+ FUNC(GLOBAL(ashiftrt_r4_7))
|
yann@402
|
305 |
+ FUNC(GLOBAL(ashiftrt_r4_8))
|
yann@402
|
306 |
+ FUNC(GLOBAL(ashiftrt_r4_9))
|
yann@402
|
307 |
+ FUNC(GLOBAL(ashiftrt_r4_10))
|
yann@402
|
308 |
+ FUNC(GLOBAL(ashiftrt_r4_11))
|
yann@402
|
309 |
+ FUNC(GLOBAL(ashiftrt_r4_12))
|
yann@402
|
310 |
+ FUNC(GLOBAL(ashiftrt_r4_13))
|
yann@402
|
311 |
+ FUNC(GLOBAL(ashiftrt_r4_14))
|
yann@402
|
312 |
+ FUNC(GLOBAL(ashiftrt_r4_15))
|
yann@402
|
313 |
+ FUNC(GLOBAL(ashiftrt_r4_16))
|
yann@402
|
314 |
+ FUNC(GLOBAL(ashiftrt_r4_17))
|
yann@402
|
315 |
+ FUNC(GLOBAL(ashiftrt_r4_18))
|
yann@402
|
316 |
+ FUNC(GLOBAL(ashiftrt_r4_19))
|
yann@402
|
317 |
+ FUNC(GLOBAL(ashiftrt_r4_20))
|
yann@402
|
318 |
+ FUNC(GLOBAL(ashiftrt_r4_21))
|
yann@402
|
319 |
+ FUNC(GLOBAL(ashiftrt_r4_22))
|
yann@402
|
320 |
+ FUNC(GLOBAL(ashiftrt_r4_23))
|
yann@402
|
321 |
+ FUNC(GLOBAL(ashiftrt_r4_24))
|
yann@402
|
322 |
+ FUNC(GLOBAL(ashiftrt_r4_25))
|
yann@402
|
323 |
+ FUNC(GLOBAL(ashiftrt_r4_26))
|
yann@402
|
324 |
+ FUNC(GLOBAL(ashiftrt_r4_27))
|
yann@402
|
325 |
+ FUNC(GLOBAL(ashiftrt_r4_28))
|
yann@402
|
326 |
+ FUNC(GLOBAL(ashiftrt_r4_29))
|
yann@402
|
327 |
+ FUNC(GLOBAL(ashiftrt_r4_30))
|
yann@402
|
328 |
+ FUNC(GLOBAL(ashiftrt_r4_31))
|
yann@402
|
329 |
+ FUNC(GLOBAL(ashiftrt_r4_32))
|
yann@402
|
330 |
+
|
yann@402
|
331 |
.align 1
|
yann@402
|
332 |
GLOBAL(ashiftrt_r4_32):
|
yann@402
|
333 |
GLOBAL(ashiftrt_r4_31):
|
yann@402
|
334 |
@@ -170,6 +209,41 @@
|
yann@402
|
335 |
GLOBAL(ashiftrt_r4_0):
|
yann@402
|
336 |
rts
|
yann@402
|
337 |
nop
|
yann@402
|
338 |
+
|
yann@402
|
339 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_0))
|
yann@402
|
340 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_1))
|
yann@402
|
341 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_2))
|
yann@402
|
342 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_3))
|
yann@402
|
343 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_4))
|
yann@402
|
344 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_5))
|
yann@402
|
345 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_6))
|
yann@402
|
346 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_7))
|
yann@402
|
347 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_8))
|
yann@402
|
348 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_9))
|
yann@402
|
349 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_10))
|
yann@402
|
350 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_11))
|
yann@402
|
351 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_12))
|
yann@402
|
352 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_13))
|
yann@402
|
353 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_14))
|
yann@402
|
354 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_15))
|
yann@402
|
355 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_16))
|
yann@402
|
356 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_17))
|
yann@402
|
357 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_18))
|
yann@402
|
358 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_19))
|
yann@402
|
359 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_20))
|
yann@402
|
360 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_21))
|
yann@402
|
361 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_22))
|
yann@402
|
362 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_23))
|
yann@402
|
363 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_24))
|
yann@402
|
364 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_25))
|
yann@402
|
365 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_26))
|
yann@402
|
366 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_27))
|
yann@402
|
367 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_28))
|
yann@402
|
368 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_29))
|
yann@402
|
369 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_30))
|
yann@402
|
370 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_31))
|
yann@402
|
371 |
+ ENDFUNC(GLOBAL(ashiftrt_r4_32))
|
yann@402
|
372 |
+
|
yann@402
|
373 |
#endif
|
yann@402
|
374 |
|
yann@402
|
375 |
#ifdef L_ashiftrt_n
|
yann@402
|
376 |
@@ -192,6 +266,7 @@
|
yann@402
|
377 |
!
|
yann@402
|
378 |
|
yann@402
|
379 |
.global GLOBAL(ashrsi3)
|
yann@402
|
380 |
+ FUNC(GLOBAL(ashrsi3))
|
yann@402
|
381 |
.align 2
|
yann@402
|
382 |
GLOBAL(ashrsi3):
|
yann@402
|
383 |
mov #31,r0
|
yann@402
|
384 |
@@ -319,6 +394,8 @@
|
yann@402
|
385 |
rts
|
yann@402
|
386 |
nop
|
yann@402
|
387 |
|
yann@402
|
388 |
+ ENDFUNC(GLOBAL(ashrsi3))
|
yann@402
|
389 |
+
|
yann@402
|
390 |
#endif
|
yann@402
|
391 |
|
yann@402
|
392 |
#ifdef L_ashiftlt
|
yann@402
|
393 |
@@ -340,6 +417,7 @@
|
yann@402
|
394 |
! (none)
|
yann@402
|
395 |
!
|
yann@402
|
396 |
.global GLOBAL(ashlsi3)
|
yann@402
|
397 |
+ FUNC(GLOBAL(ashlsi3))
|
yann@402
|
398 |
.align 2
|
yann@402
|
399 |
GLOBAL(ashlsi3):
|
yann@402
|
400 |
mov #31,r0
|
yann@402
|
401 |
@@ -476,6 +554,8 @@
|
yann@402
|
402 |
rts
|
yann@402
|
403 |
nop
|
yann@402
|
404 |
|
yann@402
|
405 |
+ ENDFUNC(GLOBAL(ashlsi3))
|
yann@402
|
406 |
+
|
yann@402
|
407 |
#endif
|
yann@402
|
408 |
|
yann@402
|
409 |
#ifdef L_lshiftrt
|
yann@402
|
410 |
@@ -497,6 +577,7 @@
|
yann@402
|
411 |
! (none)
|
yann@402
|
412 |
!
|
yann@402
|
413 |
.global GLOBAL(lshrsi3)
|
yann@402
|
414 |
+ FUNC(GLOBAL(lshrsi3))
|
yann@402
|
415 |
.align 2
|
yann@402
|
416 |
GLOBAL(lshrsi3):
|
yann@402
|
417 |
mov #31,r0
|
yann@402
|
418 |
@@ -633,6 +714,8 @@
|
yann@402
|
419 |
rts
|
yann@402
|
420 |
nop
|
yann@402
|
421 |
|
yann@402
|
422 |
+ ENDFUNC(GLOBAL(lshrsi3))
|
yann@402
|
423 |
+
|
yann@402
|
424 |
#endif
|
yann@402
|
425 |
|
yann@402
|
426 |
#ifdef L_movstr
|
yann@402
|
427 |
@@ -649,76 +732,113 @@
|
yann@402
|
428 |
add #64,r4
|
yann@402
|
429 |
.align 4
|
yann@402
|
430 |
.global GLOBAL(movstrSI64)
|
yann@402
|
431 |
+ FUNC(GLOBAL(movstrSI64))
|
yann@402
|
432 |
GLOBAL(movstrSI64):
|
yann@402
|
433 |
mov.l @(60,r5),r0
|
yann@402
|
434 |
mov.l r0,@(60,r4)
|
yann@402
|
435 |
.global GLOBAL(movstrSI60)
|
yann@402
|
436 |
+ FUNC(GLOBAL(movstrSI60))
|
yann@402
|
437 |
GLOBAL(movstrSI60):
|
yann@402
|
438 |
mov.l @(56,r5),r0
|
yann@402
|
439 |
mov.l r0,@(56,r4)
|
yann@402
|
440 |
.global GLOBAL(movstrSI56)
|
yann@402
|
441 |
+ FUNC(GLOBAL(movstrSI56))
|
yann@402
|
442 |
GLOBAL(movstrSI56):
|
yann@402
|
443 |
mov.l @(52,r5),r0
|
yann@402
|
444 |
mov.l r0,@(52,r4)
|
yann@402
|
445 |
.global GLOBAL(movstrSI52)
|
yann@402
|
446 |
+ FUNC(GLOBAL(movstrSI52))
|
yann@402
|
447 |
GLOBAL(movstrSI52):
|
yann@402
|
448 |
mov.l @(48,r5),r0
|
yann@402
|
449 |
mov.l r0,@(48,r4)
|
yann@402
|
450 |
.global GLOBAL(movstrSI48)
|
yann@402
|
451 |
+ FUNC(GLOBAL(movstrSI48))
|
yann@402
|
452 |
GLOBAL(movstrSI48):
|
yann@402
|
453 |
mov.l @(44,r5),r0
|
yann@402
|
454 |
mov.l r0,@(44,r4)
|
yann@402
|
455 |
.global GLOBAL(movstrSI44)
|
yann@402
|
456 |
+ FUNC(GLOBAL(movstrSI44))
|
yann@402
|
457 |
GLOBAL(movstrSI44):
|
yann@402
|
458 |
mov.l @(40,r5),r0
|
yann@402
|
459 |
mov.l r0,@(40,r4)
|
yann@402
|
460 |
.global GLOBAL(movstrSI40)
|
yann@402
|
461 |
+ FUNC(GLOBAL(movstrSI40))
|
yann@402
|
462 |
GLOBAL(movstrSI40):
|
yann@402
|
463 |
mov.l @(36,r5),r0
|
yann@402
|
464 |
mov.l r0,@(36,r4)
|
yann@402
|
465 |
.global GLOBAL(movstrSI36)
|
yann@402
|
466 |
+ FUNC(GLOBAL(movstrSI36))
|
yann@402
|
467 |
GLOBAL(movstrSI36):
|
yann@402
|
468 |
mov.l @(32,r5),r0
|
yann@402
|
469 |
mov.l r0,@(32,r4)
|
yann@402
|
470 |
.global GLOBAL(movstrSI32)
|
yann@402
|
471 |
+ FUNC(GLOBAL(movstrSI32))
|
yann@402
|
472 |
GLOBAL(movstrSI32):
|
yann@402
|
473 |
mov.l @(28,r5),r0
|
yann@402
|
474 |
mov.l r0,@(28,r4)
|
yann@402
|
475 |
.global GLOBAL(movstrSI28)
|
yann@402
|
476 |
+ FUNC(GLOBAL(movstrSI28))
|
yann@402
|
477 |
GLOBAL(movstrSI28):
|
yann@402
|
478 |
mov.l @(24,r5),r0
|
yann@402
|
479 |
mov.l r0,@(24,r4)
|
yann@402
|
480 |
.global GLOBAL(movstrSI24)
|
yann@402
|
481 |
+ FUNC(GLOBAL(movstrSI24))
|
yann@402
|
482 |
GLOBAL(movstrSI24):
|
yann@402
|
483 |
mov.l @(20,r5),r0
|
yann@402
|
484 |
mov.l r0,@(20,r4)
|
yann@402
|
485 |
.global GLOBAL(movstrSI20)
|
yann@402
|
486 |
+ FUNC(GLOBAL(movstrSI20))
|
yann@402
|
487 |
GLOBAL(movstrSI20):
|
yann@402
|
488 |
mov.l @(16,r5),r0
|
yann@402
|
489 |
mov.l r0,@(16,r4)
|
yann@402
|
490 |
.global GLOBAL(movstrSI16)
|
yann@402
|
491 |
+ FUNC(GLOBAL(movstrSI16))
|
yann@402
|
492 |
GLOBAL(movstrSI16):
|
yann@402
|
493 |
mov.l @(12,r5),r0
|
yann@402
|
494 |
mov.l r0,@(12,r4)
|
yann@402
|
495 |
.global GLOBAL(movstrSI12)
|
yann@402
|
496 |
+ FUNC(GLOBAL(movstrSI12))
|
yann@402
|
497 |
GLOBAL(movstrSI12):
|
yann@402
|
498 |
mov.l @(8,r5),r0
|
yann@402
|
499 |
mov.l r0,@(8,r4)
|
yann@402
|
500 |
.global GLOBAL(movstrSI8)
|
yann@402
|
501 |
+ FUNC(GLOBAL(movstrSI8))
|
yann@402
|
502 |
GLOBAL(movstrSI8):
|
yann@402
|
503 |
mov.l @(4,r5),r0
|
yann@402
|
504 |
mov.l r0,@(4,r4)
|
yann@402
|
505 |
.global GLOBAL(movstrSI4)
|
yann@402
|
506 |
+ FUNC(GLOBAL(movstrSI4))
|
yann@402
|
507 |
GLOBAL(movstrSI4):
|
yann@402
|
508 |
mov.l @(0,r5),r0
|
yann@402
|
509 |
mov.l r0,@(0,r4)
|
yann@402
|
510 |
+ .global GLOBAL(movstrSI0)
|
yann@402
|
511 |
+ FUNC(GLOBAL(movstrSI0))
|
yann@402
|
512 |
GLOBAL(movstrSI0):
|
yann@402
|
513 |
rts
|
yann@402
|
514 |
nop
|
yann@402
|
515 |
|
yann@402
|
516 |
+ ENDFUNC(GLOBAL(movstrSI64))
|
yann@402
|
517 |
+ ENDFUNC(GLOBAL(movstrSI60))
|
yann@402
|
518 |
+ ENDFUNC(GLOBAL(movstrSI56))
|
yann@402
|
519 |
+ ENDFUNC(GLOBAL(movstrSI52))
|
yann@402
|
520 |
+ ENDFUNC(GLOBAL(movstrSI48))
|
yann@402
|
521 |
+ ENDFUNC(GLOBAL(movstrSI44))
|
yann@402
|
522 |
+ ENDFUNC(GLOBAL(movstrSI40))
|
yann@402
|
523 |
+ ENDFUNC(GLOBAL(movstrSI36))
|
yann@402
|
524 |
+ ENDFUNC(GLOBAL(movstrSI32))
|
yann@402
|
525 |
+ ENDFUNC(GLOBAL(movstrSI28))
|
yann@402
|
526 |
+ ENDFUNC(GLOBAL(movstrSI24))
|
yann@402
|
527 |
+ ENDFUNC(GLOBAL(movstrSI20))
|
yann@402
|
528 |
+ ENDFUNC(GLOBAL(movstrSI16))
|
yann@402
|
529 |
+ ENDFUNC(GLOBAL(movstrSI12))
|
yann@402
|
530 |
+ ENDFUNC(GLOBAL(movstrSI8))
|
yann@402
|
531 |
+ ENDFUNC(GLOBAL(movstrSI4))
|
yann@402
|
532 |
+ ENDFUNC(GLOBAL(movstrSI0))
|
yann@402
|
533 |
+
|
yann@402
|
534 |
.align 4
|
yann@402
|
535 |
|
yann@402
|
536 |
.global GLOBAL(movstr)
|
yann@402
|
537 |
+ FUNC(GLOBAL(movstr))
|
yann@402
|
538 |
GLOBAL(movstr):
|
yann@402
|
539 |
mov.l @(60,r5),r0
|
yann@402
|
540 |
mov.l r0,@(60,r4)
|
yann@402
|
541 |
@@ -775,6 +895,8 @@
|
yann@402
|
542 |
add #64,r5
|
yann@402
|
543 |
bra GLOBAL(movstr)
|
yann@402
|
544 |
add #64,r4
|
yann@402
|
545 |
+
|
yann@402
|
546 |
+ FUNC(GLOBAL(movstr))
|
yann@402
|
547 |
#endif
|
yann@402
|
548 |
|
yann@402
|
549 |
#ifdef L_movstr_i4
|
yann@402
|
550 |
@@ -783,6 +905,10 @@
|
yann@402
|
551 |
.global GLOBAL(movstr_i4_odd)
|
yann@402
|
552 |
.global GLOBAL(movstrSI12_i4)
|
yann@402
|
553 |
|
yann@402
|
554 |
+ FUNC(GLOBAL(movstr_i4_even))
|
yann@402
|
555 |
+ FUNC(GLOBAL(movstr_i4_odd))
|
yann@402
|
556 |
+ FUNC(GLOBAL(movstrSI12_i4))
|
yann@402
|
557 |
+
|
yann@402
|
558 |
.p2align 5
|
yann@402
|
559 |
L_movstr_2mod4_end:
|
yann@402
|
560 |
mov.l r0,@(16,r4)
|
yann@402
|
561 |
@@ -791,6 +917,11 @@
|
yann@402
|
562 |
|
yann@402
|
563 |
.p2align 2
|
yann@402
|
564 |
|
yann@402
|
565 |
+GLOBAL(movstr_i4_even):
|
yann@402
|
566 |
+ mov.l @r5+,r0
|
yann@402
|
567 |
+ bra L_movstr_start_even
|
yann@402
|
568 |
+ mov.l @r5+,r1
|
yann@402
|
569 |
+
|
yann@402
|
570 |
GLOBAL(movstr_i4_odd):
|
yann@402
|
571 |
mov.l @r5+,r1
|
yann@402
|
572 |
add #-4,r4
|
yann@402
|
573 |
@@ -817,10 +948,8 @@
|
yann@402
|
574 |
rts
|
yann@402
|
575 |
mov.l r3,@(12,r4)
|
yann@402
|
576 |
|
yann@402
|
577 |
-GLOBAL(movstr_i4_even):
|
yann@402
|
578 |
- mov.l @r5+,r0
|
yann@402
|
579 |
- bra L_movstr_start_even
|
yann@402
|
580 |
- mov.l @r5+,r1
|
yann@402
|
581 |
+ ENDFUNC(GLOBAL(movstr_i4_even))
|
yann@402
|
582 |
+ ENDFUNC(GLOBAL(movstr_i4_odd))
|
yann@402
|
583 |
|
yann@402
|
584 |
.p2align 4
|
yann@402
|
585 |
GLOBAL(movstrSI12_i4):
|
yann@402
|
586 |
@@ -831,12 +960,16 @@
|
yann@402
|
587 |
mov.l r1,@(4,r4)
|
yann@402
|
588 |
rts
|
yann@402
|
589 |
mov.l r2,@(8,r4)
|
yann@402
|
590 |
+
|
yann@402
|
591 |
+ ENDFUNC(GLOBAL(movstrSI12_i4))
|
yann@402
|
592 |
+
|
yann@402
|
593 |
#endif
|
yann@402
|
594 |
|
yann@402
|
595 |
#ifdef L_mulsi3
|
yann@402
|
596 |
|
yann@402
|
597 |
|
yann@402
|
598 |
.global GLOBAL(mulsi3)
|
yann@402
|
599 |
+ FUNC(GLOBAL(mulsi3))
|
yann@402
|
600 |
|
yann@402
|
601 |
! r4 = aabb
|
yann@402
|
602 |
! r5 = ccdd
|
yann@402
|
603 |
@@ -869,7 +1002,7 @@
|
yann@402
|
604 |
rts
|
yann@402
|
605 |
add r2,r0
|
yann@402
|
606 |
|
yann@402
|
607 |
-
|
yann@402
|
608 |
+ FUNC(GLOBAL(mulsi3))
|
yann@402
|
609 |
#endif
|
yann@402
|
610 |
#endif /* ! __SH5__ */
|
yann@402
|
611 |
#ifdef L_sdivsi3_i4
|
yann@402
|
612 |
@@ -879,6 +1012,7 @@
|
yann@402
|
613 |
!! args in r4 and r5, result in fpul, clobber dr0, dr2
|
yann@402
|
614 |
|
yann@402
|
615 |
.global GLOBAL(sdivsi3_i4)
|
yann@402
|
616 |
+ FUNC(GLOBAL(sdivsi3_i4))
|
yann@402
|
617 |
GLOBAL(sdivsi3_i4):
|
yann@402
|
618 |
lds r4,fpul
|
yann@402
|
619 |
float fpul,dr0
|
yann@402
|
620 |
@@ -888,6 +1022,8 @@
|
yann@402
|
621 |
rts
|
yann@402
|
622 |
ftrc dr0,fpul
|
yann@402
|
623 |
|
yann@402
|
624 |
+ ENDFUNC(GLOBAL(sdivsi3_i4))
|
yann@402
|
625 |
+
|
yann@402
|
626 |
#elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__)
|
yann@402
|
627 |
!! args in r4 and r5, result in fpul, clobber r2, dr0, dr2
|
yann@402
|
628 |
|
yann@402
|
629 |
@@ -896,6 +1032,7 @@
|
yann@402
|
630 |
.mode SHcompact
|
yann@402
|
631 |
#endif
|
yann@402
|
632 |
.global GLOBAL(sdivsi3_i4)
|
yann@402
|
633 |
+ FUNC(GLOBAL(sdivsi3_i4))
|
yann@402
|
634 |
GLOBAL(sdivsi3_i4):
|
yann@402
|
635 |
sts.l fpscr,@-r15
|
yann@402
|
636 |
mov #8,r2
|
yann@402
|
637 |
@@ -910,6 +1047,8 @@
|
yann@402
|
638 |
rts
|
yann@402
|
639 |
lds.l @r15+,fpscr
|
yann@402
|
640 |
|
yann@402
|
641 |
+ ENDFUNC(GLOBAL(sdivsi3_i4))
|
yann@402
|
642 |
+
|
yann@402
|
643 |
#endif /* ! __SH5__ || __SH5__ == 32 */
|
yann@402
|
644 |
#endif /* ! __SH4__ */
|
yann@402
|
645 |
#endif
|
yann@402
|
646 |
@@ -924,9 +1063,10 @@
|
yann@402
|
647 |
!!
|
yann@402
|
648 |
!!
|
yann@402
|
649 |
|
yann@402
|
650 |
-!! args in r4 and r5, result in r0 clobber r1,r2,r3
|
yann@402
|
651 |
+!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit
|
yann@402
|
652 |
|
yann@402
|
653 |
.global GLOBAL(sdivsi3)
|
yann@402
|
654 |
+ FUNC(GLOBAL(sdivsi3))
|
yann@402
|
655 |
#if __SHMEDIA__
|
yann@402
|
656 |
#if __SH5__ == 32
|
yann@402
|
657 |
.section .text..SHmedia32,"ax"
|
yann@402
|
658 |
@@ -1076,6 +1216,7 @@
|
yann@402
|
659 |
div0: rts
|
yann@402
|
660 |
mov #0,r0
|
yann@402
|
661 |
|
yann@402
|
662 |
+ ENDFUNC(GLOBAL(sdivsi3))
|
yann@402
|
663 |
#endif /* ! __SHMEDIA__ */
|
yann@402
|
664 |
#endif /* ! __SH4__ */
|
yann@402
|
665 |
#endif
|
yann@402
|
666 |
@@ -1084,9 +1225,11 @@
|
yann@402
|
667 |
.title "SH DIVIDE"
|
yann@402
|
668 |
!! 4 byte integer Divide code for the Hitachi SH
|
yann@402
|
669 |
#ifdef __SH4__
|
yann@402
|
670 |
-!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
|
yann@402
|
671 |
+!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4,
|
yann@402
|
672 |
+!! and t bit
|
yann@402
|
673 |
|
yann@402
|
674 |
.global GLOBAL(udivsi3_i4)
|
yann@402
|
675 |
+ FUNC(GLOBAL(udivsi3_i4))
|
yann@402
|
676 |
GLOBAL(udivsi3_i4):
|
yann@402
|
677 |
mov #1,r1
|
yann@402
|
678 |
cmp/hi r1,r5
|
yann@402
|
679 |
@@ -1127,6 +1270,8 @@
|
yann@402
|
680 |
L1:
|
yann@402
|
681 |
.double 2147483648
|
yann@402
|
682 |
|
yann@402
|
683 |
+ ENDFUNC(GLOBAL(udivsi3_i4))
|
yann@402
|
684 |
+
|
yann@402
|
685 |
#elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__)
|
yann@402
|
686 |
!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
|
yann@402
|
687 |
|
yann@402
|
688 |
@@ -1135,6 +1280,7 @@
|
yann@402
|
689 |
.mode SHcompact
|
yann@402
|
690 |
#endif
|
yann@402
|
691 |
.global GLOBAL(udivsi3_i4)
|
yann@402
|
692 |
+ FUNC(GLOBAL(udivsi3_i4))
|
yann@402
|
693 |
GLOBAL(udivsi3_i4):
|
yann@402
|
694 |
mov #1,r1
|
yann@402
|
695 |
cmp/hi r1,r5
|
yann@402
|
696 |
@@ -1183,6 +1329,8 @@
|
yann@402
|
697 |
#endif
|
yann@402
|
698 |
.double 2147483648
|
yann@402
|
699 |
|
yann@402
|
700 |
+ ENDFUNC(GLOBAL(udivsi3_i4))
|
yann@402
|
701 |
+
|
yann@402
|
702 |
#endif /* ! __SH5__ || __SH5__ == 32 */
|
yann@402
|
703 |
#endif /* ! __SH4__ */
|
yann@402
|
704 |
#endif
|
yann@402
|
705 |
@@ -1199,6 +1347,7 @@
|
yann@402
|
706 |
|
yann@402
|
707 |
!! args in r4 and r5, result in r0, clobbers r4, pr, and t bit
|
yann@402
|
708 |
.global GLOBAL(udivsi3)
|
yann@402
|
709 |
+ FUNC(GLOBAL(udivsi3))
|
yann@402
|
710 |
|
yann@402
|
711 |
#if __SHMEDIA__
|
yann@402
|
712 |
#if __SH5__ == 32
|
yann@402
|
713 |
@@ -1299,6 +1448,8 @@
|
yann@402
|
714 |
ret: rts
|
yann@402
|
715 |
mov r4,r0
|
yann@402
|
716 |
|
yann@402
|
717 |
+ ENDFUNC(GLOBAL(udivsi3))
|
yann@402
|
718 |
+
|
yann@402
|
719 |
#endif /* ! __SHMEDIA__ */
|
yann@402
|
720 |
#endif /* __SH4__ */
|
yann@402
|
721 |
#endif
|
yann@402
|
722 |
@@ -1308,6 +1459,7 @@
|
yann@402
|
723 |
.mode SHcompact
|
yann@402
|
724 |
#endif
|
yann@402
|
725 |
.global GLOBAL(set_fpscr)
|
yann@402
|
726 |
+ FUNC(GLOBAL(set_fpscr))
|
yann@402
|
727 |
GLOBAL(set_fpscr):
|
yann@402
|
728 |
lds r4,fpscr
|
yann@402
|
729 |
mov.l LOCAL(set_fpscr_L1),r1
|
yann@402
|
730 |
@@ -1340,11 +1492,16 @@
|
yann@402
|
731 |
.align 2
|
yann@402
|
732 |
LOCAL(set_fpscr_L1):
|
yann@402
|
733 |
.long GLOBAL(fpscr_values)
|
yann@402
|
734 |
+
|
yann@402
|
735 |
+ ENDFUNC(GLOBAL(set_fpscr))
|
yann@402
|
736 |
+
|
yann@402
|
737 |
+#ifndef NO_FPSCR_VALUES
|
yann@402
|
738 |
#ifdef __ELF__
|
yann@402
|
739 |
.comm GLOBAL(fpscr_values),8,4
|
yann@402
|
740 |
#else
|
yann@402
|
741 |
.comm GLOBAL(fpscr_values),8
|
yann@402
|
742 |
#endif /* ELF */
|
yann@402
|
743 |
+#endif /* NO_FPSCR_VALUES */
|
yann@402
|
744 |
#endif /* SH3E / SH4 */
|
yann@402
|
745 |
#endif /* L_set_fpscr */
|
yann@402
|
746 |
#ifdef L_ic_invalidate
|
yann@402
|
747 |
@@ -1360,6 +1517,7 @@
|
yann@402
|
748 |
blink tr0, r63
|
yann@402
|
749 |
#elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__)
|
yann@402
|
750 |
.global GLOBAL(ic_invalidate)
|
yann@402
|
751 |
+ FUNC(GLOBAL(ic_invalidate))
|
yann@402
|
752 |
GLOBAL(ic_invalidate):
|
yann@402
|
753 |
ocbwb @r4
|
yann@402
|
754 |
mova 0f,r0
|
yann@402
|
755 |
@@ -1382,6 +1540,9 @@
|
yann@402
|
756 |
nop
|
yann@402
|
757 |
.endr
|
yann@402
|
758 |
.endr
|
yann@402
|
759 |
+
|
yann@402
|
760 |
+ ENDFUNC(GLOBAL(ic_invalidate))
|
yann@402
|
761 |
+
|
yann@402
|
762 |
#endif /* SH4 */
|
yann@402
|
763 |
#endif /* L_ic_invalidate */
|
yann@402
|
764 |
|
yann@402
|
765 |
diff -ruN gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver gcc-20030210/gcc/config/sh/libgcc-glibc.ver
|
yann@402
|
766 |
--- gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver Thu Jan 1 09:00:00 1970
|
yann@402
|
767 |
+++ gcc-20030210/gcc/config/sh/libgcc-glibc.ver Sat Feb 22 01:40:14 2003
|
yann@402
|
768 |
@@ -0,0 +1,21 @@
|
yann@402
|
769 |
+# In order to work around the very problems that force us to now generally
|
yann@402
|
770 |
+# create a libgcc.so, glibc reexported a number of routines from libgcc.a.
|
yann@402
|
771 |
+# By now choosing the same version tags for these specific routines, we
|
yann@402
|
772 |
+# maintain enough binary compatibility to allow future versions of glibc
|
yann@402
|
773 |
+# to defer implementation of these routines to libgcc.so via DT_AUXILIARY.
|
yann@402
|
774 |
+
|
yann@402
|
775 |
+# Note that we cannot use the default libgcc-glibc.ver file on sh,
|
yann@402
|
776 |
+# because GLIBC_2.0 does not exist on this architecture, as the first
|
yann@402
|
777 |
+# ever glibc release on the platform was GLIBC_2.2.
|
yann@402
|
778 |
+
|
yann@402
|
779 |
+%inherit GCC_3.0 GLIBC_2.2
|
yann@402
|
780 |
+GLIBC_2.2 {
|
yann@402
|
781 |
+ __register_frame
|
yann@402
|
782 |
+ __register_frame_table
|
yann@402
|
783 |
+ __deregister_frame
|
yann@402
|
784 |
+ __register_frame_info
|
yann@402
|
785 |
+ __deregister_frame_info
|
yann@402
|
786 |
+ __frame_state_for
|
yann@402
|
787 |
+ __register_frame_info_table
|
yann@402
|
788 |
+}
|
yann@402
|
789 |
+
|
yann@402
|
790 |
diff -ruN gcc-20030210.orig/gcc/config/sh/linux.h gcc-20030210/gcc/config/sh/linux.h
|
yann@402
|
791 |
--- gcc-20030210.orig/gcc/config/sh/linux.h Tue Apr 16 05:27:42 2002
|
yann@402
|
792 |
+++ gcc-20030210/gcc/config/sh/linux.h Sat Feb 22 01:40:14 2003
|
yann@402
|
793 |
@@ -19,6 +19,10 @@
|
yann@402
|
794 |
the Free Software Foundation, 59 Temple Place - Suite 330,
|
yann@402
|
795 |
Boston, MA 02111-1307, USA. */
|
yann@402
|
796 |
|
yann@402
|
797 |
+/* We're not SYSVR4, not having /usr/ccs */
|
yann@402
|
798 |
+#undef MD_EXEC_PREFIX
|
yann@402
|
799 |
+#undef MD_STARTFILE_PREFIX
|
yann@402
|
800 |
+
|
yann@402
|
801 |
/* Run-time Target Specification. */
|
yann@402
|
802 |
#undef TARGET_VERSION
|
yann@402
|
803 |
#define TARGET_VERSION fputs (" (SH GNU/Linux with ELF)", stderr);
|
yann@402
|
804 |
@@ -39,6 +43,28 @@
|
yann@402
|
805 |
#undef WCHAR_TYPE_SIZE
|
yann@402
|
806 |
#define WCHAR_TYPE_SIZE BITS_PER_WORD
|
yann@402
|
807 |
|
yann@402
|
808 |
+/* This was defined in linux.h. Define it here also. */
|
yann@402
|
809 |
+#undef DEFAULT_VTABLE_THUNKS
|
yann@402
|
810 |
+#define DEFAULT_VTABLE_THUNKS 1
|
yann@402
|
811 |
+
|
yann@402
|
812 |
+/* Likewise. */
|
yann@402
|
813 |
+#define HANDLE_PRAGMA_PACK_PUSH_POP
|
yann@402
|
814 |
+
|
yann@402
|
815 |
+/* Pick up the return address upon entry to a procedure. Used for
|
yann@402
|
816 |
+ dwarf2 unwind information. This also enables the table driven
|
yann@402
|
817 |
+ mechanism. */
|
yann@402
|
818 |
+
|
yann@402
|
819 |
+#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, PR_REG)
|
yann@402
|
820 |
+#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (PR_REG)
|
yann@402
|
821 |
+
|
yann@402
|
822 |
+#undef CPP_SPEC
|
yann@402
|
823 |
+#define CPP_SPEC "\
|
yann@402
|
824 |
+ %{m4:-D__SH4__} \
|
yann@402
|
825 |
+ %{!m4:%(cpp_default_cpu_spec)} \
|
yann@402
|
826 |
+ %(subtarget_cpp_spec) \
|
yann@402
|
827 |
+ %(subtarget_cpp_ptr_spec) \
|
yann@402
|
828 |
+ %(subtarget_cpp_endian_spec) "
|
yann@402
|
829 |
+
|
yann@402
|
830 |
#undef SUBTARGET_CPP_SPEC
|
yann@402
|
831 |
#define SUBTARGET_CPP_SPEC "\
|
yann@402
|
832 |
%{fPIC:-D__PIC__ -D__pic__} \
|
yann@402
|
833 |
@@ -55,36 +81,45 @@
|
yann@402
|
834 |
#undef CPP_DEFAULT_CPU_SPEC
|
yann@402
|
835 |
#define CPP_DEFAULT_CPU_SPEC "-D__SH3__ -D__sh3__"
|
yann@402
|
836 |
|
yann@402
|
837 |
-
|
yann@402
|
838 |
#undef CPP_PREDEFINES
|
yann@402
|
839 |
#define CPP_PREDEFINES "-D__ELF__ -Dunix -D__sh__ -D__gnu_linux__ -Dlinux -Asystem=posix"
|
yann@402
|
840 |
|
yann@402
|
841 |
+/* The GNU C++ standard library requires that these macros be defined. */
|
yann@402
|
842 |
+#undef CPLUSPLUS_CPP_SPEC
|
yann@402
|
843 |
+#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
|
yann@402
|
844 |
+
|
yann@402
|
845 |
#undef ASM_SPEC
|
yann@402
|
846 |
-#define ASM_SPEC "%{!mb:-little} %{mrelax:-relax}"
|
yann@402
|
847 |
+#define ASM_SPEC "%{mb:-big} %{!mb:-little} %{mrelax:-relax}"
|
yann@402
|
848 |
|
yann@402
|
849 |
#undef CC1_SPEC
|
yann@402
|
850 |
#define CC1_SPEC \
|
yann@402
|
851 |
- "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}"
|
yann@402
|
852 |
-
|
yann@402
|
853 |
-#undef CC1PLUS_SPEC
|
yann@402
|
854 |
-#define CC1PLUS_SPEC \
|
yann@402
|
855 |
- "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}"
|
yann@402
|
856 |
+ "-musermode %{!mb:-ml} %{!m4:-m3} %{profile:-p}"
|
yann@402
|
857 |
|
yann@402
|
858 |
+/* XXX: It's wrong if prefix != /usr */
|
yann@402
|
859 |
#undef LINK_SPEC
|
yann@402
|
860 |
#define LINK_SPEC \
|
yann@402
|
861 |
- "%{!mb:-m shlelf_linux} %{mrelax:-relax} \
|
yann@402
|
862 |
+ "%{!mb:-m shlelf_linux -EL} %{mb:-m shelf_linux -EB} %{mrelax:-relax} \
|
yann@402
|
863 |
%{shared:-shared} \
|
yann@402
|
864 |
%{!static: \
|
yann@402
|
865 |
%{rdynamic:-export-dynamic} \
|
yann@402
|
866 |
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
|
yann@402
|
867 |
- %{!rpath:-rpath /lib}} \
|
yann@402
|
868 |
+ %{!mb:%{!m4:-rpath-link /usr/sh-linux/lib }} \
|
yann@402
|
869 |
+ %{!mb:%{m4:-rpath-link /usr/sh-linux/lib/m4 }} \
|
yann@402
|
870 |
+ %{mb:%{!m4:-rpath-link /usr/sh-linux/lib/mb }} \
|
yann@402
|
871 |
+ %{mb:%{m4:-rpath-link /usr/sh-linux/lib/mb/m4 }}} \
|
yann@402
|
872 |
%{static:-static}"
|
yann@402
|
873 |
|
yann@402
|
874 |
#undef LIB_SPEC
|
yann@402
|
875 |
+#undef LIB_SPEC
|
yann@402
|
876 |
#define LIB_SPEC \
|
yann@402
|
877 |
"%{shared: -lc} \
|
yann@402
|
878 |
- %{!shared: %{pthread:-lthread} \
|
yann@402
|
879 |
- %{profile:-lc_p} %{!profile: -lc}}"
|
yann@402
|
880 |
+ %{!shared: %{mieee:-lieee} %{pthread:-lpthread} \
|
yann@402
|
881 |
+ %{profile:-lc_p} %{!profile: -lc}}"
|
yann@402
|
882 |
+
|
yann@402
|
883 |
+#if defined(HAVE_LD_EH_FRAME_HDR)
|
yann@402
|
884 |
+#undef LINK_EH_SPEC
|
yann@402
|
885 |
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
yann@402
|
886 |
+#endif
|
yann@402
|
887 |
|
yann@402
|
888 |
#undef STARTFILE_SPEC
|
yann@402
|
889 |
#define STARTFILE_SPEC \
|
yann@402
|
890 |
@@ -92,4 +127,40 @@
|
yann@402
|
891 |
%{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
|
yann@402
|
892 |
%{!p:%{profile:gcrt1.o%s} \
|
yann@402
|
893 |
%{!profile:crt1.o%s}}}} \
|
yann@402
|
894 |
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
|
yann@402
|
895 |
+ crti.o%s %{static:crtbeginT.o%s}\
|
yann@402
|
896 |
+ %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
|
yann@402
|
897 |
+
|
yann@402
|
898 |
+#undef FUNCTION_PROFILER
|
yann@402
|
899 |
+#define FUNCTION_PROFILER(STREAM,LABELNO) \
|
yann@402
|
900 |
+do \
|
yann@402
|
901 |
+{ \
|
yann@402
|
902 |
+ if (flag_pic) \
|
yann@402
|
903 |
+ { \
|
yann@402
|
904 |
+ fprintf (STREAM, " mov.l 3f,r1\n"); \
|
yann@402
|
905 |
+ fprintf (STREAM, " mova 3f,r0\n"); \
|
yann@402
|
906 |
+ fprintf (STREAM, " add r1,r0\n"); \
|
yann@402
|
907 |
+ fprintf (STREAM, " mov.l 1f,r1\n"); \
|
yann@402
|
908 |
+ fprintf (STREAM, " mov.l @(r0,r1),r1\n"); \
|
yann@402
|
909 |
+ } \
|
yann@402
|
910 |
+ else \
|
yann@402
|
911 |
+ { \
|
yann@402
|
912 |
+ fprintf (STREAM, " mov.l 1f,r1\n"); \
|
yann@402
|
913 |
+ } \
|
yann@402
|
914 |
+ fprintf (STREAM, " sts.l pr,@-r15\n"); \
|
yann@402
|
915 |
+ fprintf (STREAM, " mova 2f,r0\n"); \
|
yann@402
|
916 |
+ fprintf (STREAM, " jmp @r1\n"); \
|
yann@402
|
917 |
+ fprintf (STREAM, " lds r0,pr\n"); \
|
yann@402
|
918 |
+ fprintf (STREAM, " .align 2\n"); \
|
yann@402
|
919 |
+ if (flag_pic) \
|
yann@402
|
920 |
+ { \
|
yann@402
|
921 |
+ fprintf (STREAM, "1: .long mcount@GOT\n"); \
|
yann@402
|
922 |
+ fprintf (STREAM, "3: .long _GLOBAL_OFFSET_TABLE_\n"); \
|
yann@402
|
923 |
+ } \
|
yann@402
|
924 |
+ else \
|
yann@402
|
925 |
+ { \
|
yann@402
|
926 |
+ fprintf (STREAM, "1: .long mcount\n"); \
|
yann@402
|
927 |
+ } \
|
yann@402
|
928 |
+ fprintf (STREAM, "2: lds.l @r15+,pr\n"); \
|
yann@402
|
929 |
+} while (0)
|
yann@402
|
930 |
+
|
yann@402
|
931 |
+#define NO_SHARED_LIBGCC_MULTILIB
|
yann@402
|
932 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh-protos.h gcc-20030210/gcc/config/sh/sh-protos.h
|
yann@402
|
933 |
--- gcc-20030210.orig/gcc/config/sh/sh-protos.h Fri Feb 22 01:42:28 2002
|
yann@402
|
934 |
+++ gcc-20030210/gcc/config/sh/sh-protos.h Sat Feb 22 01:40:14 2003
|
yann@402
|
935 |
@@ -74,6 +74,7 @@
|
yann@402
|
936 |
extern int shl_sext_length PARAMS ((rtx));
|
yann@402
|
937 |
extern int gen_shl_sext PARAMS ((rtx, rtx, rtx, rtx));
|
yann@402
|
938 |
extern rtx gen_datalabel_ref PARAMS ((rtx));
|
yann@402
|
939 |
+extern int shl_casesi_worker_length PARAMS ((rtx));
|
yann@402
|
940 |
extern int regs_used PARAMS ((rtx, int));
|
yann@402
|
941 |
extern void fixup_addr_diff_vecs PARAMS ((rtx));
|
yann@402
|
942 |
extern int get_dest_uid PARAMS ((rtx, int));
|
yann@402
|
943 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh.c gcc-20030210/gcc/config/sh/sh.c
|
yann@402
|
944 |
--- gcc-20030210.orig/gcc/config/sh/sh.c Fri Feb 22 01:42:28 2002
|
yann@402
|
945 |
+++ gcc-20030210/gcc/config/sh/sh.c Sat Feb 22 01:40:14 2003
|
yann@402
|
946 |
@@ -2143,6 +2143,48 @@
|
yann@402
|
947 |
return sym;
|
yann@402
|
948 |
}
|
yann@402
|
949 |
|
yann@402
|
950 |
+
|
yann@402
|
951 |
+/* Function to be used in the length attribute of the casesi_worker
|
yann@402
|
952 |
+ instruction. Returns number of instructions, which is half of the
|
yann@402
|
953 |
+ length of bytes. */
|
yann@402
|
954 |
+
|
yann@402
|
955 |
+int
|
yann@402
|
956 |
+shl_casesi_worker_length (insn)
|
yann@402
|
957 |
+ rtx insn;
|
yann@402
|
958 |
+{
|
yann@402
|
959 |
+ rtx set_src, label;
|
yann@402
|
960 |
+ rtx diff_vec;
|
yann@402
|
961 |
+
|
yann@402
|
962 |
+ set_src = SET_SRC (XVECEXP (PATTERN (insn), 0, 0));
|
yann@402
|
963 |
+ if (!(GET_CODE (set_src) == UNSPEC
|
yann@402
|
964 |
+ && XINT (set_src, 1) == UNSPEC_CASESI))
|
yann@402
|
965 |
+ abort ();
|
yann@402
|
966 |
+
|
yann@402
|
967 |
+ label = XVECEXP (set_src, 0, 2);
|
yann@402
|
968 |
+ if (GET_CODE (label) != LABEL_REF)
|
yann@402
|
969 |
+ abort ();
|
yann@402
|
970 |
+
|
yann@402
|
971 |
+ diff_vec = PATTERN (next_real_insn (XEXP (label, 0)));
|
yann@402
|
972 |
+
|
yann@402
|
973 |
+ if (GET_CODE (diff_vec) != ADDR_DIFF_VEC)
|
yann@402
|
974 |
+ abort ();
|
yann@402
|
975 |
+
|
yann@402
|
976 |
+ switch (GET_MODE (diff_vec))
|
yann@402
|
977 |
+ {
|
yann@402
|
978 |
+ case SImode:
|
yann@402
|
979 |
+ return 2;
|
yann@402
|
980 |
+ case HImode:
|
yann@402
|
981 |
+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
|
yann@402
|
982 |
+ return 3;
|
yann@402
|
983 |
+ return 2;
|
yann@402
|
984 |
+ case QImode:
|
yann@402
|
985 |
+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
|
yann@402
|
986 |
+ return 2;
|
yann@402
|
987 |
+ return 1;
|
yann@402
|
988 |
+ default:
|
yann@402
|
989 |
+ abort ();
|
yann@402
|
990 |
+ }
|
yann@402
|
991 |
+}
|
yann@402
|
992 |
|
yann@402
|
993 |
/* The SH cannot load a large constant into a register, constants have to
|
yann@402
|
994 |
come from a pc relative load. The reference of a pc relative load
|
yann@402
|
995 |
@@ -3190,7 +3232,7 @@
|
yann@402
|
996 |
vec_lab = XEXP (XEXP (pat, 0), 0);
|
yann@402
|
997 |
|
yann@402
|
998 |
/* Search the matching casesi_jump_2. */
|
yann@402
|
999 |
- for (prev = vec_lab; ; prev = PREV_INSN (prev))
|
yann@402
|
1000 |
+ for (prev = vec_lab; prev; prev = PREV_INSN (prev))
|
yann@402
|
1001 |
{
|
yann@402
|
1002 |
if (GET_CODE (prev) != JUMP_INSN)
|
yann@402
|
1003 |
continue;
|
yann@402
|
1004 |
@@ -3205,6 +3247,13 @@
|
yann@402
|
1005 |
break;
|
yann@402
|
1006 |
}
|
yann@402
|
1007 |
|
yann@402
|
1008 |
+ if (prev == NULL)
|
yann@402
|
1009 |
+ { /* Switch statement has been optimized out. */
|
yann@402
|
1010 |
+ delete_insn (PREV_INSN (insn));
|
yann@402
|
1011 |
+ delete_insn (insn);
|
yann@402
|
1012 |
+ continue;
|
yann@402
|
1013 |
+ }
|
yann@402
|
1014 |
+
|
yann@402
|
1015 |
/* Emit the reference label of the braf where it belongs, right after
|
yann@402
|
1016 |
the casesi_jump_2 (i.e. braf). */
|
yann@402
|
1017 |
braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0);
|
yann@402
|
1018 |
@@ -3223,7 +3272,7 @@
|
yann@402
|
1019 |
rtx barrier_or_label;
|
yann@402
|
1020 |
{
|
yann@402
|
1021 |
rtx next = next_real_insn (barrier_or_label), pat, prev;
|
yann@402
|
1022 |
- int slot, credit, jump_to_next;
|
yann@402
|
1023 |
+ int slot, credit, jump_to_next = 0;
|
yann@402
|
1024 |
|
yann@402
|
1025 |
if (! next)
|
yann@402
|
1026 |
return 0;
|
yann@402
|
1027 |
@@ -4507,7 +4556,8 @@
|
yann@402
|
1028 |
if (current_function_varargs || current_function_stdarg)
|
yann@402
|
1029 |
{
|
yann@402
|
1030 |
/* This is not used by the SH3E calling convention */
|
yann@402
|
1031 |
- if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI)
|
yann@402
|
1032 |
+ if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI
|
yann@402
|
1033 |
+ || TARGET_NO_IMPLICIT_FP)
|
yann@402
|
1034 |
{
|
yann@402
|
1035 |
/* Push arg regs as if they'd been provided by caller in stack. */
|
yann@402
|
1036 |
for (i = 0; i < NPARM_REGS(SImode); i++)
|
yann@402
|
1037 |
@@ -5149,7 +5199,8 @@
|
yann@402
|
1038 |
tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack;
|
yann@402
|
1039 |
tree record;
|
yann@402
|
1040 |
|
yann@402
|
1041 |
- if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI)
|
yann@402
|
1042 |
+ if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI
|
yann@402
|
1043 |
+ || TARGET_NO_IMPLICIT_FP)
|
yann@402
|
1044 |
return ptr_type_node;
|
yann@402
|
1045 |
|
yann@402
|
1046 |
record = make_node (RECORD_TYPE);
|
yann@402
|
1047 |
@@ -5211,7 +5262,8 @@
|
yann@402
|
1048 |
return;
|
yann@402
|
1049 |
}
|
yann@402
|
1050 |
|
yann@402
|
1051 |
- if ((! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI)
|
yann@402
|
1052 |
+ if ((! TARGET_SH3E && ! TARGET_SH4)
|
yann@402
|
1053 |
+ || TARGET_HITACHI || TARGET_NO_IMPLICIT_FP)
|
yann@402
|
1054 |
{
|
yann@402
|
1055 |
std_expand_builtin_va_start (stdarg_p, valist, nextarg);
|
yann@402
|
1056 |
return;
|
yann@402
|
1057 |
@@ -5289,7 +5341,8 @@
|
yann@402
|
1058 |
rsize = (size + UNITS_PER_WORD - 1) & -UNITS_PER_WORD;
|
yann@402
|
1059 |
pptr_type_node = build_pointer_type (ptr_type_node);
|
yann@402
|
1060 |
|
yann@402
|
1061 |
- if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4) && ! TARGET_HITACHI)
|
yann@402
|
1062 |
+ if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4)
|
yann@402
|
1063 |
+ && ! TARGET_HITACHI && ! TARGET_NO_IMPLICIT_FP)
|
yann@402
|
1064 |
{
|
yann@402
|
1065 |
tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack;
|
yann@402
|
1066 |
tree next_o, next_o_limit, next_fp, next_fp_limit, next_stack;
|
yann@402
|
1067 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh.h gcc-20030210/gcc/config/sh/sh.h
|
yann@402
|
1068 |
--- gcc-20030210.orig/gcc/config/sh/sh.h Fri Feb 22 01:42:28 2002
|
yann@402
|
1069 |
+++ gcc-20030210/gcc/config/sh/sh.h Sat Feb 22 01:40:14 2003
|
yann@402
|
1070 |
@@ -147,10 +147,10 @@
|
yann@402
|
1071 |
#define HARD_SH4_BIT (1<<5)
|
yann@402
|
1072 |
#define FPU_SINGLE_BIT (1<<7)
|
yann@402
|
1073 |
#define SH4_BIT (1<<12)
|
yann@402
|
1074 |
+#define NO_IMPLICIT_FP_BIT (1<<3)
|
yann@402
|
1075 |
#define FMOVD_BIT (1<<4)
|
yann@402
|
1076 |
#define SH5_BIT (1<<0)
|
yann@402
|
1077 |
#define SPACE_BIT (1<<13)
|
yann@402
|
1078 |
-#define BIGTABLE_BIT (1<<14)
|
yann@402
|
1079 |
#define RELAX_BIT (1<<15)
|
yann@402
|
1080 |
#define USERMODE_BIT (1<<16)
|
yann@402
|
1081 |
#define HITACHI_BIT (1<<22)
|
yann@402
|
1082 |
@@ -205,6 +205,9 @@
|
yann@402
|
1083 |
/* Nonzero if we should generate code for a SH5 CPU (either ISA). */
|
yann@402
|
1084 |
#define TARGET_SH5 (target_flags & SH5_BIT)
|
yann@402
|
1085 |
|
yann@402
|
1086 |
+/* Nonzero if we should not use FPU implicitly. */
|
yann@402
|
1087 |
+#define TARGET_NO_IMPLICIT_FP (target_flags & NO_IMPLICIT_FP_BIT)
|
yann@402
|
1088 |
+
|
yann@402
|
1089 |
/* Nonzero if we should generate code using the SHcompact instruction
|
yann@402
|
1090 |
set and 32-bit ABI. */
|
yann@402
|
1091 |
#define TARGET_SHCOMPACT (TARGET_SH5 && TARGET_SH1)
|
yann@402
|
1092 |
@@ -225,6 +228,7 @@
|
yann@402
|
1093 |
|
yann@402
|
1094 |
/* Nonzero if we should generate code using SHmedia FPU instructions. */
|
yann@402
|
1095 |
#define TARGET_SHMEDIA_FPU (TARGET_SHMEDIA && TARGET_FPU_DOUBLE)
|
yann@402
|
1096 |
+
|
yann@402
|
1097 |
/* Nonzero if we should generate fmovd. */
|
yann@402
|
1098 |
#define TARGET_FMOVD (target_flags & FMOVD_BIT)
|
yann@402
|
1099 |
|
yann@402
|
1100 |
@@ -234,9 +238,6 @@
|
yann@402
|
1101 |
/* Nonzero if we should generate smaller code rather than faster code. */
|
yann@402
|
1102 |
#define TARGET_SMALLCODE (target_flags & SPACE_BIT)
|
yann@402
|
1103 |
|
yann@402
|
1104 |
-/* Nonzero to use long jump tables. */
|
yann@402
|
1105 |
-#define TARGET_BIGTABLE (target_flags & BIGTABLE_BIT)
|
yann@402
|
1106 |
-
|
yann@402
|
1107 |
/* Nonzero to generate pseudo-ops needed by the assembler and linker
|
yann@402
|
1108 |
to do function call relaxing. */
|
yann@402
|
1109 |
#define TARGET_RELAX (target_flags & RELAX_BIT)
|
yann@402
|
1110 |
@@ -297,7 +298,6 @@
|
yann@402
|
1111 |
{"5-compact-nofpu", TARGET_NONE, "" }, \
|
yann@402
|
1112 |
{"5-compact-nofpu", SH5_BIT|SH3_BIT|SH2_BIT|SH1_BIT, "Generate FPU-less SHcompact code" }, \
|
yann@402
|
1113 |
{"b", -LITTLE_ENDIAN_BIT, "" }, \
|
yann@402
|
1114 |
- {"bigtable", BIGTABLE_BIT, "" }, \
|
yann@402
|
1115 |
{"dalign", DALIGN_BIT, "" }, \
|
yann@402
|
1116 |
{"fmovd", FMOVD_BIT, "" }, \
|
yann@402
|
1117 |
{"hitachi", HITACHI_BIT, "" }, \
|
yann@402
|
1118 |
@@ -306,6 +306,7 @@
|
yann@402
|
1119 |
{"isize", ISIZE_BIT, "" }, \
|
yann@402
|
1120 |
{"l", LITTLE_ENDIAN_BIT, "" }, \
|
yann@402
|
1121 |
{"no-ieee", -IEEE_BIT, "" }, \
|
yann@402
|
1122 |
+ {"no-implicit-fp", NO_IMPLICIT_FP_BIT, "" }, \
|
yann@402
|
1123 |
{"padstruct", PADSTRUCT_BIT, "" }, \
|
yann@402
|
1124 |
{"prefergot", PREFERGOT_BIT, "" }, \
|
yann@402
|
1125 |
{"relax", RELAX_BIT, "" }, \
|
yann@402
|
1126 |
@@ -2493,16 +2494,22 @@
|
yann@402
|
1127 |
goto LABEL; \
|
yann@402
|
1128 |
}
|
yann@402
|
1129 |
|
yann@402
|
1130 |
+extern int optimize; /* needed for gen_casesi. */
|
yann@402
|
1131 |
+extern int optimize_size;
|
yann@402
|
1132 |
+
|
yann@402
|
1133 |
/* Specify the machine mode that this machine uses
|
yann@402
|
1134 |
for the index in the tablejump instruction. */
|
yann@402
|
1135 |
-#define CASE_VECTOR_MODE (TARGET_BIGTABLE ? SImode : HImode)
|
yann@402
|
1136 |
+#define CASE_VECTOR_MODE SImode
|
yann@402
|
1137 |
|
yann@402
|
1138 |
#define CASE_VECTOR_SHORTEN_MODE(MIN_OFFSET, MAX_OFFSET, BODY) \
|
yann@402
|
1139 |
((MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 127 \
|
yann@402
|
1140 |
? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, QImode) \
|
yann@402
|
1141 |
: (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 255 \
|
yann@402
|
1142 |
? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, QImode) \
|
yann@402
|
1143 |
- : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 ? HImode \
|
yann@402
|
1144 |
+ : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 \
|
yann@402
|
1145 |
+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, HImode) \
|
yann@402
|
1146 |
+ : optimize_size && (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 65535 \
|
yann@402
|
1147 |
+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, HImode) \
|
yann@402
|
1148 |
: SImode)
|
yann@402
|
1149 |
|
yann@402
|
1150 |
/* Define as C expression which evaluates to nonzero if the tablejump
|
yann@402
|
1151 |
@@ -3038,10 +3045,7 @@
|
yann@402
|
1152 |
/* Output an absolute table element. */
|
yann@402
|
1153 |
|
yann@402
|
1154 |
#define ASM_OUTPUT_ADDR_VEC_ELT(STREAM,VALUE) \
|
yann@402
|
1155 |
- if (TARGET_BIGTABLE) \
|
yann@402
|
1156 |
- asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE)); \
|
yann@402
|
1157 |
- else \
|
yann@402
|
1158 |
- asm_fprintf ((STREAM), "\t.word\t%LL%d\n", (VALUE)); \
|
yann@402
|
1159 |
+ asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE))
|
yann@402
|
1160 |
|
yann@402
|
1161 |
/* Output various types of constants. */
|
yann@402
|
1162 |
|
yann@402
|
1163 |
@@ -3167,8 +3171,6 @@
|
yann@402
|
1164 |
#define sh_cpu_attr ((enum attr_cpu)sh_cpu)
|
yann@402
|
1165 |
extern enum processor_type sh_cpu;
|
yann@402
|
1166 |
|
yann@402
|
1167 |
-extern int optimize; /* needed for gen_casesi. */
|
yann@402
|
1168 |
-
|
yann@402
|
1169 |
enum mdep_reorg_phase_e
|
yann@402
|
1170 |
{
|
yann@402
|
1171 |
SH_BEFORE_MDEP_REORG,
|
yann@402
|
1172 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh.md gcc-20030210/gcc/config/sh/sh.md
|
yann@402
|
1173 |
--- gcc-20030210.orig/gcc/config/sh/sh.md Sat Nov 23 04:58:06 2002
|
yann@402
|
1174 |
+++ gcc-20030210/gcc/config/sh/sh.md Sat Feb 22 01:40:14 2003
|
yann@402
|
1175 |
@@ -1242,7 +1242,7 @@
|
yann@402
|
1176 |
(clobber (reg:SI PR_REG))
|
yann@402
|
1177 |
(clobber (reg:SI R4_REG))
|
yann@402
|
1178 |
(use (match_operand:SI 1 "arith_reg_operand" "r"))]
|
yann@402
|
1179 |
- "TARGET_SH1 && ! TARGET_SH4"
|
yann@402
|
1180 |
+ "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP"
|
yann@402
|
1181 |
"jsr @%1%#"
|
yann@402
|
1182 |
[(set_attr "type" "sfunc")
|
yann@402
|
1183 |
(set_attr "needs_delay_slot" "yes")])
|
yann@402
|
1184 |
@@ -1336,7 +1336,7 @@
|
yann@402
|
1185 |
|
yann@402
|
1186 |
operands[3] = gen_reg_rtx (Pmode);
|
yann@402
|
1187 |
/* Emit the move of the address to a pseudo outside of the libcall. */
|
yann@402
|
1188 |
- if (TARGET_HARD_SH4 && TARGET_SH3E)
|
yann@402
|
1189 |
+ if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP)
|
yann@402
|
1190 |
{
|
yann@402
|
1191 |
emit_move_insn (operands[3],
|
yann@402
|
1192 |
gen_rtx_SYMBOL_REF (SImode, \"__udivsi3_i4\"));
|
yann@402
|
1193 |
@@ -1391,7 +1391,7 @@
|
yann@402
|
1194 |
(clobber (reg:SI R2_REG))
|
yann@402
|
1195 |
(clobber (reg:SI R3_REG))
|
yann@402
|
1196 |
(use (match_operand:SI 1 "arith_reg_operand" "r"))]
|
yann@402
|
1197 |
- "TARGET_SH1 && ! TARGET_SH4"
|
yann@402
|
1198 |
+ "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP"
|
yann@402
|
1199 |
"jsr @%1%#"
|
yann@402
|
1200 |
[(set_attr "type" "sfunc")
|
yann@402
|
1201 |
(set_attr "needs_delay_slot" "yes")])
|
yann@402
|
1202 |
@@ -1476,7 +1476,7 @@
|
yann@402
|
1203 |
|
yann@402
|
1204 |
operands[3] = gen_reg_rtx (Pmode);
|
yann@402
|
1205 |
/* Emit the move of the address to a pseudo outside of the libcall. */
|
yann@402
|
1206 |
- if (TARGET_HARD_SH4 && TARGET_SH3E)
|
yann@402
|
1207 |
+ if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP)
|
yann@402
|
1208 |
{
|
yann@402
|
1209 |
emit_move_insn (operands[3],
|
yann@402
|
1210 |
gen_rtx_SYMBOL_REF (SImode, \"__sdivsi3_i4\"));
|
yann@402
|
1211 |
@@ -6446,6 +6446,8 @@
|
yann@402
|
1212 |
case SImode:
|
yann@402
|
1213 |
return \"shll2 %1\;mov.l @(r0,%1),%0\";
|
yann@402
|
1214 |
case HImode:
|
yann@402
|
1215 |
+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
|
yann@402
|
1216 |
+ return \"add %1,%1\;mov.w @(r0,%1),%0\;extu.w %0,%0\";
|
yann@402
|
1217 |
return \"add %1,%1\;mov.w @(r0,%1),%0\";
|
yann@402
|
1218 |
case QImode:
|
yann@402
|
1219 |
if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
|
yann@402
|
1220 |
@@ -6455,7 +6457,15 @@
|
yann@402
|
1221 |
abort ();
|
yann@402
|
1222 |
}
|
yann@402
|
1223 |
}"
|
yann@402
|
1224 |
- [(set_attr "length" "4")])
|
yann@402
|
1225 |
+ [(set (attr "length")
|
yann@402
|
1226 |
+ (cond [(eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 1))
|
yann@402
|
1227 |
+ (const_string "2")
|
yann@402
|
1228 |
+ (eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 2))
|
yann@402
|
1229 |
+ (const_string "4")
|
yann@402
|
1230 |
+ ;; Put "match_dup" here so that insn_variable_length_p return 1.
|
yann@402
|
1231 |
+ (ne (match_dup 2) (match_dup 2))
|
yann@402
|
1232 |
+ (const_string "4")]
|
yann@402
|
1233 |
+ (const_string "6")))])
|
yann@402
|
1234 |
|
yann@402
|
1235 |
(define_insn "casesi_shift_media"
|
yann@402
|
1236 |
[(set (match_operand 0 "arith_reg_operand" "=r")
|
yann@402
|
1237 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh3-linux.h gcc-20030210/gcc/config/sh/sh3-linux.h
|
yann@402
|
1238 |
--- gcc-20030210.orig/gcc/config/sh/sh3-linux.h Thu Jan 1 09:00:00 1970
|
yann@402
|
1239 |
+++ gcc-20030210/gcc/config/sh/sh3-linux.h Sat Feb 22 01:40:14 2003
|
yann@402
|
1240 |
@@ -0,0 +1,29 @@
|
yann@402
|
1241 |
+#undef TARGET_VERSION
|
yann@402
|
1242 |
+#define TARGET_VERSION fputs (" (SH3 GNU/Linux with ELF)", stderr);
|
yann@402
|
1243 |
+
|
yann@402
|
1244 |
+#undef CPP_SPEC
|
yann@402
|
1245 |
+#define CPP_SPEC \
|
yann@402
|
1246 |
+ "-D__LITTLE_ENDIAN__ \
|
yann@402
|
1247 |
+ -D__SH3__ -D__sh3__ \
|
yann@402
|
1248 |
+ -D__SIZE_TYPE__=unsigned\\ int \
|
yann@402
|
1249 |
+ -D__PTRDIFF_TYPE__=int \
|
yann@402
|
1250 |
+ %{fPIC:-D__PIC__ -D__pic__} \
|
yann@402
|
1251 |
+ %{fpic:-D__PIC__ -D__pic__} \
|
yann@402
|
1252 |
+ %{posix:-D_POSIX_SOURCE} \
|
yann@402
|
1253 |
+ %{pthread:-D_REENTRANT -D_PTHREADS}"
|
yann@402
|
1254 |
+
|
yann@402
|
1255 |
+#undef ASM_SPEC
|
yann@402
|
1256 |
+#define ASM_SPEC "%{mrelax:-relax}"
|
yann@402
|
1257 |
+
|
yann@402
|
1258 |
+#undef CC1_SPEC
|
yann@402
|
1259 |
+#define CC1_SPEC \
|
yann@402
|
1260 |
+ "-musermode -ml -m3 %{profile:-p}"
|
yann@402
|
1261 |
+
|
yann@402
|
1262 |
+#undef LINK_SPEC
|
yann@402
|
1263 |
+#define LINK_SPEC \
|
yann@402
|
1264 |
+ "%{mrelax:-relax} \
|
yann@402
|
1265 |
+ %{shared:-shared} \
|
yann@402
|
1266 |
+ %{!static: \
|
yann@402
|
1267 |
+ %{rdynamic:-export-dynamic} \
|
yann@402
|
1268 |
+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
|
yann@402
|
1269 |
+ %{static:-static}"
|
yann@402
|
1270 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h gcc-20030210/gcc/config/sh/sh3eb-linux.h
|
yann@402
|
1271 |
--- gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h Thu Jan 1 09:00:00 1970
|
yann@402
|
1272 |
+++ gcc-20030210/gcc/config/sh/sh3eb-linux.h Sat Feb 22 01:40:14 2003
|
yann@402
|
1273 |
@@ -0,0 +1,29 @@
|
yann@402
|
1274 |
+#undef TARGET_VERSION
|
yann@402
|
1275 |
+#define TARGET_VERSION fputs (" (SH3EB GNU/Linux with ELF)", stderr);
|
yann@402
|
1276 |
+
|
yann@402
|
1277 |
+#undef CPP_SPEC
|
yann@402
|
1278 |
+#define CPP_SPEC \
|
yann@402
|
1279 |
+ "-D__BIG_ENDIAN__ \
|
yann@402
|
1280 |
+ -D__SH3__ -D__sh3__ \
|
yann@402
|
1281 |
+ -D__SIZE_TYPE__=unsigned\\ int \
|
yann@402
|
1282 |
+ -D__PTRDIFF_TYPE__=int \
|
yann@402
|
1283 |
+ %{fPIC:-D__PIC__ -D__pic__} \
|
yann@402
|
1284 |
+ %{fpic:-D__PIC__ -D__pic__} \
|
yann@402
|
1285 |
+ %{posix:-D_POSIX_SOURCE} \
|
yann@402
|
1286 |
+ %{pthread:-D_REENTRANT -D_PTHREADS}"
|
yann@402
|
1287 |
+
|
yann@402
|
1288 |
+#undef ASM_SPEC
|
yann@402
|
1289 |
+#define ASM_SPEC "%{mrelax:-relax}"
|
yann@402
|
1290 |
+
|
yann@402
|
1291 |
+#undef CC1_SPEC
|
yann@402
|
1292 |
+#define CC1_SPEC \
|
yann@402
|
1293 |
+ "-musermode -mb -m3 %{profile:-p}"
|
yann@402
|
1294 |
+
|
yann@402
|
1295 |
+#undef LINK_SPEC
|
yann@402
|
1296 |
+#define LINK_SPEC \
|
yann@402
|
1297 |
+ "%{mrelax:-relax} \
|
yann@402
|
1298 |
+ %{shared:-shared} \
|
yann@402
|
1299 |
+ %{!static: \
|
yann@402
|
1300 |
+ %{rdynamic:-export-dynamic} \
|
yann@402
|
1301 |
+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
|
yann@402
|
1302 |
+ %{static:-static}"
|
yann@402
|
1303 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh4-linux.h gcc-20030210/gcc/config/sh/sh4-linux.h
|
yann@402
|
1304 |
--- gcc-20030210.orig/gcc/config/sh/sh4-linux.h Thu Jan 1 09:00:00 1970
|
yann@402
|
1305 |
+++ gcc-20030210/gcc/config/sh/sh4-linux.h Sat Feb 22 01:40:14 2003
|
yann@402
|
1306 |
@@ -0,0 +1,29 @@
|
yann@402
|
1307 |
+#undef TARGET_VERSION
|
yann@402
|
1308 |
+#define TARGET_VERSION fputs (" (SH4 GNU/Linux with ELF)", stderr);
|
yann@402
|
1309 |
+
|
yann@402
|
1310 |
+#undef CPP_SPEC
|
yann@402
|
1311 |
+#define CPP_SPEC \
|
yann@402
|
1312 |
+ "-D__LITTLE_ENDIAN__ \
|
yann@402
|
1313 |
+ -D__SH4__ \
|
yann@402
|
1314 |
+ -D__SIZE_TYPE__=unsigned\\ int \
|
yann@402
|
1315 |
+ -D__PTRDIFF_TYPE__=int \
|
yann@402
|
1316 |
+ %{fPIC:-D__PIC__ -D__pic__} \
|
yann@402
|
1317 |
+ %{fpic:-D__PIC__ -D__pic__} \
|
yann@402
|
1318 |
+ %{posix:-D_POSIX_SOURCE} \
|
yann@402
|
1319 |
+ %{pthread:-D_REENTRANT -D_PTHREADS}"
|
yann@402
|
1320 |
+
|
yann@402
|
1321 |
+#undef ASM_SPEC
|
yann@402
|
1322 |
+#define ASM_SPEC "%{mrelax:-relax}"
|
yann@402
|
1323 |
+
|
yann@402
|
1324 |
+#undef CC1_SPEC
|
yann@402
|
1325 |
+#define CC1_SPEC \
|
yann@402
|
1326 |
+ "-musermode -ml -m4 %{profile:-p}"
|
yann@402
|
1327 |
+
|
yann@402
|
1328 |
+#undef LINK_SPEC
|
yann@402
|
1329 |
+#define LINK_SPEC \
|
yann@402
|
1330 |
+ "%{mrelax:-relax} \
|
yann@402
|
1331 |
+ %{shared:-shared} \
|
yann@402
|
1332 |
+ %{!static: \
|
yann@402
|
1333 |
+ %{rdynamic:-export-dynamic} \
|
yann@402
|
1334 |
+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
|
yann@402
|
1335 |
+ %{static:-static}"
|
yann@402
|
1336 |
diff -ruN gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h gcc-20030210/gcc/config/sh/sh4eb-linux.h
|
yann@402
|
1337 |
--- gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h Thu Jan 1 09:00:00 1970
|
yann@402
|
1338 |
+++ gcc-20030210/gcc/config/sh/sh4eb-linux.h Sat Feb 22 01:40:14 2003
|
yann@402
|
1339 |
@@ -0,0 +1,29 @@
|
yann@402
|
1340 |
+#undef TARGET_VERSION
|
yann@402
|
1341 |
+#define TARGET_VERSION fputs (" (SH4EB GNU/Linux with ELF)", stderr);
|
yann@402
|
1342 |
+
|
yann@402
|
1343 |
+#undef CPP_SPEC
|
yann@402
|
1344 |
+#define CPP_SPEC \
|
yann@402
|
1345 |
+ "-D__BIG_ENDIAN__ \
|
yann@402
|
1346 |
+ -D__SH4__ \
|
yann@402
|
1347 |
+ -D__SIZE_TYPE__=unsigned\\ int \
|
yann@402
|
1348 |
+ -D__PTRDIFF_TYPE__=int \
|
yann@402
|
1349 |
+ %{fPIC:-D__PIC__ -D__pic__} \
|
yann@402
|
1350 |
+ %{fpic:-D__PIC__ -D__pic__} \
|
yann@402
|
1351 |
+ %{posix:-D_POSIX_SOURCE} \
|
yann@402
|
1352 |
+ %{pthread:-D_REENTRANT -D_PTHREADS}"
|
yann@402
|
1353 |
+
|
yann@402
|
1354 |
+#undef ASM_SPEC
|
yann@402
|
1355 |
+#define ASM_SPEC "%{mrelax:-relax}"
|
yann@402
|
1356 |
+
|
yann@402
|
1357 |
+#undef CC1_SPEC
|
yann@402
|
1358 |
+#define CC1_SPEC \
|
yann@402
|
1359 |
+ "-musermode -mb -m4 %{profile:-p}"
|
yann@402
|
1360 |
+
|
yann@402
|
1361 |
+#undef LINK_SPEC
|
yann@402
|
1362 |
+#define LINK_SPEC \
|
yann@402
|
1363 |
+ "%{mrelax:-relax} \
|
yann@402
|
1364 |
+ %{shared:-shared} \
|
yann@402
|
1365 |
+ %{!static: \
|
yann@402
|
1366 |
+ %{rdynamic:-export-dynamic} \
|
yann@402
|
1367 |
+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
|
yann@402
|
1368 |
+ %{static:-static}"
|
yann@402
|
1369 |
diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux gcc-20030210/gcc/config/sh/t-linux
|
yann@402
|
1370 |
--- gcc-20030210.orig/gcc/config/sh/t-linux Thu May 17 12:16:12 2001
|
yann@402
|
1371 |
+++ gcc-20030210/gcc/config/sh/t-linux Sat Feb 22 01:40:14 2003
|
yann@402
|
1372 |
@@ -1,10 +1,20 @@
|
yann@402
|
1373 |
-TARGET_LIBGCC2_CFLAGS = -fpic
|
yann@402
|
1374 |
+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES
|
yann@402
|
1375 |
+LIBGCC1 = libgcc1-asm.a
|
yann@402
|
1376 |
+CROSS_LIBGCC1 = libgcc1-asm.a
|
yann@402
|
1377 |
+LIBGCC1_TEST = libgcc1-test
|
yann@402
|
1378 |
LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movstr \
|
yann@402
|
1379 |
_movstr_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \
|
yann@402
|
1380 |
_ic_invalidate
|
yann@402
|
1381 |
+LIB2ADDEH = $(srcdir)/unwind-sjlj.c
|
yann@402
|
1382 |
+LIB2ADDEHDEP = unwind.inc unwind-sjlj.c
|
yann@402
|
1383 |
|
yann@402
|
1384 |
-MULTILIB_OPTIONS= mb m3e/m4
|
yann@402
|
1385 |
+MULTILIB_OPTIONS= mb m4
|
yann@402
|
1386 |
MULTILIB_DIRNAMES=
|
yann@402
|
1387 |
MULTILIB_MATCHES =
|
yann@402
|
1388 |
|
yann@402
|
1389 |
-EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o
|
yann@402
|
1390 |
+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
|
yann@402
|
1391 |
+
|
yann@402
|
1392 |
+# Override t-slibgcc-elf-ver to export some libgcc symbols with
|
yann@402
|
1393 |
+# the symbol versions that glibc used and SH specific.
|
yann@402
|
1394 |
+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
|
yann@402
|
1395 |
+ $(srcdir)/config/sh/libgcc-glibc.ver
|
yann@402
|
1396 |
diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux-nomulti gcc-20030210/gcc/config/sh/t-linux-nomulti
|
yann@402
|
1397 |
--- gcc-20030210.orig/gcc/config/sh/t-linux-nomulti Thu Jan 1 09:00:00 1970
|
yann@402
|
1398 |
+++ gcc-20030210/gcc/config/sh/t-linux-nomulti Sat Feb 22 01:40:14 2003
|
yann@402
|
1399 |
@@ -0,0 +1,9 @@
|
yann@402
|
1400 |
+LIBGCC = libgcc.a
|
yann@402
|
1401 |
+EXTRA_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o
|
yann@402
|
1402 |
+
|
yann@402
|
1403 |
+INSTALL_LIBGCC = install-libgcc
|
yann@402
|
1404 |
+
|
yann@402
|
1405 |
+MULTILIB_OPTIONS=
|
yann@402
|
1406 |
+MULTILIB_DIRNAMES=
|
yann@402
|
1407 |
+MULTILIB_MATCHES =
|
yann@402
|
1408 |
+EXTRA_MULTILIB_PARTS=
|
yann@402
|
1409 |
diff -ruN gcc-20030210.orig/gcc/config.gcc gcc-20030210/gcc/config.gcc
|
yann@402
|
1410 |
--- gcc-20030210.orig/gcc/config.gcc Fri Jan 31 19:17:13 2003
|
yann@402
|
1411 |
+++ gcc-20030210/gcc/config.gcc Sat Feb 22 01:40:14 2003
|
yann@402
|
1412 |
@@ -337,9 +337,9 @@
|
yann@402
|
1413 |
sparc*-*-*)
|
yann@402
|
1414 |
cpu_type=sparc
|
yann@402
|
1415 |
;;
|
yann@402
|
1416 |
-sh64-*-*)
|
yann@402
|
1417 |
- cpu_type=sh
|
yann@402
|
1418 |
- ;;
|
yann@402
|
1419 |
+sh*-*-*)
|
yann@402
|
1420 |
+ cpu_type=sh
|
yann@402
|
1421 |
+ ;;
|
yann@402
|
1422 |
esac
|
yann@402
|
1423 |
|
yann@402
|
1424 |
tm_file=${cpu_type}/${cpu_type}.h
|
yann@402
|
1425 |
@@ -3018,9 +3018,31 @@
|
yann@402
|
1426 |
thread_file='rtems'
|
yann@402
|
1427 |
fi
|
yann@402
|
1428 |
;;
|
yann@402
|
1429 |
-sh-*-linux*)
|
yann@402
|
1430 |
+sh*-*-linux*)
|
yann@402
|
1431 |
tm_file="${tm_file} sh/elf.h sh/linux.h"
|
yann@402
|
1432 |
- tmake_file="sh/t-sh sh/t-elf sh/t-linux"
|
yann@402
|
1433 |
+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux sh/t-linux"
|
yann@402
|
1434 |
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
|
yann@402
|
1435 |
+ case $machine in
|
yann@402
|
1436 |
+ sh3eb-*)
|
yann@402
|
1437 |
+ tm_file="${tm_file} sh/sh3eb-linux.h"
|
yann@402
|
1438 |
+ tmake_file="${tmake_file} sh/t-linux-nomulti"
|
yann@402
|
1439 |
+ ;;
|
yann@402
|
1440 |
+ sh4eb-*)
|
yann@402
|
1441 |
+ tm_file="${tm_file} sh/sh4eb-linux.h"
|
yann@402
|
1442 |
+ tmake_file="${tmake_file} sh/t-linux-nomulti"
|
yann@402
|
1443 |
+ ;;
|
yann@402
|
1444 |
+ sh3-*)
|
yann@402
|
1445 |
+ tm_file="${tm_file} sh/sh3-linux.h"
|
yann@402
|
1446 |
+ tmake_file="${tmake_file} sh/t-linux-nomulti"
|
yann@402
|
1447 |
+ ;;
|
yann@402
|
1448 |
+ sh4-*)
|
yann@402
|
1449 |
+ tm_file="${tm_file} sh/sh4-linux.h"
|
yann@402
|
1450 |
+ tmake_file="${tmake_file} sh/t-linux-nomulti"
|
yann@402
|
1451 |
+ ;;
|
yann@402
|
1452 |
+ *)
|
yann@402
|
1453 |
+ ;;
|
yann@402
|
1454 |
+ esac
|
yann@402
|
1455 |
+ xmake_file=x-linux
|
yann@402
|
1456 |
gas=yes gnu_ld=yes
|
yann@402
|
1457 |
float_format=sh
|
yann@402
|
1458 |
;;
|
yann@402
|
1459 |
diff -ruN gcc-20030210.orig/gcc/dwarf2out.c gcc-20030210/gcc/dwarf2out.c
|
yann@402
|
1460 |
--- gcc-20030210.orig/gcc/dwarf2out.c Mon Feb 10 19:36:25 2003
|
yann@402
|
1461 |
+++ gcc-20030210/gcc/dwarf2out.c Sat Feb 22 01:40:14 2003
|
yann@402
|
1462 |
@@ -10224,7 +10224,9 @@
|
yann@402
|
1463 |
/* We can have a normal definition following an inline one in the
|
yann@402
|
1464 |
case of redefinition of GNU C extern inlines.
|
yann@402
|
1465 |
It seems reasonable to use AT_specification in this case. */
|
yann@402
|
1466 |
- && !get_AT_unsigned (old_die, DW_AT_inline))
|
yann@402
|
1467 |
+ && !get_AT_unsigned (old_die, DW_AT_inline)
|
yann@402
|
1468 |
+ /* Skip the nested function. */
|
yann@402
|
1469 |
+ && !decl_function_context (decl))
|
yann@402
|
1470 |
{
|
yann@402
|
1471 |
/* ??? This can happen if there is a bug in the program, for
|
yann@402
|
1472 |
instance, if it has duplicate function definitions. Ideally,
|
yann@402
|
1473 |
diff -ruN gcc-20030210.orig/gcc/final.c gcc-20030210/gcc/final.c
|
yann@402
|
1474 |
--- gcc-20030210.orig/gcc/final.c Fri Jan 31 19:17:20 2003
|
yann@402
|
1475 |
+++ gcc-20030210/gcc/final.c Sat Feb 22 01:40:14 2003
|
yann@402
|
1476 |
@@ -1128,7 +1128,7 @@
|
yann@402
|
1477 |
}
|
yann@402
|
1478 |
}
|
yann@402
|
1479 |
|
yann@402
|
1480 |
- INSN_ADDRESSES (uid) = insn_current_address;
|
yann@402
|
1481 |
+ INSN_ADDRESSES (uid) = insn_current_address + insn_lengths[uid];
|
yann@402
|
1482 |
|
yann@402
|
1483 |
if (GET_CODE (insn) == NOTE || GET_CODE (insn) == BARRIER
|
yann@402
|
1484 |
|| GET_CODE (insn) == CODE_LABEL)
|
yann@402
|
1485 |
diff -ruN gcc-20030210.orig/gcc/mkmap-symver.awk gcc-20030210/gcc/mkmap-symver.awk
|
yann@402
|
1486 |
--- gcc-20030210.orig/gcc/mkmap-symver.awk Fri Jan 31 19:17:26 2003
|
yann@402
|
1487 |
+++ gcc-20030210/gcc/mkmap-symver.awk Sat Feb 22 01:40:14 2003
|
yann@402
|
1488 |
@@ -89,7 +89,11 @@
|
yann@402
|
1489 |
output(inherit[lib]);
|
yann@402
|
1490 |
|
yann@402
|
1491 |
printf("%s {\n", lib);
|
yann@402
|
1492 |
- printf(" global:\n");
|
yann@402
|
1493 |
+ for (sym in ver)
|
yann@402
|
1494 |
+ if ((ver[sym] == lib) && (sym in def))
|
yann@402
|
1495 |
+ count++;
|
yann@402
|
1496 |
+ if (count > 0)
|
yann@402
|
1497 |
+ printf(" global:\n");
|
yann@402
|
1498 |
for (sym in ver)
|
yann@402
|
1499 |
if ((ver[sym] == lib) && (sym in def))
|
yann@402
|
1500 |
{
|
yann@402
|
1501 |
diff -ruN gcc-20030210.orig/gcc/reload1.c gcc-20030210/gcc/reload1.c
|
yann@402
|
1502 |
--- gcc-20030210.orig/gcc/reload1.c Fri Jan 31 19:17:29 2003
|
yann@402
|
1503 |
+++ gcc-20030210/gcc/reload1.c Sat Feb 22 01:40:14 2003
|
yann@402
|
1504 |
@@ -6103,6 +6103,7 @@
|
yann@402
|
1505 |
for (j = 0; j < n_reloads; j++)
|
yann@402
|
1506 |
if (rld[j].in != 0
|
yann@402
|
1507 |
&& rld[j].when_needed != RELOAD_OTHER
|
yann@402
|
1508 |
+ && rld[j].when_needed != RELOAD_FOR_OUTPUT_ADDRESS
|
yann@402
|
1509 |
&& reg_overlap_mentioned_for_reload_p (rld[j].in,
|
yann@402
|
1510 |
rld[i].in))
|
yann@402
|
1511 |
rld[j].when_needed
|
yann@402
|
1512 |
diff -ruN gcc-20030210.orig/gcc/reorg.c gcc-20030210/gcc/reorg.c
|
yann@402
|
1513 |
--- gcc-20030210.orig/gcc/reorg.c Fri Jan 31 19:17:30 2003
|
yann@402
|
1514 |
+++ gcc-20030210/gcc/reorg.c Sat Feb 22 01:40:14 2003
|
yann@402
|
1515 |
@@ -3265,6 +3265,14 @@
|
yann@402
|
1516 |
|| condjump_in_parallel_p (XVECEXP (PATTERN (insn), 0, 0))))
|
yann@402
|
1517 |
continue;
|
yann@402
|
1518 |
|
yann@402
|
1519 |
+#ifdef MD_CAN_REDIRECT_BRANCH
|
yann@402
|
1520 |
+ /* On some targets, branches with delay slots can have a limited
|
yann@402
|
1521 |
+ displacement. Give the back end a chance to tell us we can't do
|
yann@402
|
1522 |
+ this. */
|
yann@402
|
1523 |
+ if (! MD_CAN_REDIRECT_BRANCH (insn, delay_insn))
|
yann@402
|
1524 |
+ continue;
|
yann@402
|
1525 |
+#endif
|
yann@402
|
1526 |
+
|
yann@402
|
1527 |
target_label = JUMP_LABEL (delay_insn);
|
yann@402
|
1528 |
|
yann@402
|
1529 |
if (target_label)
|
yann@402
|
1530 |
diff -ruN gcc-20030210.orig/gcc/tree-inline.c gcc-20030210/gcc/tree-inline.c
|
yann@402
|
1531 |
--- gcc-20030210.orig/gcc/tree-inline.c Fri Jan 31 19:17:33 2003
|
yann@402
|
1532 |
+++ gcc-20030210/gcc/tree-inline.c Sat Feb 22 01:40:14 2003
|
yann@402
|
1533 |
@@ -836,11 +836,17 @@
|
yann@402
|
1534 |
|
yann@402
|
1535 |
/* Don't try to inline functions that are not well-suited to
|
yann@402
|
1536 |
inlining. */
|
yann@402
|
1537 |
- if (!inlinable_function_p (fn, id))
|
yann@402
|
1538 |
- return NULL_TREE;
|
yann@402
|
1539 |
+ if (! inlinable_function_p (fn, id)
|
yann@402
|
1540 |
+ || ! (*lang_hooks.tree_inlining.start_inlining) (fn))
|
yann@402
|
1541 |
+ {
|
yann@402
|
1542 |
+ if (DECL_INLINE (fn) && warn_inline && ! flag_really_no_inline)
|
yann@402
|
1543 |
+ {
|
yann@402
|
1544 |
+ warning_with_decl (fn, "inlining failed in call to `%s'");
|
yann@402
|
1545 |
+ warning ("called from here");
|
yann@402
|
1546 |
+ }
|
yann@402
|
1547 |
|
yann@402
|
1548 |
- if (! (*lang_hooks.tree_inlining.start_inlining) (fn))
|
yann@402
|
1549 |
- return NULL_TREE;
|
yann@402
|
1550 |
+ return NULL_TREE;
|
yann@402
|
1551 |
+ }
|
yann@402
|
1552 |
|
yann@402
|
1553 |
/* Set the current filename and line number to the function we are
|
yann@402
|
1554 |
inlining so that when we create new _STMT nodes here they get
|
yann@402
|
1555 |
diff -ruN gcc-20030210.orig/libjava/Makefile.in gcc-20030210/libjava/Makefile.in
|
yann@402
|
1556 |
--- gcc-20030210.orig/libjava/Makefile.in Tue Jan 28 10:44:37 2003
|
yann@402
|
1557 |
+++ gcc-20030210/libjava/Makefile.in Sat Feb 22 01:40:14 2003
|
yann@402
|
1558 |
@@ -1637,6 +1637,7 @@
|
yann@402
|
1559 |
"AS=$(AS)" \
|
yann@402
|
1560 |
"CC=$(CC)" \
|
yann@402
|
1561 |
"CXX=$(CXX)" \
|
yann@402
|
1562 |
+ "GCJ=$(GCJ)" \
|
yann@402
|
1563 |
"LD=$(LD)" \
|
yann@402
|
1564 |
"LIBCFLAGS=$(LIBCFLAGS)" \
|
yann@402
|
1565 |
"NM=$(NM)" \
|
yann@402
|
1566 |
diff -ruN gcc-20030210.orig/libjava/configure gcc-20030210/libjava/configure
|
yann@402
|
1567 |
--- gcc-20030210.orig/libjava/configure Tue Jan 28 10:44:37 2003
|
yann@402
|
1568 |
+++ gcc-20030210/libjava/configure Sat Feb 22 01:42:11 2003
|
yann@402
|
1569 |
@@ -2031,7 +2031,7 @@
|
yann@402
|
1570 |
# This must be Linux ELF.
|
yann@402
|
1571 |
linux-gnu*)
|
yann@402
|
1572 |
case $host_cpu in
|
yann@402
|
1573 |
- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
|
yann@402
|
1574 |
+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
|
yann@402
|
1575 |
lt_cv_deplibs_check_method=pass_all ;;
|
yann@402
|
1576 |
*)
|
yann@402
|
1577 |
# glibc up to 2.1.1 does not perform some relocations on ARM
|
yann@402
|
1578 |
diff -ruN gcc-20030210.orig/libjava/java/net/natInetAddress.cc gcc-20030210/libjava/java/net/natInetAddress.cc
|
yann@402
|
1579 |
--- gcc-20030210.orig/libjava/java/net/natInetAddress.cc Tue Mar 5 05:02:19 2002
|
yann@402
|
1580 |
+++ gcc-20030210/libjava/java/net/natInetAddress.cc Sat Feb 22 01:40:14 2003
|
yann@402
|
1581 |
@@ -56,7 +56,7 @@
|
yann@402
|
1582 |
#endif
|
yann@402
|
1583 |
|
yann@402
|
1584 |
#ifndef HAVE_GETHOSTNAME_DECL
|
yann@402
|
1585 |
-extern "C" int gethostname (char *name, int namelen);
|
yann@402
|
1586 |
+extern "C" int gethostname (char *name, unsigned int namelen);
|
yann@402
|
1587 |
#endif
|
yann@402
|
1588 |
|
yann@402
|
1589 |
#ifdef DISABLE_JAVA_NET
|
yann@402
|
1590 |
diff -ruN gcc-20030210.orig/libjava/libltdl/aclocal.m4 gcc-20030210/libjava/libltdl/aclocal.m4
|
yann@402
|
1591 |
--- gcc-20030210.orig/libjava/libltdl/aclocal.m4 Sun Sep 10 17:04:40 2000
|
yann@402
|
1592 |
+++ gcc-20030210/libjava/libltdl/aclocal.m4 Sat Feb 22 01:40:14 2003
|
yann@402
|
1593 |
@@ -573,7 +573,7 @@
|
yann@402
|
1594 |
# This must be Linux ELF.
|
yann@402
|
1595 |
linux-gnu*)
|
yann@402
|
1596 |
case "$host_cpu" in
|
yann@402
|
1597 |
- alpha* | i*86 | powerpc* | sparc* | ia64* )
|
yann@402
|
1598 |
+ alpha* | i*86 | powerpc* | sparc* | ia64* | sh*)
|
yann@402
|
1599 |
lt_cv_deplibs_check_method=pass_all ;;
|
yann@402
|
1600 |
*)
|
yann@402
|
1601 |
# glibc up to 2.1.1 does not perform some relocations on ARM
|
yann@402
|
1602 |
diff -ruN gcc-20030210.orig/libjava/sysdep/sh/locks.h gcc-20030210/libjava/sysdep/sh/locks.h
|
yann@402
|
1603 |
--- gcc-20030210.orig/libjava/sysdep/sh/locks.h Thu Jan 1 09:00:00 1970
|
yann@402
|
1604 |
+++ gcc-20030210/libjava/sysdep/sh/locks.h Sat Feb 22 01:40:14 2003
|
yann@402
|
1605 |
@@ -0,0 +1,72 @@
|
yann@402
|
1606 |
+// locks.h - Thread synchronization primitives. SuperH implementation.
|
yann@402
|
1607 |
+
|
yann@402
|
1608 |
+/* Copyright (C) 2002 Free Software Foundation
|
yann@402
|
1609 |
+
|
yann@402
|
1610 |
+ This file is part of libgcj.
|
yann@402
|
1611 |
+
|
yann@402
|
1612 |
+This software is copyrighted work licensed under the terms of the
|
yann@402
|
1613 |
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
yann@402
|
1614 |
+details. */
|
yann@402
|
1615 |
+
|
yann@402
|
1616 |
+#ifndef __SYSDEP_LOCKS_H__
|
yann@402
|
1617 |
+#define __SYSDEP_LOCKS_H__
|
yann@402
|
1618 |
+
|
yann@402
|
1619 |
+typedef size_t obj_addr_t; /* Integer type big enough for object */
|
yann@402
|
1620 |
+ /* address. */
|
yann@402
|
1621 |
+
|
yann@402
|
1622 |
+static unsigned char __cas_lock = 0;
|
yann@402
|
1623 |
+
|
yann@402
|
1624 |
+inline static void
|
yann@402
|
1625 |
+__cas_start_atomic (void)
|
yann@402
|
1626 |
+{
|
yann@402
|
1627 |
+ unsigned int val;
|
yann@402
|
1628 |
+
|
yann@402
|
1629 |
+ do
|
yann@402
|
1630 |
+ __asm__ __volatile__ ("tas.b @%1; movt %0"
|
yann@402
|
1631 |
+ : "=r" (val)
|
yann@402
|
1632 |
+ : "r" (&__cas_lock)
|
yann@402
|
1633 |
+ : "memory");
|
yann@402
|
1634 |
+ while (val == 0);
|
yann@402
|
1635 |
+}
|
yann@402
|
1636 |
+
|
yann@402
|
1637 |
+inline static void
|
yann@402
|
1638 |
+__cas_end_atomic (void)
|
yann@402
|
1639 |
+{
|
yann@402
|
1640 |
+ __asm__ __volatile__ (" " : : : "memory");
|
yann@402
|
1641 |
+ __cas_lock = 0;
|
yann@402
|
1642 |
+}
|
yann@402
|
1643 |
+
|
yann@402
|
1644 |
+inline static bool
|
yann@402
|
1645 |
+compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,
|
yann@402
|
1646 |
+ obj_addr_t new_val)
|
yann@402
|
1647 |
+{
|
yann@402
|
1648 |
+ bool ret;
|
yann@402
|
1649 |
+
|
yann@402
|
1650 |
+ __cas_start_atomic ();
|
yann@402
|
1651 |
+ if (*addr != old)
|
yann@402
|
1652 |
+ ret = false;
|
yann@402
|
1653 |
+ else
|
yann@402
|
1654 |
+ {
|
yann@402
|
1655 |
+ *addr = new_val;
|
yann@402
|
1656 |
+ ret = true;
|
yann@402
|
1657 |
+ }
|
yann@402
|
1658 |
+ __cas_end_atomic ();
|
yann@402
|
1659 |
+
|
yann@402
|
1660 |
+ return ret;
|
yann@402
|
1661 |
+}
|
yann@402
|
1662 |
+
|
yann@402
|
1663 |
+inline static void
|
yann@402
|
1664 |
+release_set (volatile obj_addr_t *addr, obj_addr_t new_val)
|
yann@402
|
1665 |
+{
|
yann@402
|
1666 |
+ __asm__ __volatile__ (" " : : : "memory");
|
yann@402
|
1667 |
+ *(addr) = new_val;
|
yann@402
|
1668 |
+}
|
yann@402
|
1669 |
+
|
yann@402
|
1670 |
+inline static bool
|
yann@402
|
1671 |
+compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,
|
yann@402
|
1672 |
+ obj_addr_t new_val)
|
yann@402
|
1673 |
+{
|
yann@402
|
1674 |
+ return compare_and_swap (addr, old, new_val);
|
yann@402
|
1675 |
+}
|
yann@402
|
1676 |
+
|
yann@402
|
1677 |
+#endif /* ! __SYSDEP_LOCKS_H__ */
|
yann@402
|
1678 |
diff -ruN gcc-20030210.orig/libstdc++-v3/acinclude.m4 gcc-20030210/libstdc++-v3/acinclude.m4
|
yann@402
|
1679 |
--- gcc-20030210.orig/libstdc++-v3/acinclude.m4 Tue Jan 28 02:30:41 2003
|
yann@402
|
1680 |
+++ gcc-20030210/libstdc++-v3/acinclude.m4 Sat Feb 22 01:40:14 2003
|
yann@402
|
1681 |
@@ -1828,9 +1828,10 @@
|
yann@402
|
1682 |
GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
|
yann@402
|
1683 |
|
yann@402
|
1684 |
# Passed down for canadian crosses.
|
yann@402
|
1685 |
- if test x"$CANADIAN" = xyes; then
|
yann@402
|
1686 |
- TOPLEVEL_INCLUDES='-I$(includedir)'
|
yann@402
|
1687 |
- fi
|
yann@402
|
1688 |
+ #if test x"$CANADIAN" = xyes; then
|
yann@402
|
1689 |
+ # TOPLEVEL_INCLUDES='-I$(includedir)'
|
yann@402
|
1690 |
+ #fi
|
yann@402
|
1691 |
+ TOPLEVEL_INCLUDES=''
|
yann@402
|
1692 |
|
yann@402
|
1693 |
LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
|
yann@402
|
1694 |
|
yann@402
|
1695 |
diff -ruN gcc-20030210.orig/libstdc++-v3/aclocal.m4 gcc-20030210/libstdc++-v3/aclocal.m4
|
yann@402
|
1696 |
--- gcc-20030210.orig/libstdc++-v3/aclocal.m4 Mon Feb 10 19:36:47 2003
|
yann@402
|
1697 |
+++ gcc-20030210/libstdc++-v3/aclocal.m4 Sat Feb 22 01:40:14 2003
|
yann@402
|
1698 |
@@ -1840,9 +1840,10 @@
|
yann@402
|
1699 |
GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
|
yann@402
|
1700 |
|
yann@402
|
1701 |
# Passed down for canadian crosses.
|
yann@402
|
1702 |
- if test x"$CANADIAN" = xyes; then
|
yann@402
|
1703 |
- TOPLEVEL_INCLUDES='-I$(includedir)'
|
yann@402
|
1704 |
- fi
|
yann@402
|
1705 |
+ #if test x"$CANADIAN" = xyes; then
|
yann@402
|
1706 |
+ # TOPLEVEL_INCLUDES='-I$(includedir)'
|
yann@402
|
1707 |
+ #fi
|
yann@402
|
1708 |
+ TOPLEVEL_INCLUDES=''
|
yann@402
|
1709 |
|
yann@402
|
1710 |
LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
|
yann@402
|
1711 |
|
yann@402
|
1712 |
diff -ruN gcc-20030210.orig/libstdc++-v3/configure gcc-20030210/libstdc++-v3/configure
|
yann@402
|
1713 |
--- gcc-20030210.orig/libstdc++-v3/configure Mon Feb 10 19:37:17 2003
|
yann@402
|
1714 |
+++ gcc-20030210/libstdc++-v3/configure Sat Feb 22 01:40:14 2003
|
yann@402
|
1715 |
@@ -1982,7 +1982,7 @@
|
yann@402
|
1716 |
# This must be Linux ELF.
|
yann@402
|
1717 |
linux-gnu*)
|
yann@402
|
1718 |
case $host_cpu in
|
yann@402
|
1719 |
- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
|
yann@402
|
1720 |
+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh*)
|
yann@402
|
1721 |
lt_cv_deplibs_check_method=pass_all ;;
|
yann@402
|
1722 |
*)
|
yann@402
|
1723 |
# glibc up to 2.1.1 does not perform some relocations on ARM
|
yann@402
|
1724 |
@@ -22340,9 +22340,10 @@
|
yann@402
|
1725 |
GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
|
yann@402
|
1726 |
|
yann@402
|
1727 |
# Passed down for canadian crosses.
|
yann@402
|
1728 |
- if test x"$CANADIAN" = xyes; then
|
yann@402
|
1729 |
- TOPLEVEL_INCLUDES='-I$(includedir)'
|
yann@402
|
1730 |
- fi
|
yann@402
|
1731 |
+ #if test x"$CANADIAN" = xyes; then
|
yann@402
|
1732 |
+ # TOPLEVEL_INCLUDES='-I$(includedir)'
|
yann@402
|
1733 |
+ #fi
|
yann@402
|
1734 |
+ TOPLEVEL_INCLUDES=''
|
yann@402
|
1735 |
|
yann@402
|
1736 |
LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
|
yann@402
|
1737 |
|
yann@402
|
1738 |
diff -ruN gcc-20030210.orig/libtool.m4 gcc-20030210/libtool.m4
|
yann@402
|
1739 |
--- gcc-20030210.orig/libtool.m4 Fri Jan 31 19:16:59 2003
|
yann@402
|
1740 |
+++ gcc-20030210/libtool.m4 Sat Feb 22 01:40:14 2003
|
yann@402
|
1741 |
@@ -597,7 +597,7 @@
|
yann@402
|
1742 |
# This must be Linux ELF.
|
yann@402
|
1743 |
linux-gnu*)
|
yann@402
|
1744 |
case $host_cpu in
|
yann@402
|
1745 |
- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
|
yann@402
|
1746 |
+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
|
yann@402
|
1747 |
lt_cv_deplibs_check_method=pass_all ;;
|
yann@402
|
1748 |
*)
|
yann@402
|
1749 |
# glibc up to 2.1.1 does not perform some relocations on ARM
|
yann@402
|
1750 |
diff -ruN gcc-20030210.orig/zlib/configure gcc-20030210/zlib/configure
|
yann@402
|
1751 |
--- gcc-20030210.orig/zlib/configure Tue Jan 28 10:44:15 2003
|
yann@402
|
1752 |
+++ gcc-20030210/zlib/configure Sat Feb 22 01:40:14 2003
|
yann@402
|
1753 |
@@ -1571,7 +1571,7 @@
|
yann@402
|
1754 |
# This must be Linux ELF.
|
yann@402
|
1755 |
linux-gnu*)
|
yann@402
|
1756 |
case $host_cpu in
|
yann@402
|
1757 |
- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
|
yann@402
|
1758 |
+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
|
yann@402
|
1759 |
lt_cv_deplibs_check_method=pass_all ;;
|
yann@402
|
1760 |
*)
|
yann@402
|
1761 |
# glibc up to 2.1.1 does not perform some relocations on ARM
|