URL
https://opencores.org/ocsvn/zipcpu/zipcpu/trunk
Subversion Repositories zipcpu
Compare Revisions
- This comparison shows the changes necessary to convert path
/zipcpu/trunk/sw
- from Rev 166 to Rev 171
- ↔ Reverse comparison
Rev 166 → Rev 171
/gcc-script.sh
47,6 → 47,8
--disable-decimal-float --disable-fixed-point \ |
--disable-lto --disable-canonical-system-headers |
|
echo $PATH | grep ${INSTALL_BASE}/cross-tools/bin \ |
|| PATH=$PATH:${INSTALL_BASE}/cross-tools/bin |
make || true |
cd gcc; make || true |
cd ../; make all-libcc1 || true |
/gcc-zippatch.patch
138,7 → 138,7
+ |
+struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/aarch64/aarch64-linux.h gcc-5.3.0-zip/gcc/config/aarch64/aarch64-linux.h |
--- gcc-5.3.0-original/gcc/config/aarch64/aarch64-linux.h 2016-05-12 21:52:06.137764804 -0400 |
--- gcc-5.3.0-original/gcc/config/aarch64/aarch64-linux.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/aarch64/aarch64-linux.h 2015-07-24 12:00:26.000000000 -0400 |
@@ -21,7 +21,7 @@ |
#ifndef GCC_AARCH64_LINUX_H |
150,7 → 150,7
#undef ASAN_CC1_SPEC |
#define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/alpha/linux-elf.h gcc-5.3.0-zip/gcc/config/alpha/linux-elf.h |
--- gcc-5.3.0-original/gcc/config/alpha/linux-elf.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/alpha/linux-elf.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/alpha/linux-elf.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -23,8 +23,8 @@ |
#define EXTRA_SPECS \ |
164,7 → 164,7
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" |
#elif DEFAULT_LIBC == LIBC_GLIBC |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/arm/linux-eabi.h gcc-5.3.0-zip/gcc/config/arm/linux-eabi.h |
--- gcc-5.3.0-original/gcc/config/arm/linux-eabi.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/arm/linux-eabi.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/arm/linux-eabi.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -68,8 +68,8 @@ |
GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI. */ |
178,7 → 178,7
|
#define GLIBC_DYNAMIC_LINKER \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/arm/linux-elf.h gcc-5.3.0-zip/gcc/config/arm/linux-elf.h |
--- gcc-5.3.0-original/gcc/config/arm/linux-elf.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/arm/linux-elf.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/arm/linux-elf.h 2015-06-23 05:26:54.000000000 -0400 |
@@ -62,7 +62,7 @@ |
|
190,7 → 190,7
#define LINUX_TARGET_LINK_SPEC "%{h*} \ |
%{static:-Bstatic} \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/bfin/linux.h gcc-5.3.0-zip/gcc/config/bfin/linux.h |
--- gcc-5.3.0-original/gcc/config/bfin/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/bfin/linux.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/bfin/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -45,7 +45,7 @@ |
%{shared:-G -Bdynamic} \ |
202,7 → 202,7
|
#undef TARGET_SUPPORTS_SYNC_CALLS |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/cris/linux.h gcc-5.3.0-zip/gcc/config/cris/linux.h |
--- gcc-5.3.0-original/gcc/config/cris/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/cris/linux.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/cris/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -102,7 +102,7 @@ |
#undef CRIS_DEFAULT_CPU_VERSION |
214,7 → 214,7
#undef CRIS_LINK_SUBTARGET_SPEC |
#define CRIS_LINK_SUBTARGET_SPEC \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/freebsd-spec.h gcc-5.3.0-zip/gcc/config/freebsd-spec.h |
--- gcc-5.3.0-original/gcc/config/freebsd-spec.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/freebsd-spec.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/freebsd-spec.h 2015-06-25 13:53:14.000000000 -0400 |
@@ -129,9 +129,9 @@ |
#endif |
229,7 → 229,7
|
/* NOTE: The freebsd-spec.h header is included also for various |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/frv/linux.h gcc-5.3.0-zip/gcc/config/frv/linux.h |
--- gcc-5.3.0-original/gcc/config/frv/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/frv/linux.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/frv/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -34,7 +34,7 @@ |
#define ENDFILE_SPEC \ |
241,7 → 241,7
#undef LINK_SPEC |
#define LINK_SPEC "\ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/gnu.h gcc-5.3.0-zip/gcc/config/i386/gnu.h |
--- gcc-5.3.0-original/gcc/config/i386/gnu.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/i386/gnu.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/i386/gnu.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -22,7 +22,7 @@ |
#define GNU_USER_LINK_EMULATION "elf_i386" |
253,7 → 253,7
#undef STARTFILE_SPEC |
#if defined HAVE_LD_PIE |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu64.h gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu64.h |
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu64.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu64.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu64.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -22,6 +22,6 @@ |
#define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd" |
266,7 → 266,7
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" |
+#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-kfreebsd-x32.so.1" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu.h gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu.h |
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu.h 2016-09-13 10:23:45.886099269 -0400 |
+++ gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -19,4 +19,4 @@ |
<http://www.gnu.org/licenses/>. */ |
275,7 → 275,7
-#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1" |
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/linux64.h gcc-5.3.0-zip/gcc/config/i386/linux64.h |
--- gcc-5.3.0-original/gcc/config/i386/linux64.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/i386/linux64.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/i386/linux64.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -27,6 +27,6 @@ |
#define GNU_USER_LINK_EMULATION64 "elf_x86_64" |
288,7 → 288,7
+#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" |
+#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/linux.h gcc-5.3.0-zip/gcc/config/i386/linux.h |
--- gcc-5.3.0-original/gcc/config/i386/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/i386/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/i386/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -20,4 +20,4 @@ |
<http://www.gnu.org/licenses/>. */ |
297,7 → 297,7
-#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" |
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/ia64/linux.h gcc-5.3.0-zip/gcc/config/ia64/linux.h |
--- gcc-5.3.0-original/gcc/config/ia64/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/ia64/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/ia64/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -55,7 +55,7 @@ |
/* Define this for shared library support because it isn't in the main |
309,7 → 309,7
#undef LINK_SPEC |
#define LINK_SPEC "\ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/knetbsd-gnu.h gcc-5.3.0-zip/gcc/config/knetbsd-gnu.h |
--- gcc-5.3.0-original/gcc/config/knetbsd-gnu.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/knetbsd-gnu.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/knetbsd-gnu.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -32,4 +32,4 @@ |
|
318,7 → 318,7
-#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1" |
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/kopensolaris-gnu.h gcc-5.3.0-zip/gcc/config/kopensolaris-gnu.h |
--- gcc-5.3.0-original/gcc/config/kopensolaris-gnu.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/kopensolaris-gnu.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/kopensolaris-gnu.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -31,5 +31,4 @@ |
while (0) |
328,7 → 328,7
- |
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/linux.h gcc-5.3.0-zip/gcc/config/linux.h |
--- gcc-5.3.0-original/gcc/config/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -73,10 +73,10 @@ |
GLIBC_DYNAMIC_LINKER must be defined for each target using them, or |
346,7 → 346,7
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker" |
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/lm32/uclinux-elf.h gcc-5.3.0-zip/gcc/config/lm32/uclinux-elf.h |
--- gcc-5.3.0-original/gcc/config/lm32/uclinux-elf.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/lm32/uclinux-elf.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/lm32/uclinux-elf.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -67,7 +67,7 @@ |
%{shared:-shared} \ |
358,7 → 358,7
#define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS() |
|
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/m68k/linux.h gcc-5.3.0-zip/gcc/config/m68k/linux.h |
--- gcc-5.3.0-original/gcc/config/m68k/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/m68k/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/m68k/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -71,7 +71,7 @@ |
When the -shared link option is used a final link is not being |
370,7 → 370,7
#undef LINK_SPEC |
#define LINK_SPEC "-m m68kelf %{shared} \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/microblaze/linux.h gcc-5.3.0-zip/gcc/config/microblaze/linux.h |
--- gcc-5.3.0-original/gcc/config/microblaze/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/microblaze/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/microblaze/linux.h 2015-05-28 10:08:19.000000000 -0400 |
@@ -28,7 +28,7 @@ |
#undef TLS_NEEDS_GOT |
382,7 → 382,7
#define SUBTARGET_EXTRA_SPECS \ |
{ "dynamic_linker", DYNAMIC_LINKER } |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/mips/linux.h gcc-5.3.0-zip/gcc/config/mips/linux.h |
--- gcc-5.3.0-original/gcc/config/mips/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/mips/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/mips/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -22,20 +22,20 @@ |
#define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32" |
412,7 → 412,7
#define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" |
#define GNU_USER_DYNAMIC_LINKERN32 \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/mn10300/linux.h gcc-5.3.0-zip/gcc/config/mn10300/linux.h |
--- gcc-5.3.0-original/gcc/config/mn10300/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/mn10300/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/mn10300/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -32,7 +32,7 @@ |
#undef ASM_SPEC |
424,7 → 424,7
#undef LINK_SPEC |
#define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/pa/pa-linux.h gcc-5.3.0-zip/gcc/config/pa/pa-linux.h |
--- gcc-5.3.0-original/gcc/config/pa/pa-linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/pa/pa-linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/pa/pa-linux.h 2015-09-24 20:04:26.000000000 -0400 |
@@ -37,7 +37,7 @@ |
/* Define this for shared library support because it isn't in the main |
436,7 → 436,7
#undef LINK_SPEC |
#define LINK_SPEC "\ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/rs6000/linux64.h gcc-5.3.0-zip/gcc/config/rs6000/linux64.h |
--- gcc-5.3.0-original/gcc/config/rs6000/linux64.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/rs6000/linux64.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/rs6000/linux64.h 2015-03-09 19:18:57.000000000 -0400 |
@@ -357,14 +357,14 @@ |
#undef LINK_OS_DEFAULT_SPEC |
459,7 → 459,7
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" |
#elif DEFAULT_LIBC == LIBC_GLIBC |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/rs6000/sysv4.h gcc-5.3.0-zip/gcc/config/rs6000/sysv4.h |
--- gcc-5.3.0-original/gcc/config/rs6000/sysv4.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/rs6000/sysv4.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/rs6000/sysv4.h 2015-09-24 09:46:45.000000000 -0400 |
@@ -757,8 +757,8 @@ |
|
473,7 → 473,7
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" |
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/s390/linux.h gcc-5.3.0-zip/gcc/config/s390/linux.h |
--- gcc-5.3.0-original/gcc/config/s390/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/s390/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/s390/linux.h 2015-05-11 03:14:10.000000000 -0400 |
@@ -60,8 +60,8 @@ |
#define MULTILIB_DEFAULTS { "m31" } |
487,7 → 487,7
#undef LINK_SPEC |
#define LINK_SPEC \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sh/linux.h gcc-5.3.0-zip/gcc/config/sh/linux.h |
--- gcc-5.3.0-original/gcc/config/sh/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/sh/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/sh/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -43,7 +43,7 @@ |
|
499,7 → 499,7
#undef SUBTARGET_LINK_EMUL_SUFFIX |
#define SUBTARGET_LINK_EMUL_SUFFIX "_linux" |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sparc/linux64.h gcc-5.3.0-zip/gcc/config/sparc/linux64.h |
--- gcc-5.3.0-original/gcc/config/sparc/linux64.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/sparc/linux64.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/sparc/linux64.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -84,8 +84,8 @@ |
When the -shared link option is used a final link is not being |
522,7 → 522,7
%{!static: \ |
%{rdynamic:-export-dynamic} \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sparc/linux.h gcc-5.3.0-zip/gcc/config/sparc/linux.h |
--- gcc-5.3.0-original/gcc/config/sparc/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/sparc/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/sparc/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -83,7 +83,7 @@ |
When the -shared link option is used a final link is not being |
534,7 → 534,7
#undef LINK_SPEC |
#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/vax/linux.h gcc-5.3.0-zip/gcc/config/vax/linux.h |
--- gcc-5.3.0-original/gcc/config/vax/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/vax/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/vax/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -41,7 +41,7 @@ |
%{!shared: \ |
546,7 → 546,7
|
#undef WCHAR_TYPE |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/xtensa/linux.h gcc-5.3.0-zip/gcc/config/xtensa/linux.h |
--- gcc-5.3.0-original/gcc/config/xtensa/linux.h 2016-05-12 21:52:06.141764778 -0400 |
--- gcc-5.3.0-original/gcc/config/xtensa/linux.h 2016-09-13 10:23:45.890099248 -0400 |
+++ gcc-5.3.0-zip/gcc/config/xtensa/linux.h 2015-01-05 07:33:28.000000000 -0500 |
@@ -44,7 +44,7 @@ |
%{mlongcalls:--longcalls} \ |
643,6 → 643,16
+#undef MD_STARTFILE_PREFIX |
+ |
+#endif /* ZIP_NETBSD_H */ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/notes.txt gcc-5.3.0-zip/gcc/config/zip/notes.txt |
--- gcc-5.3.0-original/gcc/config/zip/notes.txt 1969-12-31 19:00:00.000000000 -0500 |
+++ gcc-5.3.0-zip/gcc/config/zip/notes.txt 2016-08-17 23:00:25.714139174 -0400 |
@@ -0,0 +1,6 @@ |
+signum: |
+ CMP 0,%1 |
+ LDILO.GT 1,%1 |
+ LDILO.LT -1,%1 |
+ |
+ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/t-zip gcc-5.3.0-zip/gcc/config/zip/t-zip |
--- gcc-5.3.0-original/gcc/config/zip/t-zip 1969-12-31 19:00:00.000000000 -0500 |
+++ gcc-5.3.0-zip/gcc/config/zip/t-zip 2016-02-04 19:00:59.939652587 -0500 |
696,8 → 706,8
+ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.c gcc-5.3.0-zip/gcc/config/zip/zip.c |
--- gcc-5.3.0-original/gcc/config/zip/zip.c 1969-12-31 19:00:00.000000000 -0500 |
+++ gcc-5.3.0-zip/gcc/config/zip/zip.c 2016-05-09 11:40:35.637861735 -0400 |
@@ -0,0 +1,2286 @@ |
+++ gcc-5.3.0-zip/gcc/config/zip/zip.c 2016-09-13 10:06:40.979536485 -0400 |
@@ -0,0 +1,2151 @@ |
+//////////////////////////////////////////////////////////////////////////////// |
+// |
+// Filename: zip.c |
843,6 → 853,7
+ ZIP_BUILTIN_BITREV, |
+ ZIP_BUILTIN_CC, |
+ ZIP_BUILTIN_UCC, |
+ ZIP_BUILTIN_BUSY, |
+ ZIP_BUILTIN_MAX |
+}; |
+ |
934,6 → 945,7
+ switch(GET_CODE(x)) { |
+ case REG: |
+ gcc_assert(is_ZIP_REG(REGNO(x))); |
+ gcc_assert(REGNO(x) < 16); |
+ fprintf(file, "(%s)", reg_names[REGNO(x)]); |
+ break; |
+ case SYMBOL_REF: |
957,6 → 969,7
+ zip_debug_rtx(x); |
+ abort(); |
+ } gcc_assert(is_ZIP_REG(REGNO(XEXP(x,0)))); |
+ gcc_assert(REGNO(XEXP(x,0))<16); |
+ if (CONST_INT_P(XEXP(x, 1))) { |
+ if (INTVAL(XEXP(x,1))!=0) { |
+ fprintf(file, "%ld(%s)", |
1130,6 → 1143,7
+ * Saved frame pointer (if used) |
+ * Saved R12, if used |
+ * (Stack pointer is not saved) |
+ * (PRETEND-ARGS) |
+ * Original stack pointer -> (= Stack_Pointer +size_for_adjusting_sp) |
+ * Called arguments (not passed in registers) |
+ * Return arguments (not R1, args.pretend_args_size) |
1142,7 → 1156,7
+ int args_size; |
+ const bool dbg = ((ALL_DEBUG_ON)||(false))&&(!ALL_DEBUG_OFF); |
+ |
+ if (dbg) fprintf(stderr, "ZIP-COMPUTE-FRAME\n"); |
+ if (dbg) fprintf(stderr, "ZIP-COMPUTE-FRAME: %s\n", current_function_name()); |
+ // gcc_assert(crtl); |
+ gcc_assert(cfun); |
+ gcc_assert(cfun->machine); |
1151,8 → 1165,8
+ |
+ if(crtl->args.pretend_args_size > 0) { |
+ args_size += crtl->args.pretend_args_size; |
+ // printf("%s pretend_args_size : %d\n", current_function_name(), |
+ // crtl->args.pretend_args_size); |
+ if (dbg) fprintf(stderr, "%s pretend_args_size : %d\n", current_function_name(), |
+ crtl->args.pretend_args_size); |
+ cfun->machine->pretend_size = crtl->args.pretend_args_size; |
+ } |
+ |
1172,19 → 1186,26
+ cfun->machine->saved_reg_size ++; |
+ } |
+ |
+ cfun->machine->sp_fp_offset = args_size + cfun->machine->local_vars_size; |
+ cfun->machine->sp_fp_offset = crtl->outgoing_args_size |
+ + cfun->machine->local_vars_size; |
+ cfun->machine->size_for_adjusting_sp = cfun->machine->local_vars_size |
+ + cfun->machine->saved_reg_size |
+ + args_size; |
+ if(dbg) { |
+ fprintf(stderr, "\tFRAME-POINTR: %s\n", |
+ cfun->machine->fp_needed?"Yes":"No"); |
+ fprintf(stderr, "\tARGS-SIZE : %d\n", |
+ args_size); |
+ fprintf(stderr, "\t---- STACK PTR ----\n"); |
+ fprintf(stderr, "\tOUTGOIN-SIZE: %d\n", |
+ crtl->outgoing_args_size); |
+ fprintf(stderr, "\tLOCALS-SIZE : %d\n", |
+ cfun->machine->local_vars_size); |
+ fprintf(stderr, "\t---- FRAME PTR ----%s\n", |
+ cfun->machine->fp_needed?"":" (Eliminated)"); |
+ fprintf(stderr, "\tREGISTERS : %d\n", |
+ cfun->machine->saved_reg_size); |
+ fprintf(stderr, "\tPRETEND SIZE: %d\n", |
+ crtl->args.pretend_args_size); |
+ fprintf(stderr, "\t---- ARG PTR (Original SP, should be eliminated) ----\n"); |
+ fprintf(stderr, "\t----\n"); |
+ fprintf(stderr, "\tARGS-SIZE : %d\n", args_size); |
+ fprintf(stderr, "\tSP_FP_OFFSET: %d\n", |
+ cfun->machine->sp_fp_offset); |
+ fprintf(stderr, "\tSP-ADJUSTMNT: %d\n", |
1390,17 → 1411,40
+ int ret = 0; |
+ zip_compute_frame(); |
+ |
+/* |
+ if (((from) == FRAME_POINTER_REGNUM)&&((to) == STACK_POINTER_REGNUM)) { |
+ ret = cfun->machine->sp_fp_offset; |
+ } else if (((from)=ARG_POINTER_REGNUM)&&((to)==STACK_POINTER_REGNUM)) { |
+ // Since the ARG_POINTER_REGNUM is defined to be identical |
+ // to the FRAME_POINTER_REGNUM, this "if" will never ever |
+ // get called. |
+ ret = cfun->machine->sp_fp_offset; |
+ } else if (((from)=ARG_POINTER_REGNUM)&&((to)==FRAME_POINTER_REGNUM)) { |
+ // ret = cfun->machine->local_vars_size; |
+ // Since we define ARG_POINTER_REGNUM to be FRAME_POINTER_REGNUM |
+ // we're asked for the offset between the frame pointer and |
+ // itself. The result had better be zero. |
+ // |
+ ret = 0; |
+ } else { |
+ abort(); |
+ } |
+*/ |
+ |
+ // Let's try using an ARG_POINTER != FRAME_POINTER |
+ if (((from) == FRAME_POINTER_REGNUM)&&((to) == STACK_POINTER_REGNUM)) { |
+ ret = cfun->machine->sp_fp_offset; |
+ } else if (((from)=ARG_POINTER_REGNUM)&&((to)==STACK_POINTER_REGNUM)) { |
+ // Since the ARG_POINTER_REGNUM is defined to be identical |
+ // to the FRAME_POINTER_REGNUM, this "if" will never ever |
+ // get called. |
+ ret = cfun->machine->size_for_adjusting_sp; |
+ } else if (((from)=ARG_POINTER_REGNUM)&&((to)==FRAME_POINTER_REGNUM)) { |
+ ret = cfun->machine->size_for_adjusting_sp |
+ - cfun->machine->sp_fp_offset; |
+ } else { |
+ abort(); |
+ } |
+ |
+ return ret; |
+} |
+ |
1436,7 → 1480,7
+ |
+#define zip_basic_check() |
+ |
+/* Compute the number of word sized regiters needed to hold a function |
+/* Compute the number of word sized registers needed to hold a function |
+ * argument of mode INT_MODE and tree type TYPE. |
+ */ |
+int |
1456,25 → 1500,6
+ return (size + UNITS_PER_WORD - 1)/UNITS_PER_WORD; |
+} |
+ |
+/* pushed in function prologue */ |
+/* |
+static int |
+zip_arg_partial_bytes(CUMULATIVE_ARGS *cum, enum machine_mode mode, |
+ tree type, bool name ATTRIBUTE_UNUSED) { |
+ int words; |
+ unsigned int regs = zip_num_arg_regs(mode, type); |
+ |
+ if (*cum >= ZIP_LAST_ARG_REGNO + 1) |
+ words = 0; |
+ else if ((*cum + regs) > ZIP_LAST_ARG_REGNO + 1) |
+ words = (*cum + regs) - ZIP_LAST_ARG_REGNO + 1; |
+ else |
+ words = 0; |
+ |
+ return words * UNITS_PER_WORD; |
+} |
+*/ |
+ |
+static void |
+zip_function_arg_advance(cumulative_args_t ca, machine_mode mode, |
+ const_tree type, bool named ATTRIBUTE_UNUSED) { |
1511,157 → 1536,6
+ gen_rtx_REG(mode, (*cum)+1); |
+} |
+ |
+#ifdef HAVE_cc0 |
+/* NOTICE_UPDATE_CC sends us here |
+ */ |
+void |
+zip_update_cc_notice(rtx exp, rtx_insn *insn) |
+{ |
+#error "The CC0 code was supposed to be removed" |
+ const bool dbg = ((ALL_DEBUG_ON)||(false))&&(!ALL_DEBUG_OFF); |
+ enum attr_ccresult ccr; |
+ enum attr_conditional conditionally_executed; |
+ |
+ // The default is that nothing has changed. |
+ // cc_status = cc_status_prev; |
+ rtx src, dest; |
+ |
+ if (dbg) fprintf(stderr, "CC-NOTICE ...\n"); |
+ if (dbg) zip_debug_rtx_pfx("CC :", exp); |
+ if (dbg) debug_rtx(exp); |
+ |
+ ccr = get_attr_ccresult(insn); |
+ if (ccr == CCRESULT_UNKNOWN) { |
+ CC_STATUS_INIT; |
+ if (dbg) fprintf(stderr, "\tINIT-CC\n"); |
+ return; |
+ } |
+ |
+ if ((GET_CODE(exp) == PARALLEL)&&(GET_CODE(XVECEXP(exp, 0, 0))==SET)) { |
+ // This works up and until we add cc0 parallel instructions |
+ // to our instruction set. |
+ dest = SET_DEST(XVECEXP(exp, 0, 0)); |
+ src = SET_SRC (XVECEXP(exp, 0, 0)); |
+ } else if (GET_CODE(exp) == SET) { |
+ dest = SET_DEST(exp); |
+ src = SET_SRC (exp); |
+ } else { |
+ // First, do nothing if we haven't touched the condition codes. |
+ // Condition codes can only be changed as a result of a set |
+ // expression ...? |
+ if (dbg) fprintf(stderr, "Non-set expression, doesn\'t touch condition codes\n"); |
+ return; |
+ } |
+ |
+ |
+ if (ccr == CCRESULT_UNCHANGED) { |
+ if (dbg) fprintf(stderr, "\tUnchanged CC\n"); |
+ |
+ // We can't just run away here ... even though the CC result |
+ // hasn't changed, GCC's ability to recognize it as a valid |
+ // result has changed. In other words, if we just 'set' a |
+ // value contained within either value1 or value2, then we'll |
+ // need to update those values so that they are no longer looked |
+ // upon as potentially containing the current CC values. |
+ |
+ if (dest) { |
+ if (dest == cc0_rtx) |
+ CC_STATUS_INIT; |
+ else if ((REG_P(dest))&&(dest != pc_rtx)) { |
+ // An example here might be a load instruction |
+ if (reg_mentioned_p(dest, cc_status.value1)) |
+ cc_status.value1 = NULL_RTX; |
+ if (reg_mentioned_p(dest, cc_status.value2)) |
+ cc_status.value2 = NULL_RTX; |
+ } |
+ } |
+ return; |
+ } |
+ |
+ // Gotta wait on this test, until we know whether or not the |
+ // conditionally executed instruction was designed to set the |
+ // CC0 register. |
+ conditionally_executed = get_attr_conditional(insn); |
+ if ((conditionally_executed == CONDITIONAL_YES)&&(dest != cc0_rtx)) { |
+ // cc_status is unchanged |
+ // However, GCC's vision of it may have changed |
+ // |
+ // Initialize CC_STATUS |
+ if (dbg) fprintf(stderr, "\tCC -- unchanged (conditional exec)\n"); |
+ CC_STATUS_INIT; |
+ return; |
+ } else if (GET_CODE(src)==IF_THEN_ELSE) { |
+ // Same thing as above |
+ CC_STATUS_INIT; |
+ return; |
+ } |
+ |
+ if (ccr == CCRESULT_VALIDZN) |
+ cc_status.flags = CC_NO_OVERFLOW; |
+ else |
+ cc_status.flags = 0; |
+ cc_status.value1 = dest; |
+ if (dest == cc0_rtx) |
+ cc_status.value2 = src; |
+ else if((REG_P(dest))&&(!reg_mentioned_p(dest, src))) |
+ cc_status.value2 = src; |
+ else if((SUBREG_P(dest))&&(!reg_mentioned_p(XEXP(dest,0), src))) |
+ cc_status.value2 = src; |
+ else |
+ cc_status.value2 = 0; |
+ if (dbg) fprintf(stderr, "\tCC -- Set flags for\n"); |
+ if (dbg) zip_debug_rtx_pfx("V1: ", dest); |
+ if ((dbg)&&(cc_status.value2)) zip_debug_rtx_pfx("V2: ", src); |
+ else if (dbg) fprintf(stderr, "V2: (No SRC)\n"); |
+ if ((dbg)&&(REG_P(dest))) fprintf(stderr, "src refers to dest ?? %s\n", |
+ refers_to_regno_p(REGNO(dest),REGNO(dest),src,NULL)?"Yes":"No"); |
+ if ((dbg)&&(REG_P(dest))) fprintf(stderr, "Occurrs %d times\n", |
+ count_occurrences(dest,src,0)); |
+ if ((dbg)&&(REG_P(dest))) fprintf(stderr, "%s mentioned\n", |
+ reg_mentioned_p(dest,src)?"Is":"Is not"); |
+ if ((dbg)&&(REG_P(dest))) fprintf(stderr, "%s referenced\n", |
+ reg_referenced_p(dest,src)?"Is":"Is not"); |
+ |
+// |
+// These results are only used in final.c, where they are used to remove |
+// compare instructions if the optimizer is on. If I produce nothing, no |
+// compare instructions will be removed. If I produce something, a smart |
+// decision may be made to remove compare instructions. |
+// |
+// cc_status will be compared with subsequent |
+// (set (cc0) (something)) (i.e. compare only) instructions |
+// |
+// (set (cc0) (compare (x) (y))) |
+// dst = cc0 -- the destination of the set is ignored, save that it must be |
+// cc0 |
+// src1 = (compare (x) (y)) |
+// if (src1 == compare)&&(y == (const_int 0)) |
+// src2 = (x) |
+// else |
+// src2 = null |
+// |
+// Four conditions: |
+// 1. if (val1)&&(src1 == val1) |
+// This would be true if I had seen a (set (val1) (src1)) insn |
+// If I have seen a (set (val1) (src1)) |
+// or equivalently a (set (val1) (compare (x) (y))) |
+// or |
+// 2. if (val2)&&(src1 == val2) |
+// This would be true if I had seen a (set (val1) (src1)) insn, |
+// and only if val2 was still valid. |
+// or |
+// 3. if (src2)&&(value1)&&(src2 == value1) |
+// This would be true if we are comparing against zero, and the |
+// number we are comparing against zero is value 1 |
+// or |
+// 4. if (src2)&&(value2)&&(src2 == value2) |
+// ... or value2. This is the common ZipCPU case. |
+// |
+// then delete the compare. |
+// |
+} |
+#else |
+ |
+void zip_canonicalize_comparison(int *code, rtx *op0, rtx *op1, |
+ bool preserve_op0) |
+{ |
1711,9 → 1585,7
+ return true; |
+} |
+ |
+#endif |
+ |
+ |
+/* totally buggy - we can't return pointers to nested functions */ |
+static void |
+zip_asm_trampoline_template(FILE *f) { |
1760,6 → 1632,9
+#ifdef HAVE_zip_halt |
+ def_builtin("zip_halt", CODE_FOR_zip_halt, ZIP_BUILTIN_HALT, void_ftype_void); |
+#endif |
+#ifdef HAVE_zip_busy |
+ def_builtin("zip_busy", CODE_FOR_zip_busy, ZIP_BUILTIN_BUSY, void_ftype_void); |
+#endif |
+#ifdef HAVE_zip_idle |
+ def_builtin("zip_idle", CODE_FOR_zip_idle, ZIP_BUILTIN_IDLE, void_ftype_void); |
+#endif |
2986,8 → 2861,8
+} |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.h gcc-5.3.0-zip/gcc/config/zip/zip.h |
--- gcc-5.3.0-original/gcc/config/zip/zip.h 1969-12-31 19:00:00.000000000 -0500 |
+++ gcc-5.3.0-zip/gcc/config/zip/zip.h 2016-05-12 15:20:14.000702915 -0400 |
@@ -0,0 +1,4077 @@ |
+++ gcc-5.3.0-zip/gcc/config/zip/zip.h 2016-09-13 10:05:21.871953479 -0400 |
@@ -0,0 +1,4058 @@ |
+//////////////////////////////////////////////////////////////////////////////// |
+// |
+// Filename: gcc/config/zip/zip.h |
3054,15 → 2929,15
+// Register 0 (may be) the return address pointer |
+// Registers 16-31 may only be used in supervisor mode. |
+#define is_ZIP_GENERAL_REG(REGNO) ((REGNO)<13) |
+#define is_ZIP_REG(REGNO) ((REGNO)<16) |
+#define is_ZIP_REG(REGNO) ((REGNO)<33) |
+ |
+// #define zip_FP_PSEUDO 16 |
+#define zip_AP_PSEUDO 32 |
+#define zip_PC 15 |
+#define zip_CC 14 |
+#define zip_SP 13 |
+#define zip_FP 12 |
+#define zip_GOT 11 |
+#define zip_AP 10 |
+// #define zip_AP 10 // We're using a PSEUDO REG instead |
+#define zip_R1 1 |
+#define zip_R0 0 |
+ |
3788,19 → 3663,14
+ * FIRST_PSEUDO_REGISTER. |
+ * |
+ * ZipCPU---There are 16 registers in the ZipCPU, numbered 0-15 with the CC |
+ * and PC register being numbered 14 and 15 respectively. Therefore, the |
+ * compiler can take register number 16 and above and do whatever it wants |
+ * with it. |
+ * and PC register being numbered 14 and 15 respectively. The ZipCPU has |
+ * another 16 registers, identical to the first, but user mode registers. These |
+ * are number the same as the first (0-15) in user mode, but numbered (16-31) |
+ * in supervisor mode. In addition, we create a pretend argument pointer |
+ * register, zip_AP_PSEUDO, to refer to our arguments. This final register, |
+ * although it gets a valid number, will be eliminated in optimization. |
+ */ |
+#ifdef DEFINE_USER_REGS |
+# define FIRST_PSEUDO_REGISTER 32 |
+#else |
+# ifdef zip_FP_PSEUDO |
+# define FIRST_PSEUDO_REGISTER (zip_FP_PSEUDO+1) |
+# else |
+# define FIRST_PSEUDO_REGISTER 16 |
+# endif |
+#endif |
+#define FIRST_PSEUDO_REGISTER (zip_AP_PSEUDO+1) |
+ |
+/* FIXED_REGISTERS ... An initializer that says which registers are used for |
+ * fixed purposes all throughout the compiled code and are therefore not |
3823,16 → 3693,13
+ * |
+ * Other registers, such as FP (the frame pointer) or GBL (the global offset |
+ * table pointer) are registers that we hope will not be so fixed. |
+ * |
+ * Okay, just updated this process. We now have more registers that are not |
+ * available for general allocation: |
+ * uR0-uPC User registers |
+ * PSEUDO-AP The pseudo arg pointer |
+ */ |
+#ifdef DEFINE_USER_REGS |
+# define FIXED_REGISTERS { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 } |
+#else |
+# ifdef zip_FP_PSEUDO |
+# define FIXED_REGISTERS { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 } |
+# else |
+# define FIXED_REGISTERS { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1 } |
+# endif |
+#endif |
+#define FIXED_REGISTERS { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1 } |
+ |
+/* CALL_USED_REGISTERS ... like FIXED_REGISTERS but has 1 for each register |
+ * that is clobbered (in general) by function calls as well as for fixed |
3847,15 → 3714,7
+ * On the Zip CPU, we must save R0 (the return address), and (let's pick) any |
+ * register above R5. |
+ */ |
+#ifdef DEFINE_USER_REGS |
+# define CALL_USED_REGISTERS { 0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 } |
+#else |
+# ifdef zip_FP_PSEUDO |
+# define CALL_USED_REGISTERS { 0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1 } |
+# else |
+# define CALL_USED_REGISTERS { 0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1 } |
+# endif |
+#endif |
+#define CALL_USED_REGISTERS { 0,1,1,1, 1,0,0,0, 0,0,0,0, 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1 } |
+ |
+/* CALL_REALLY_USED_REGISTERS ... optional macro that, if not defined, defaults |
+ * to the value of CALL_USED_REGISTERS. |
3884,8 → 3743,8
+ * -ffixed-reg, -fcall-used-reg, and -fcall-saved-reg command options have been |
+ * applied. |
+ * |
+ * ZipCPU -- I may need to return and define this depending upon how FP and |
+ * GBL register allocation go. But for now, we'll leave this at its default |
+ * ZipCPU -- I may need to return and define this depending upon how the |
+ * GBL register allocation goes. But for now, we'll leave this at its default |
+ * value. |
+ */ |
+// #warning "Revisit me after FP and GBL allocation" |
3897,11 → 3756,9
+ */ |
+ |
+/* OUTGOING_REGNO ... same thing. |
+ * LOCAL_REGNO ... same thing. |
+ */ |
+ |
+/* LOCAL_REGNO ... same thing. |
+ */ |
+ |
+/* PC_REGNUM ... If the program counter has a register number, define this as |
+ * that register number. Otherwise do not define it. |
+ */ |
4048,9 → 3905,7
+ */ |
+enum reg_class { |
+ NO_REGS, GENERAL_REGS, |
+#ifdef DEFINE_USER_REGS |
+ USER_REGS, |
+#endif |
+ ALL_REGS, LIM_REG_CLASSES |
+}; |
+ |
4062,11 → 3917,7
+ * classes as C string constants. These names are used in writing some of the |
+ * debugging dumps. |
+ */ |
+#ifdef DEFINE_USER_REGS |
+# define REG_CLASS_NAMES { "NO_REGS", "GENERAL_REGS", "USER_REGS", "ALL_REGS" } |
+#else |
+# define REG_CLASS_NAMES { "NO_REGS", "GENERAL_REGS", "ALL_REGS" } |
+#endif |
+#define REG_CLASS_NAMES { "NO_REGS", "GENERAL_REGS", "USER_REGS", "ALL_REGS" } |
+ |
+/* REG_CLASS_CONTENTS ... An initializer containing the contents of the register |
+ * classes, as integers which are bit masks. The nth integer specifies the |
4073,19 → 3924,16
+ * contents of class n. That way the integer mask is interpreted as that |
+ * register r is in the class if (mask&(1<<r)) is 1. |
+ * |
+ * When the machine has more than 32 registers ... that's not us. |
+ * When the machine has more than 32 registers, an integer does not suffice. |
+ * Then the integers are replaced by sub-initializers, braced groupings |
+ * containing several integers. Each sub-initializer must be suitable as an |
+ * initializer for the type HARD_REG_SET which is defined in 'hard-reg-set.h'. |
+ * In this situation, the first integer in each subinitializer corresponds to |
+ * registers 0-31, the second integer to registers 32-634, and so on. |
+ * |
+ * ZipCPU --- This is straight forward, three register classes, etc. |
+ */ |
+#ifdef DEFINE_USER_REGS |
+# define REG_CLASS_CONTENTS { { 0x000000000}, {0x00003fff}, {0x0ffff0000l}, {0x0ffffffffl} } |
+#else |
+# ifdef zip_FP_PSEUDO |
+# define REG_CLASS_CONTENTS { { 0x00000}, {0x13fff}, {0x1ffff} } |
+# else |
+# define REG_CLASS_CONTENTS { { 0x00000}, {0x03fff}, {0x0ffff} } |
+# endif |
+#endif |
+#define REG_CLASS_CONTENTS { { 0x000000000, 0}, {0x00003fff, 0}, {0x0ffff0000, 0}, {0x0ffffffff, 1} } |
+ |
+/* REGNO_REG_CLASS ... A C expression whose value is a register class |
+ * containing hard register REGNO. In general there is more than one such |
4092,12 → 3940,7
+ * class; Choose a class which is minimal, meaning that no smaller class also |
+ * contains the register. |
+ */ |
+#undef REGNO_REG_CLASS |
+#ifdef zip_FP_PSEUDO |
+#define REGNO_REG_CLASS(R) (is_ZIP_REG(R)?((((R)<=13)||((R)==zip_FP_PSEUDO))?GENERAL_REGS:ALL_REGS):NO_REGS) |
+#else |
+#define REGNO_REG_CLASS(R) (is_ZIP_REG(R)?((R<=13)?GENERAL_REGS:ALL_REGS):NO_REGS) |
+#endif |
+#define REGNO_REG_CLASS(R) (is_ZIP_REG(R)?(((R)<=13)?GENERAL_REGS:ALL_REGS):NO_REGS) |
+ |
+/* BASE_REG_CLASS ... A macro whose definition is the name of the class to which |
+ * a valid base register must belong. A base register is one used in an address |
4349,7 → 4192,7
+ |
+/* STARTING_FRAME_OFFSET ... Offset from the frame pointer to the first local |
+ * variable slot to be allocated. If FRAME_GROWS_DOWNWARD, find the next slot's |
+ * offset by subtracting the firstt slot's length from STARTING_FRAME_OFFSET. |
+ * offset by subtracting the first slot's length from STARTING_FRAME_OFFSET. |
+ * Otherwise it is found by adding the length of the first slot to the value |
+ * START_FRAME_OFFSET. |
+ * |
4357,7 → 4200,7
+ * the code is getting generated. However, the ECO32 code I am copying from |
+ * suggests that 0 is the right value, so we'll use that here. |
+ */ |
+// #warning "Re-evaluate me" |
+// #warning "Re-evaluate me" --- I did. This still looks good. |
+#define STARTING_FRAME_OFFSET 0 |
+ |
+/* STACK_ALIGNMENT_NEEDED ... Define to zero to disable final alignment of the |
4376,7 → 4219,7
+ |
+/* FIRST_PARM_OFFSET ... Offset from the argument pointer register to the first |
+ * argument's address. On some machines it may depend on the data type of the |
+ * function. |
+ * function. |
+ */ |
+#define FIRST_PARM_OFFSET(F) 0 |
+ |
4471,7 → 4314,16
+/* TARGET_DWARF_HANDLE_FRAME_UNSPEC |
+ */ |
+ |
+/* INCOMING_FRAME_SP_OFFSET |
+/* INCOMING_FRAME_SP_OFFSET ... A C expression whose value is an integer giving |
+ * the offset, in bytes, from the value of the stack pointer register to the |
+ * top of the stack frame at the beginning of any function, before the prologue. |
+ * The top of the frame is defined to be the value of the stack pointer in the |
+ * previous frame, just before the call instruction. |
+ * |
+ * You only need to define this macro if you want to support call frame |
+ * debugging information like that provided by DWARF 2. |
+ * |
+ * ZipCPU---Our value is zero. |
+ */ |
+#define INCOMING_FRAME_SP_OFFSET 0 |
+ |
4611,11 → 4463,7
+ * a need for it, alloca() requires it. Therefore let's assine a register to |
+ * this purpose and watch what the compiler does with it. |
+ */ |
+#ifdef zip_FP_PSEUDO |
+#define FRAME_POINTER_REGNUM zip_FP_PSEUDO |
+#else |
+#define FRAME_POINTER_REGNUM zip_FP |
+#endif |
+ |
+/* HARD_FRAME_POINTER_REGNUM ... On some machines the offset between the frame |
+ * pointer and starting offset of the automatic variables is not known until |
4629,9 → 4477,7
+ * |
+ * ZipCPU --- we do not define this macro. |
+ */ |
+#if (zip_FP == FRAME_POINTER_REGNUM) |
+#define HARD_FRAME_POINTER_REGNUM zip_FP |
+#endif |
+ |
+/* ARG_POINTER_REGNUM ... The register number of the arg pointer register, which |
+ * is used to access the function's argument list. On some machines, this is |
4645,8 → 4491,12
+ * pointless, so let's set this to be the frame pointer register. Especially |
+ * given the ZipCPU's ease of accessing things via offsets of registers, this |
+ * should work for a rather large stack frame. |
+ * |
+ * However ... we had problems with passing 6+ variables on the stack, so let's |
+ * try creating a pseudo register for this, and appropriately adjusting the |
+ * offset between this pseudo register and the stack pointer ... |
+ */ |
+#define ARG_POINTER_REGNUM FRAME_POINTER_REGNUM |
+#define ARG_POINTER_REGNUM zip_AP_PSEUDO |
+ |
+/* HARD_FRAME_POINTER_IS_FRAME_POINTER ... define this to be a preprocessor |
+ * constant that is nonzero if hard_frame_pointer_rtx and frame_pointer_rtx |
4812,23 → 4662,10
+ * ZipCPU we'll take their suggestion and define this as: |
+ */ |
+#undef ELIMINABLE_REGS |
+#ifdef zip_FP_PSEUDO |
+#define ELIMINABLE_REGS \ |
+ {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ |
+ { ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \ |
+ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ |
+ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}} |
+#else |
+# if (ARG_POINTER_REGNUM == FRAME_POINTER_REGNUM) |
+# define ELIMINABLE_REGS \ |
+ {{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}} |
+# else |
+# define ELIMINABLE_REGS \ |
+ {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM }, \ |
+ { ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM }, \ |
+ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}} |
+# endif |
+#endif |
+ |
+/* bool TARGET_CAN_ELIMINATE(FROM,TO) ... This target function should return |
+ * true if the compiler is allowed to try to replace register number FROM with |
4903,8 → 4740,9
+ |
+/* ACCUMULATE_OUTGOING_ARGS ... A C expression. If non-zero, the maximum amount |
+ * of space required for outgoing arguments will be computed and placed into |
+ * crtl->outgoing_args_size. No space will be pushed onto the stack for each call; instead the function prologue should increase the stack frame size by this |
+ * amount. |
+ * crtl->outgoing_args_size. No space will be pushed onto the stack for each |
+ * call; instead the function prologue should increase the stack frame size by |
+ * this amount. |
+ * |
+ * ZipCPU---This is *cool* and so necessary---it saves an extra two instructions |
+ * each time we try to call a function/routine. Yes, we want and *need* this |
4993,7 → 4831,13
+#define TARGET_FUNCTION_ARG zip_function_arg |
+ |
+ |
+/* TARGET_MUST_PASS_IN_STACK ... |
+/* TARGET_MUST_PASS_IN_STACK(MODE, TYPE) ... This target hook should return |
+ * true if we should not pass TYPE solely in registers. The file 'expr.h' |
+ * defines a definition that is usually appropriate, refer to 'expr.h' for |
+ * additional documentation. |
+ * |
+ * ZipCPU ... Ok, so I looked into expr.h and didn't find anything that looked |
+ * like this. So ... I don't know. |
+ */ |
+// #undef TARGET_MUST_PASS_IN_STACK |
+// #define TARGET_MUST_PASS_IN_STACK zip_must_pass_in_stack |
5074,7 → 4918,15
+#define TARGET_FUNCTION_ARG_ADVANCE zip_function_arg_advance |
+ |
+/* |
+ * TARGET_ARG_OFFSET --- not necessary |
+ * TARGET_ARG_OFFSET(MODE, TYPE) ... If defined, a C expression that is the |
+ * number of bytes to add to the offset of the argument passed in memory. |
+ * This is needed for the SPU, which passes char and short arguments in the |
+ * preferred slot that is in the middle of the quad word instead of starting |
+ * at the top. |
+ * |
+ * ZipCPU -- sounds like the default would be (more) appropriate. |
+ */ |
+/* |
+ * FUNCTION_ARG_PADDING --- not necessary, since we shouldn't be padding |
+ * PAD_VARARGS_DOWN --- not necessary, since we shouldn't be padding |
+ * BLOCK_REG_PADDING |
6108,8 → 5960,12
+ |
+/* 17.20.7 Output of Assembler Instructions */ |
+ |
+#define REGISTER_NAMES { "R0","R1","R2","R3","R4","R5","R6","R7","R8","R9", \ |
+ "R10","R11","R12","SP","CC","PC" } |
+#define REGISTER_NAMES { \ |
+ "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", \ |
+ "R8", "R9", "R10", "R11", "R12", "SP", "CC", "PC", \ |
+ "uR0","uR1","uR2", "uR3", "uR4", "uR5","uR6","uR7", \ |
+ "uR8","uR9","uR10","uR11","uR12","uSP","uCC","uPC", \ |
+ "PSEUDO-AP" } |
+ |
+/* REGISTER_PREFIX (Undefined by default) |
+ * LOCAL_LABEL_PREFIX (Undefined by default) |
7067,8 → 6923,8
+ |
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.md gcc-5.3.0-zip/gcc/config/zip/zip.md |
--- gcc-5.3.0-original/gcc/config/zip/zip.md 1969-12-31 19:00:00.000000000 -0500 |
+++ gcc-5.3.0-zip/gcc/config/zip/zip.md 2016-05-12 15:59:38.583777436 -0400 |
@@ -0,0 +1,3238 @@ |
+++ gcc-5.3.0-zip/gcc/config/zip/zip.md 2016-08-08 07:07:39.251163261 -0400 |
@@ -0,0 +1,3254 @@ |
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
+;; |
+;; Filename: zip.md |
9421,6 → 9277,11
+ "(!ZIP_USER)" |
+ "RTU" |
+ [(set_attr "ccresult" "unknown")]) |
+(define_insn "zip_busy" |
+ [(set (pc) (minus:SI (pc) (const_int 1)))] |
+ "" |
+ "BUSY" |
+ [(set_attr "predicable" "yes") (set_attr "ccresult" "unchanged")]) |
+(define_insn "zip_halt" ; Needs to be unspec_volatile, or optimizer will opt out |
+ [(unspec_volatile [(reg:SI CC_REG)] UNSPEC_HALT) |
+ (clobber (reg:CC CC_REG))] |
9577,7 → 9438,18
+ |
+; |
+; |
+; Missing still: zip_break(idno) |
+; Would also be nice to have a zip_reg builtin, allowing us to read or write |
+; a register, as in zip_reg(5)=40;. Not sure what this means, though, when the |
+; number placed into this is not constant, or how to specify that it must *only* |
+; be constant. Thats actually the problem with both proposals, zip_break(id) |
+; and zip_reg(regno)--both depend upon a compile time constant to work. |
+; |
+; |
+ |
+; |
+; |
+; |
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
+;; |
+;; Floating point Op-codes |