This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: WindISS support for RS6000


Here's the version of the WindISS patch I checked in, after tweaking things
so as to avoid having to make the change to the FreeBSD spec, and
the correction to the spelling of crtsavres.o.

Tested with a cross compiler to powerpc-eabisim

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

2002-05-07  Mark Mitchell  <mark@codesourcery.com>

	* 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.

Index: sysv4.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/sysv4.h,v
retrieving revision 1.90
diff -c -p -r1.90 sysv4.h
*** sysv4.h	15 Apr 2002 20:35:22 -0000	1.90
--- sysv4.h	7 May 2002 14:39:06 -0000
*************** extern int g_switch_set;		/* Whether -G
*** 152,157 ****
--- 152,158 ----
    { "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") },
*************** do {						\
*** 943,954 ****
  %{myellowknife: %(link_start_yellowknife) } \
  %{mmvme: %(link_start_mvme) } \
  %{msim: %(link_start_sim) } \
  %{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) }}}}}}}}"

  #define LINK_START_DEFAULT_SPEC ""

--- 944,957 ----
  %{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: %{!mwindiss: \
!          %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd:   \
!          %{!mcall-freebsd: %(link_start_default) }}}}}}}}}"

  #define LINK_START_DEFAULT_SPEC ""

*************** do {						\
*** 1000,1010 ****
  %{myellowknife: %(link_os_yellowknife) } \
  %{mmvme: %(link_os_mvme) } \
  %{msim: %(link_os_sim) } \
  %{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) }}}}}}}}"

  #define LINK_OS_DEFAULT_SPEC ""

--- 1003,1016 ----
  %{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: %{!mwindiss: \
!          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \
!          %{!mcall-netbsd: %(link_os_default) }}}}}}}}}"

  #define LINK_OS_DEFAULT_SPEC ""

*************** do {						\
*** 1064,1074 ****
  %{myellowknife: %(cpp_os_yellowknife) } \
  %{mmvme: %(cpp_os_mvme) } \
  %{msim: %(cpp_os_sim) } \
  %{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) }}}}}}}}"

  #define	CPP_OS_DEFAULT_SPEC ""

--- 1070,1083 ----
  %{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: %{!mwindiss: \
!          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \
!          %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}}"

  #define	CPP_OS_DEFAULT_SPEC ""

*************** do {						\
*** 1079,1089 ****
  %{myellowknife: %(startfile_yellowknife) } \
  %{mmvme: %(startfile_mvme) } \
  %{msim: %(startfile_sim) } \
  %{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) 
}}}}}}}}"

  #define	STARTFILE_DEFAULT_SPEC ""

--- 1088,1101 ----
  %{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: %{!mwindiss: \
!          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \
!          %{!mcall-netbsd: %(startfile_default) }}}}}}}}}"

  #define	STARTFILE_DEFAULT_SPEC ""

*************** do {						\
*** 1094,1120 ****
  %{myellowknife: %(lib_yellowknife) } \
  %{mmvme: %(lib_mvme) } \
  %{msim: %(lib_sim) } \
  %{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) }}}}}}}}"

  #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_DEFAULT_SPEC ""

--- 1106,1141 ----
  %{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: %{!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 "\
! %{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 ""

*************** ncrtn.o%s"
*** 1326,1331 ****
--- 1347,1371 ----
  %{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
*************** ncrtn.o%s"
*** 1334,1339 ****
--- 1374,1380 ----
    { "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 },			\
*************** ncrtn.o%s"
*** 1343,1348 ****
--- 1384,1390 ----
    { "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 },		\
*************** ncrtn.o%s"
*** 1353,1358 ****
--- 1395,1401 ----
    { "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 },		\
*************** ncrtn.o%s"
*** 1363,1368 ****
--- 1406,1412 ----
    { "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 },			\
*************** ncrtn.o%s"
*** 1377,1382 ****
--- 1421,1427 ----
    { "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 },			\
*************** ncrtn.o%s"
*** 1388,1393 ****
--- 1433,1439 ----
    { "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 },		\
*************** ncrtn.o%s"
*** 1405,1410 ****
--- 1451,1457 ----
    { "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
Index: windiss.h
===================================================================
RCS file: windiss.h
diff -N windiss.h
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- windiss.h	7 May 2002 14:39:06 -0000
***************
*** 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]