From a1ffecd9e2c9199ecee4586dbd2badb9c56809f9 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Tue, 7 May 2002 14:42:29 +0000 Subject: [PATCH] sysv4.h (SUBTARGET_SWITCHES): Add -mwindiss. * config/rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -mwindiss. (LINK_START_SPEC): Handle it. (LINK_OS_SPEC): Likewise. (CPP_SPEC): Likewise. (STARTFILE_SPEC): Likewise. (LIB_SPEC): Likewise. (ENDFILE_SPEC): Likewise. Do not assume crtsavres.o is used on all platforms. (CRTSAVRES_DEFAULT_SPEC): New macro. (LIB_WINDISS_SPEC): New macro. (CPP_OS_WINDISS_SPEC): Likewise. (STARTFILE_WINDISS_SPEC): Likewise. (ENDFILE_WINDISS_SPEC): Likewise. (LINK_START_WINDISS_SPEC): Likewise. (LINK_OS_WINDISS_SPEC): Likewise. * config/rs6000/windiss.h: New file. From-SVN: r53257 --- gcc/ChangeLog | 19 +++++++++ gcc/config/rs6000/sysv4.h | 81 +++++++++++++++++++++++++++++-------- gcc/config/rs6000/windiss.h | 49 ++++++++++++++++++++++ 3 files changed, 132 insertions(+), 17 deletions(-) create mode 100644 gcc/config/rs6000/windiss.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 791a6b199f3..2671b48b4cc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,22 @@ +2002-05-07 Mark Mitchell + + * config/rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -mwindiss. + (LINK_START_SPEC): Handle it. + (LINK_OS_SPEC): Likewise. + (CPP_SPEC): Likewise. + (STARTFILE_SPEC): Likewise. + (LIB_SPEC): Likewise. + (ENDFILE_SPEC): Likewise. Do not assume crtsavres.o is used on + all platforms. + (CRTSAVRES_DEFAULT_SPEC): New macro. + (LIB_WINDISS_SPEC): New macro. + (CPP_OS_WINDISS_SPEC): Likewise. + (STARTFILE_WINDISS_SPEC): Likewise. + (ENDFILE_WINDISS_SPEC): Likewise. + (LINK_START_WINDISS_SPEC): Likewise. + (LINK_OS_WINDISS_SPEC): Likewise. + * config/rs6000/windiss.h: New file. + 2002-05-07 Aldy Hernandez * config/rs6000/rs6000.c (bdesc_2arg): Fix vmax typos. diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index 95c7e8b9ade..cf0c6682ce8 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -152,6 +152,7 @@ extern int g_switch_set; /* Whether -G xx was passed. */ { "emb", 0, \ N_("Set the PPC_EMB bit in the ELF flags header") }, \ { "vxworks", 0, N_("no description yet") }, \ + { "windiss", 0, N_("Use the WindISS simulator") }, \ { "shlib", 0, N_("no description yet") }, \ EXTRA_SUBTARGET_SWITCHES \ { "newlib", 0, N_("no description yet") }, @@ -943,12 +944,14 @@ do { \ %{myellowknife: %(link_start_yellowknife) } \ %{mmvme: %(link_start_mvme) } \ %{msim: %(link_start_sim) } \ +%{mwindiss: %(link_start_windiss) } \ %{mcall-freebsd: %(link_start_freebsd) } \ %{mcall-linux: %(link_start_linux) } \ %{mcall-gnu: %(link_start_gnu) } \ %{mcall-netbsd: %(link_start_netbsd) } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-gnu: \ - %{!mcall-netbsd: %{!mcall-freebsd: %(link_start_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: \ + %{!mcall-freebsd: %(link_start_default) }}}}}}}}}" #define LINK_START_DEFAULT_SPEC "" @@ -1000,11 +1003,14 @@ do { \ %{myellowknife: %(link_os_yellowknife) } \ %{mmvme: %(link_os_mvme) } \ %{msim: %(link_os_sim) } \ +%{mwindiss: %(link_os_windiss) } \ %{mcall-freebsd: %(link_os_freebsd) } \ %{mcall-linux: %(link_os_linux) } \ %{mcall-gnu: %(link_os_gnu) } \ %{mcall-netbsd: %(link_os_netbsd) } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(link_os_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(link_os_default) }}}}}}}}}" #define LINK_OS_DEFAULT_SPEC "" @@ -1064,11 +1070,14 @@ do { \ %{myellowknife: %(cpp_os_yellowknife) } \ %{mmvme: %(cpp_os_mvme) } \ %{msim: %(cpp_os_sim) } \ +%{mwindiss: %(cpp_os_windiss) } \ %{mcall-freebsd: %(cpp_os_freebsd) } \ %{mcall-linux: %(cpp_os_linux) } \ %{mcall-gnu: %(cpp_os_gnu) } \ %{mcall-netbsd: %(cpp_os_netbsd) } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}}" #define CPP_OS_DEFAULT_SPEC "" @@ -1079,11 +1088,14 @@ do { \ %{myellowknife: %(startfile_yellowknife) } \ %{mmvme: %(startfile_mvme) } \ %{msim: %(startfile_sim) } \ +%{mwindiss: %(startfile_windiss) } \ %{mcall-freebsd: %(startfile_freebsd) } \ %{mcall-linux: %(startfile_linux) } \ %{mcall-gnu: %(startfile_gnu) } \ %{mcall-netbsd: %(startfile_netbsd) } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(startfile_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(startfile_default) }}}}}}}}}" #define STARTFILE_DEFAULT_SPEC "" @@ -1094,27 +1106,36 @@ do { \ %{myellowknife: %(lib_yellowknife) } \ %{mmvme: %(lib_mvme) } \ %{msim: %(lib_sim) } \ +%{mwindiss: %(lib_windiss) } \ %{mcall-freebsd: %(lib_freebsd) } \ %{mcall-linux: %(lib_linux) } \ %{mcall-gnu: %(lib_gnu) } \ %{mcall-netbsd: %(lib_netbsd) } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(lib_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(lib_default) }}}}}}}}}" #define LIB_DEFAULT_SPEC "" /* Override svr4.h definition. */ #undef ENDFILE_SPEC -#define ENDFILE_SPEC "crtsavres.o%s \ -%{mads: %(endfile_ads)} \ -%{myellowknife: %(endfile_yellowknife)} \ -%{mmvme: %(endfile_mvme)} \ -%{msim: %(endfile_sim)} \ -%{mcall-freebsd: %(endfile_freebsd) } \ -%{mcall-linux: %(endfile_linux) } \ -%{mcall-gnu: %(endfile_gnu) } \ -%{mcall-netbsd: %(endfile_netbsd) } \ -%{mvxworks: %(endfile_vxworks) } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %{!mvxworks: %(endfile_default) }}}}}}}}}" +#define ENDFILE_SPEC "\ +%{mads: crtsavres.o%s %(endfile_ads)} \ +%{myellowknife: crtsavres.o%s %(endfile_yellowknife)} \ +%{mmvme: crtsavres.o%s %(endfile_mvme)} \ +%{msim: crtsavres.o%s %(endfile_sim)} \ +%{mwindiss: %(endfile_windiss)} \ +%{mcall-freebsd: crtsavres.o%s %(endfile_freebsd) } \ +%{mcall-linux: crtsavres.o%s %(endfile_linux) } \ +%{mcall-gnu: crtsavres.o%s %(endfile_gnu) } \ +%{mcall-netbsd: crtsavres.o%s %(endfile_netbsd) } \ +%{mvxworks: crtsavres.o%s %(endfile_vxworks) } \ +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %{!mvxworks: %(crtsavres_default) \ + %(endfile_default) }}}}}}}}}}" + +#define CRTSAVRES_DEFAULT_SPEC "crtsavres.o%s" #define ENDFILE_DEFAULT_SPEC "" @@ -1326,6 +1347,25 @@ ncrtn.o%s" %{mcpu=823: -DCPU=PPC603} \ %{mcpu=860: -DCPU=PPC603}" +/* WindISS support. */ + +#define LIB_WINDISS_SPEC "--start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group" + +#define CPP_OS_WINDISS_SPEC "\ +-D__rtasim \ +-D__EABI__ \ +-D__ppc \ +%{!msoft-float: -D__hardfp} \ +" + +#define STARTFILE_WINDISS_SPEC "crt0.o%s crtbegin.o%s" + +#define ENDFILE_WINDISS_SPEC "crtend.o%s" + +#define LINK_START_WINDISS_SPEC "" + +#define LINK_OS_WINDISS_SPEC "" + /* Define any extra SPECS that the compiler needs to generate. */ /* Override rs6000.h definition. */ #undef SUBTARGET_EXTRA_SPECS @@ -1334,6 +1374,7 @@ ncrtn.o%s" { "cpp_sysv_default", CPP_SYSV_DEFAULT_SPEC }, \ { "cpp_endian_default", CPP_ENDIAN_DEFAULT_SPEC }, \ { "cpp_endian", CPP_ENDIAN_SPEC }, \ + { "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \ { "lib_ads", LIB_ADS_SPEC }, \ { "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \ { "lib_mvme", LIB_MVME_SPEC }, \ @@ -1343,6 +1384,7 @@ ncrtn.o%s" { "lib_linux", LIB_LINUX_SPEC }, \ { "lib_netbsd", LIB_NETBSD_SPEC }, \ { "lib_vxworks", LIB_VXWORKS_SPEC }, \ + { "lib_windiss", LIB_WINDISS_SPEC }, \ { "lib_default", LIB_DEFAULT_SPEC }, \ { "startfile_ads", STARTFILE_ADS_SPEC }, \ { "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \ @@ -1353,6 +1395,7 @@ ncrtn.o%s" { "startfile_linux", STARTFILE_LINUX_SPEC }, \ { "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \ { "startfile_vxworks", STARTFILE_VXWORKS_SPEC }, \ + { "startfile_windiss", STARTFILE_WINDISS_SPEC }, \ { "startfile_default", STARTFILE_DEFAULT_SPEC }, \ { "endfile_ads", ENDFILE_ADS_SPEC }, \ { "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \ @@ -1363,6 +1406,7 @@ ncrtn.o%s" { "endfile_linux", ENDFILE_LINUX_SPEC }, \ { "endfile_netbsd", ENDFILE_NETBSD_SPEC }, \ { "endfile_vxworks", ENDFILE_VXWORKS_SPEC }, \ + { "endfile_windiss", ENDFILE_WINDISS_SPEC }, \ { "endfile_default", ENDFILE_DEFAULT_SPEC }, \ { "link_path", LINK_PATH_SPEC }, \ { "link_shlib", LINK_SHLIB_SPEC }, \ @@ -1377,6 +1421,7 @@ ncrtn.o%s" { "link_start_linux", LINK_START_LINUX_SPEC }, \ { "link_start_netbsd", LINK_START_NETBSD_SPEC }, \ { "link_start_vxworks", LINK_START_VXWORKS_SPEC }, \ + { "link_start_windiss", LINK_START_WINDISS_SPEC }, \ { "link_start_default", LINK_START_DEFAULT_SPEC }, \ { "link_os", LINK_OS_SPEC }, \ { "link_os_ads", LINK_OS_ADS_SPEC }, \ @@ -1388,6 +1433,7 @@ ncrtn.o%s" { "link_os_gnu", LINK_OS_GNU_SPEC }, \ { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ { "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \ + { "link_os_windiss", LINK_OS_WINDISS_SPEC }, \ { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ { "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \ { "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ @@ -1405,6 +1451,7 @@ ncrtn.o%s" { "cpp_os_linux", CPP_OS_LINUX_SPEC }, \ { "cpp_os_netbsd", CPP_OS_NETBSD_SPEC }, \ { "cpp_os_vxworks", CPP_OS_VXWORKS_SPEC }, \ + { "cpp_os_windiss", CPP_OS_WINDISS_SPEC }, \ { "cpp_os_default", CPP_OS_DEFAULT_SPEC }, /* Define this macro as a C expression for the initializer of an diff --git a/gcc/config/rs6000/windiss.h b/gcc/config/rs6000/windiss.h new file mode 100644 index 00000000000..32f925aba35 --- /dev/null +++ b/gcc/config/rs6000/windiss.h @@ -0,0 +1,49 @@ +/* Support for GCC on PowerPC using WindISS simulator. + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by CodeSourcery, LLC. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (PowerPC WindISS)"); + +#undef LIB_DEFAULT_SPEC +#define LIB_DEFAULT_SPEC "%(lib_windiss)" + +#undef STARTFILE_DEFAULT_SPEC +#define STARTFILE_DEFAULT_SPEC "%(startfile_windiss)" + +#undef ENDFILE_DEFAULT_SPEC +#define ENDFILE_DEFAULT_SPEC "%(endfile_windiss)" + +#undef LINK_START_DEFAULT_SPEC +#define LINK_START_DEFAULT_SPEC "%(link_start_windiss)" + +#undef LINK_OS_DEFAULT_SPEC +#define LINK_OS_DEFAULT_SPEC "%(link_os_windiss)" + +#undef CRTSAVRES_DEFAULT_SPEC +#define CRTSAVRES_DEFAULT_SPEC "" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "short unsigned int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 16 + +#define NO_IMPLICIT_EXTERN_C -- 2.30.2