public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Mark Klein <mklein@dis.com>
To: law@cygnus.com
Cc: gcc@gcc.gnu.org
Subject: Re: MPE Port
Date: Mon, 06 Sep 1999 10:39:00 -0000	[thread overview]
Message-ID: <4.1.19990906102304.00c72c80@garfield.dis.com> (raw)

Sat Sep  4 18:00:00 PDT 1999 Mark Klein (mklein@dis.com)

        * pa/pa-mpeix.h: New file for MPE port.

*** egcs/gcc/config/pa/pa-mpeix.h	Wed Dec 31 16:00:00 1969
--- egcs-ss/gcc/config/pa/pa-mpeix.h	Mon Aug 30 21:52:06 1999
***************
*** 0 ****
--- 1,240 ----
+ /* Definitions of target machine for GNU compiler, for MPEiX.
+    Contributed by Mark Klein <mklein@dis.com>
+    Copyright (C) 1998 Free Software Foundation, Inc.
+ 
+ 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_GAS | MASK_JUMP_IN_DELAY | MASK_USE_MILLICODE)
+ 
+ /* MPE (as of MPE/iX 6.5) still uses older millicode than HP-UX. */
+ #undef  TARGET_NEW_MILLICODE
+ #define TARGET_NEW_MILLICODE 0
+
+ /* Make GCC agree with types.h.  */
+ #undef SIZE_TYPE
+ #undef PTRDIFF_TYPE
+ 
+ #define SIZE_TYPE "unsigned int"
+ #define PTRDIFF_TYPE "int"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC ""
+ 
+ #undef LIB_SPEC
+ #define LIB_SPEC "%{!p:%{!pg:%{!threads:-lc}}}%{p:-lc_p}%{pg:-lc_p}
%{threads:/SYS/PUB/start.o -WL,xl=threadxl.pub.sys}"
+ 
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "-Dhppa -Dhp3000s900 -D__hp3000s900 -Dhp3k9
-Dmpeix -Dhp3000 -DREVARGV -Asystem(mpeix) -Acpu(hppa) -Amachine(hppa)"
+   
+ #undef LDD_SUFFIX
+ 
+ /* Readonly data on MPE must be in $DATA$ to be available across
+    space boundaries for the intrinsic mechanism.
+  */
+ #undef SELECT_RTX_SECTION
+ #define SELECT_RTX_SECTION(MODE,RTX) data_section ();
+ 
+ #undef READONLY_DATA_ASM_OP
+ #define READONLY_DATA_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $DATA$\n"
+   
+ /* Ugly hack, but I don't see any other way.
+  * Gotta enable the <Control Y> traps, otherwise SIG_INT won't work.
+  */
+ #undef DO_GLOBAL_CTORS_BODY
+ #define DO_GLOBAL_CTORS_BODY						\
+ do {									\
+   extern __MPEArmSubsystemBreak();					\
+   unsigned long nptrs = (unsigned long) __CTOR_LIST__[0];		\
+   unsigned i;								\
+   if (nptrs == -1)							\
+     for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++);		\
+   for (i = nptrs; i >= 1; i--)						\
+     __CTOR_LIST__[i] ();						\
+   __MPEArmSubsystemBreak();   						\
+ } while (0) 
+ 
+ /* HPUX needs gcc_plt_call for gdb. Since gdb is not yet running on
+  * MPE and I think that gcc_plt_call will need an MPE variant, use
+  * the following in lieu of the DO_GLOBAL_DTORS_BODY declared in pa.h
+  */
+ #undef DO_GLOBAL_DTORS_BODY
+ #define DO_GLOBAL_DTORS_BODY			\
+ do {						\
+   func_ptr *p;					\
+   for (p = __DTOR_LIST__ + 1; *p; )		\
+     (*p++) ();					\
+ } while (0)
+ 
+ 
+ /* Gotta worry about priv_lev on MPE, so this is different from
+  * the HP-UX defn.
+  */
+ #undef  ASM_DECLARE_FUNCTION_NAME
+ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
+     do { tree fntype = TREE_TYPE (TREE_TYPE (DECL));			\
+ 	 tree tree_type = TREE_TYPE (DECL);				\
+ 	 tree parm;							\
+ 	 int i;								\
+ 	 if (TREE_PUBLIC (DECL) || TARGET_GAS)				\
+ 	   { extern int current_function_varargs;			\
+ 	     if (TREE_PUBLIC (DECL))					\
+ 	       {							\
+ 		 fputs ("\t.EXPORT ", FILE);				\
+ 		 assemble_name (FILE, NAME);				\
+ 		 fputs (",ENTRY,PRIV_LEV=3", FILE);			\
+ 	       }							\
+ 	     else							\
+ 	       {							\
+ 		 fputs ("\t.PARAM ", FILE);				\
+ 		 assemble_name (FILE, NAME);				\
+ 		 fputs (",PRIV_LEV=3", FILE);				\
+ 	       }							\
+ 	     if (TARGET_PORTABLE_RUNTIME)				\
+ 	       {							\
+ 		 fputs (",ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO,", FILE);	\
+ 		 fputs ("RTNVAL=NO\n", FILE);				\
+ 		 break;							\
+ 	       }							\
+ 	     for (parm = DECL_ARGUMENTS (DECL), i = 0; parm && i < 4;	\
+ 		  parm = TREE_CHAIN (parm))				\
+ 	       {							\
+ 		 if (TYPE_MODE (DECL_ARG_TYPE (parm)) == SFmode		\
+ 		     && ! TARGET_SOFT_FLOAT)				\
+ 		   fprintf (FILE, ",ARGW%d=FR", i++);			\
+ 		 else if (TYPE_MODE (DECL_ARG_TYPE (parm)) == DFmode	\
+ 			  && ! TARGET_SOFT_FLOAT)			\
+ 		   {							\
+ 		     if (i <= 2)					\
+ 		       {						\
+ 			 if (i == 1) i++;				\
+ 			 ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++);	\
+ 		       }						\
+ 		     else						\
+ 		       break;						\
+ 		   }							\
+ 		 else							\
+ 		   {							\
+ 		     int arg_size =					\
+ 		       FUNCTION_ARG_SIZE (TYPE_MODE (DECL_ARG_TYPE (parm)),\
+ 					  DECL_ARG_TYPE (parm));	\
+ 		     /* Passing structs by invisible reference uses	\
+ 			one general register.  */			\
+ 		     if (arg_size > 2					\
+ 			 || TREE_ADDRESSABLE (DECL_ARG_TYPE (parm)))	\
+ 		       arg_size = 1;					\
+ 		     if (arg_size == 2 && i <= 2)			\
+ 		       {						\
+ 			 if (i == 1) i++;				\
+ 			 fprintf (FILE, ",ARGW%d=GR", i++);		\
+ 			 fprintf (FILE, ",ARGW%d=GR", i++);		\
+ 		       }						\
+ 		     else if (arg_size == 1)				\
+ 		       fprintf (FILE, ",ARGW%d=GR", i++);		\
+ 		     else						\
+ 		       i += arg_size;					\
+ 		   }							\
+ 	       }							\
+ 	     /* anonymous args */					\
+ 	     if ((TYPE_ARG_TYPES (tree_type) != 0			\
+ 		  && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (tree_type)))\
+ 		      != void_type_node))				\
+ 		 || current_function_varargs)				\
+ 	       {							\
+ 		 for (; i < 4; i++)					\
+ 		   fprintf (FILE, ",ARGW%d=GR", i);			\
+ 	       }							\
+ 	     if (TYPE_MODE (fntype) == DFmode && ! TARGET_SOFT_FLOAT)	\
+ 	       fputs (DFMODE_RETURN_STRING, FILE);			\
+ 	     else if (TYPE_MODE (fntype) == SFmode && ! TARGET_SOFT_FLOAT) \
+ 	       fputs (SFMODE_RETURN_STRING, FILE);			\
+ 	     else if (fntype != void_type_node)				\
+ 	       fputs (",RTNVAL=GR", FILE);				\
+ 	     fputs ("\n", FILE);					\
+ 	   }} while (0)
+ 
+ /* This is another ugly hack. Compilation units must be named
+  * if we ever want to extract them by name. Since making libgcc
+  * does this, I added a new pseudo command .compiler that is used
+  * to communicate the names to gas.
+  */
+ #undef ASM_IDENTIFY_GCC
+ #define ASM_IDENTIFY_GCC(FILE) 						\
+ 	do {								\
+ 		fputs ("; gcc_compiled.:\n", FILE);			\
+ 		fprintf (FILE, "\t.compiler \"%s %s %s\"\n",		\
+ 			 main_input_filename,				\
+ 			 "GNU_C_Compiler",				\
+ 			 version_string);				\
+ 	} while (0)
+ 
+ 
+ /*
+  * Long double support for MPE. The Quad functions are part of the PRO
+  * ABI, but it appears that I'm the only one interested in Quad support
+  * on PA, so I'll declare and support it only for MPE.
+  */
+ #undef LONG_DOUBLE_TYPE_SIZE
+ #define LONG_DOUBLE_TYPE_SIZE 128
+ 
+ /* This is how to output an assembler line defining a `long double'
constant. */
+ 
+ #undef ASM_OUTPUT_LONG_DOUBLE
+ #define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE)  \
+   do { long l[4];							\
+        REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l);			\
+        fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[0], l[1]);	\
+        fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[2], l[3]);	\
+      } while (0)
+ 
+ #undef INIT_TARGET_OPTABS
+ #define INIT_TARGET_OPTABS						\
+   do {									\
+     add_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, ADDTF3_LIBCALL);			\
+     sub_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, SUBTF3_LIBCALL);			\
+     smul_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, MULTF3_LIBCALL);			\
+     flodiv_optab->handlers[(int) TFmode].libfunc			\
+       = gen_rtx_SYMBOL_REF (Pmode, DIVTF3_LIBCALL);			\
+     neg_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, NEGTF2_LIBCALL);			\
+     eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL);          \
+     netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL);          \
+     gttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GTTF2_LIBCALL);          \
+     getf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GETF2_LIBCALL);          \
+     lttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LTTF2_LIBCALL);          \
+     letf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LETF2_LIBCALL);          \
+     trunctfsf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFSF2_LIBCALL);   \
+     trunctfdf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFDF2_LIBCALL);   \
+     extendsftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDSFTF2_LIBCALL); \
+     extenddftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDDFTF2_LIBCALL); \
+     floatsitf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATSITF2_LIBCALL);    \
+     floatditf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATDITF2_LIBCALL);    \
+     fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL);  \
+     fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL);  \
+     fixunstfsi_libfunc							\
+       = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL);		\
+     fixunstfdi_libfunc							\
+       = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFDI2_LIBCALL);		\
+     sqrt_optab->handlers[(int) TFmode].libfunc			\
+ 	= gen_rtx_SYMBOL_REF (Pmode, "_U_Qfsqrt");			\
+   } while (0)
+ 
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fputs (" (hppa - MPE Threaded)", stderr);

--
Mark Klein                                 DIS International, Ltd.
http://www.dis.com                         415-892-8400
PGP Public Key Available			

WARNING: multiple messages have this Message-ID
From: Mark Klein <mklein@dis.com>
To: law@cygnus.com
Cc: gcc@gcc.gnu.org
Subject: Re: MPE Port
Date: Thu, 30 Sep 1999 18:02:00 -0000	[thread overview]
Message-ID: <4.1.19990906102304.00c72c80@garfield.dis.com> (raw)
Message-ID: <19990930180200.Jut5jlDDcvbSvwCevTif9DegaDISiZjHD0h8WlshKPQ@z> (raw)

Sat Sep  4 18:00:00 PDT 1999 Mark Klein (mklein@dis.com)

        * pa/pa-mpeix.h: New file for MPE port.

*** egcs/gcc/config/pa/pa-mpeix.h	Wed Dec 31 16:00:00 1969
--- egcs-ss/gcc/config/pa/pa-mpeix.h	Mon Aug 30 21:52:06 1999
***************
*** 0 ****
--- 1,240 ----
+ /* Definitions of target machine for GNU compiler, for MPEiX.
+    Contributed by Mark Klein <mklein@dis.com>
+    Copyright (C) 1998 Free Software Foundation, Inc.
+ 
+ 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_GAS | MASK_JUMP_IN_DELAY | MASK_USE_MILLICODE)
+ 
+ /* MPE (as of MPE/iX 6.5) still uses older millicode than HP-UX. */
+ #undef  TARGET_NEW_MILLICODE
+ #define TARGET_NEW_MILLICODE 0
+
+ /* Make GCC agree with types.h.  */
+ #undef SIZE_TYPE
+ #undef PTRDIFF_TYPE
+ 
+ #define SIZE_TYPE "unsigned int"
+ #define PTRDIFF_TYPE "int"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC ""
+ 
+ #undef LIB_SPEC
+ #define LIB_SPEC "%{!p:%{!pg:%{!threads:-lc}}}%{p:-lc_p}%{pg:-lc_p}
%{threads:/SYS/PUB/start.o -WL,xl=threadxl.pub.sys}"
+ 
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "-Dhppa -Dhp3000s900 -D__hp3000s900 -Dhp3k9
-Dmpeix -Dhp3000 -DREVARGV -Asystem(mpeix) -Acpu(hppa) -Amachine(hppa)"
+   
+ #undef LDD_SUFFIX
+ 
+ /* Readonly data on MPE must be in $DATA$ to be available across
+    space boundaries for the intrinsic mechanism.
+  */
+ #undef SELECT_RTX_SECTION
+ #define SELECT_RTX_SECTION(MODE,RTX) data_section ();
+ 
+ #undef READONLY_DATA_ASM_OP
+ #define READONLY_DATA_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $DATA$\n"
+   
+ /* Ugly hack, but I don't see any other way.
+  * Gotta enable the <Control Y> traps, otherwise SIG_INT won't work.
+  */
+ #undef DO_GLOBAL_CTORS_BODY
+ #define DO_GLOBAL_CTORS_BODY						\
+ do {									\
+   extern __MPEArmSubsystemBreak();					\
+   unsigned long nptrs = (unsigned long) __CTOR_LIST__[0];		\
+   unsigned i;								\
+   if (nptrs == -1)							\
+     for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++);		\
+   for (i = nptrs; i >= 1; i--)						\
+     __CTOR_LIST__[i] ();						\
+   __MPEArmSubsystemBreak();   						\
+ } while (0) 
+ 
+ /* HPUX needs gcc_plt_call for gdb. Since gdb is not yet running on
+  * MPE and I think that gcc_plt_call will need an MPE variant, use
+  * the following in lieu of the DO_GLOBAL_DTORS_BODY declared in pa.h
+  */
+ #undef DO_GLOBAL_DTORS_BODY
+ #define DO_GLOBAL_DTORS_BODY			\
+ do {						\
+   func_ptr *p;					\
+   for (p = __DTOR_LIST__ + 1; *p; )		\
+     (*p++) ();					\
+ } while (0)
+ 
+ 
+ /* Gotta worry about priv_lev on MPE, so this is different from
+  * the HP-UX defn.
+  */
+ #undef  ASM_DECLARE_FUNCTION_NAME
+ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
+     do { tree fntype = TREE_TYPE (TREE_TYPE (DECL));			\
+ 	 tree tree_type = TREE_TYPE (DECL);				\
+ 	 tree parm;							\
+ 	 int i;								\
+ 	 if (TREE_PUBLIC (DECL) || TARGET_GAS)				\
+ 	   { extern int current_function_varargs;			\
+ 	     if (TREE_PUBLIC (DECL))					\
+ 	       {							\
+ 		 fputs ("\t.EXPORT ", FILE);				\
+ 		 assemble_name (FILE, NAME);				\
+ 		 fputs (",ENTRY,PRIV_LEV=3", FILE);			\
+ 	       }							\
+ 	     else							\
+ 	       {							\
+ 		 fputs ("\t.PARAM ", FILE);				\
+ 		 assemble_name (FILE, NAME);				\
+ 		 fputs (",PRIV_LEV=3", FILE);				\
+ 	       }							\
+ 	     if (TARGET_PORTABLE_RUNTIME)				\
+ 	       {							\
+ 		 fputs (",ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO,", FILE);	\
+ 		 fputs ("RTNVAL=NO\n", FILE);				\
+ 		 break;							\
+ 	       }							\
+ 	     for (parm = DECL_ARGUMENTS (DECL), i = 0; parm && i < 4;	\
+ 		  parm = TREE_CHAIN (parm))				\
+ 	       {							\
+ 		 if (TYPE_MODE (DECL_ARG_TYPE (parm)) == SFmode		\
+ 		     && ! TARGET_SOFT_FLOAT)				\
+ 		   fprintf (FILE, ",ARGW%d=FR", i++);			\
+ 		 else if (TYPE_MODE (DECL_ARG_TYPE (parm)) == DFmode	\
+ 			  && ! TARGET_SOFT_FLOAT)			\
+ 		   {							\
+ 		     if (i <= 2)					\
+ 		       {						\
+ 			 if (i == 1) i++;				\
+ 			 ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++);	\
+ 		       }						\
+ 		     else						\
+ 		       break;						\
+ 		   }							\
+ 		 else							\
+ 		   {							\
+ 		     int arg_size =					\
+ 		       FUNCTION_ARG_SIZE (TYPE_MODE (DECL_ARG_TYPE (parm)),\
+ 					  DECL_ARG_TYPE (parm));	\
+ 		     /* Passing structs by invisible reference uses	\
+ 			one general register.  */			\
+ 		     if (arg_size > 2					\
+ 			 || TREE_ADDRESSABLE (DECL_ARG_TYPE (parm)))	\
+ 		       arg_size = 1;					\
+ 		     if (arg_size == 2 && i <= 2)			\
+ 		       {						\
+ 			 if (i == 1) i++;				\
+ 			 fprintf (FILE, ",ARGW%d=GR", i++);		\
+ 			 fprintf (FILE, ",ARGW%d=GR", i++);		\
+ 		       }						\
+ 		     else if (arg_size == 1)				\
+ 		       fprintf (FILE, ",ARGW%d=GR", i++);		\
+ 		     else						\
+ 		       i += arg_size;					\
+ 		   }							\
+ 	       }							\
+ 	     /* anonymous args */					\
+ 	     if ((TYPE_ARG_TYPES (tree_type) != 0			\
+ 		  && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (tree_type)))\
+ 		      != void_type_node))				\
+ 		 || current_function_varargs)				\
+ 	       {							\
+ 		 for (; i < 4; i++)					\
+ 		   fprintf (FILE, ",ARGW%d=GR", i);			\
+ 	       }							\
+ 	     if (TYPE_MODE (fntype) == DFmode && ! TARGET_SOFT_FLOAT)	\
+ 	       fputs (DFMODE_RETURN_STRING, FILE);			\
+ 	     else if (TYPE_MODE (fntype) == SFmode && ! TARGET_SOFT_FLOAT) \
+ 	       fputs (SFMODE_RETURN_STRING, FILE);			\
+ 	     else if (fntype != void_type_node)				\
+ 	       fputs (",RTNVAL=GR", FILE);				\
+ 	     fputs ("\n", FILE);					\
+ 	   }} while (0)
+ 
+ /* This is another ugly hack. Compilation units must be named
+  * if we ever want to extract them by name. Since making libgcc
+  * does this, I added a new pseudo command .compiler that is used
+  * to communicate the names to gas.
+  */
+ #undef ASM_IDENTIFY_GCC
+ #define ASM_IDENTIFY_GCC(FILE) 						\
+ 	do {								\
+ 		fputs ("; gcc_compiled.:\n", FILE);			\
+ 		fprintf (FILE, "\t.compiler \"%s %s %s\"\n",		\
+ 			 main_input_filename,				\
+ 			 "GNU_C_Compiler",				\
+ 			 version_string);				\
+ 	} while (0)
+ 
+ 
+ /*
+  * Long double support for MPE. The Quad functions are part of the PRO
+  * ABI, but it appears that I'm the only one interested in Quad support
+  * on PA, so I'll declare and support it only for MPE.
+  */
+ #undef LONG_DOUBLE_TYPE_SIZE
+ #define LONG_DOUBLE_TYPE_SIZE 128
+ 
+ /* This is how to output an assembler line defining a `long double'
constant. */
+ 
+ #undef ASM_OUTPUT_LONG_DOUBLE
+ #define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE)  \
+   do { long l[4];							\
+        REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l);			\
+        fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[0], l[1]);	\
+        fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[2], l[3]);	\
+      } while (0)
+ 
+ #undef INIT_TARGET_OPTABS
+ #define INIT_TARGET_OPTABS						\
+   do {									\
+     add_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, ADDTF3_LIBCALL);			\
+     sub_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, SUBTF3_LIBCALL);			\
+     smul_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, MULTF3_LIBCALL);			\
+     flodiv_optab->handlers[(int) TFmode].libfunc			\
+       = gen_rtx_SYMBOL_REF (Pmode, DIVTF3_LIBCALL);			\
+     neg_optab->handlers[(int) TFmode].libfunc				\
+       = gen_rtx_SYMBOL_REF (Pmode, NEGTF2_LIBCALL);			\
+     eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL);          \
+     netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL);          \
+     gttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GTTF2_LIBCALL);          \
+     getf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GETF2_LIBCALL);          \
+     lttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LTTF2_LIBCALL);          \
+     letf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LETF2_LIBCALL);          \
+     trunctfsf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFSF2_LIBCALL);   \
+     trunctfdf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFDF2_LIBCALL);   \
+     extendsftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDSFTF2_LIBCALL); \
+     extenddftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDDFTF2_LIBCALL); \
+     floatsitf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATSITF2_LIBCALL);    \
+     floatditf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATDITF2_LIBCALL);    \
+     fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL);  \
+     fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL);  \
+     fixunstfsi_libfunc							\
+       = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL);		\
+     fixunstfdi_libfunc							\
+       = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFDI2_LIBCALL);		\
+     sqrt_optab->handlers[(int) TFmode].libfunc			\
+ 	= gen_rtx_SYMBOL_REF (Pmode, "_U_Qfsqrt");			\
+   } while (0)
+ 
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fputs (" (hppa - MPE Threaded)", stderr);

--
Mark Klein                                 DIS International, Ltd.
http://www.dis.com                         415-892-8400
PGP Public Key Available			

             reply	other threads:[~1999-09-06 10:39 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-09-06 10:39 Mark Klein [this message]
1999-09-07  3:20 ` Jeffrey A Law
1999-09-07  6:46   ` Mark Klein
1999-09-08  0:43     ` Jeffrey A Law
1999-09-30 18:02       ` Jeffrey A Law
1999-09-30 18:02     ` Mark Klein
1999-09-30 18:02   ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
  -- strict thread matches above, loose matches on Subject: below --
1999-09-07  8:42 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-10-25 22:41 ` Jeffrey A Law
1999-10-26  7:03   ` Mark Klein
1999-10-26 19:12     ` Jeffrey A Law
1999-10-26 19:52       ` Mark Klein
1999-10-31 23:35         ` Mark Klein
1999-10-31 23:35       ` Jeffrey A Law
1999-10-31 23:35     ` Mark Klein
1999-10-31 23:35   ` Jeffrey A Law
1999-09-06 10:40 Mark Klein
1999-09-08  1:41 ` Jeffrey A Law
1999-09-08  6:37   ` Mark Klein
1999-09-30 18:02     ` Mark Klein
1999-09-30 18:02   ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-08  1:39 ` Jeffrey A Law
1999-09-08  6:35   ` Mark Klein
1999-09-15  2:52     ` Jeffrey A Law
1999-09-15  8:26       ` Mark Klein
1999-09-30 18:02         ` Mark Klein
1999-09-30 18:02       ` Jeffrey A Law
1999-09-30 18:02     ` Mark Klein
1999-09-30 18:02   ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-08  1:49 ` Jeffrey A Law
1999-09-08 20:31   ` Mark Klein
1999-09-30 18:02     ` Mark Klein
1999-09-30 18:02   ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-10-25 22:32 ` Jeffrey A Law
1999-10-26  6:51   ` Mark Klein
1999-10-26 19:05     ` Jeffrey A Law
1999-10-26 19:21       ` Mark Klein
1999-10-31 23:35         ` Mark Klein
1999-10-31 23:35       ` Jeffrey A Law
1999-10-31 23:35     ` Mark Klein
1999-10-31 23:35   ` Jeffrey A Law
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-07  2:38 ` Jeffrey A Law
1999-09-07  6:39   ` Mark Klein
1999-09-08  0:45     ` Jeffrey A Law
1999-09-08 20:04       ` Mark Klein
1999-09-15  2:47         ` Jeffrey A Law
1999-09-15  8:32           ` Mark Klein
1999-09-30 18:02             ` Mark Klein
1999-09-30 18:02           ` Jeffrey A Law
1999-10-09 20:18           ` Mark Klein
1999-10-14  4:03             ` Jeffrey A Law
1999-10-14  7:20               ` Mark Klein
1999-10-14 10:45                 ` Jeffrey A Law
1999-10-14 11:05                   ` Mark Klein
1999-10-31 23:35                     ` Mark Klein
1999-10-31 23:35                   ` Jeffrey A Law
1999-10-31 23:35                 ` Mark Klein
1999-10-31 23:35               ` Jeffrey A Law
1999-10-31 23:35             ` Mark Klein
1999-11-08 19:34           ` Mark Klein
1999-11-08 19:54             ` Jeffrey A Law
1999-11-09  6:52               ` Mark Klein
1999-11-30 23:37                 ` Mark Klein
1999-11-30 23:37               ` Jeffrey A Law
1999-11-30 23:37             ` Mark Klein
1999-09-30 18:02         ` Mark Klein
1999-09-30 18:02       ` Jeffrey A Law
1999-09-30 18:02     ` Mark Klein
1999-09-30 18:02   ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-08  1:40 ` Jeffrey A Law
1999-09-30 18:02   ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:39 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:39 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-08-27 17:20 HARD_REGNO_MODE_OK on PA-RISC (revisited) Mark Klein
1999-08-29  3:19 ` Jeffrey A Law
1999-09-06 10:39   ` MPE Port Mark Klein
1999-09-30 18:02     ` Mark Klein

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4.1.19990906102304.00c72c80@garfield.dis.com \
    --to=mklein@dis.com \
    --cc=gcc@gcc.gnu.org \
    --cc=law@cygnus.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).