OpenCores
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.