aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Van Artsdalen <jrv@gnu.org>1993-01-08 09:52:03 +0000
committerJames Van Artsdalen <jrv@gnu.org>1993-01-08 09:52:03 +0000
commit60c9835ecc279cb9511b2ed79a3770e3be542d1e (patch)
tree0ac48e52370afef05d1811656c186cf69a76b818
parent37d7333eae1b52c1b24ef34fe2d74093cadfe1d6 (diff)
downloadgcc-60c9835ecc279cb9511b2ed79a3770e3be542d1e.zip
gcc-60c9835ecc279cb9511b2ed79a3770e3be542d1e.tar.gz
gcc-60c9835ecc279cb9511b2ed79a3770e3be542d1e.tar.bz2
(perform_*): Move to i386/perform.h.
Include i386/perform.h. From-SVN: r3155
-rw-r--r--gcc/config/i386/386bsd.h79
-rw-r--r--gcc/config/i386/mach.h74
-rw-r--r--gcc/config/i386/osfrose.h76
3 files changed, 9 insertions, 220 deletions
diff --git a/gcc/config/i386/386bsd.h b/gcc/config/i386/386bsd.h
index a67415f..7fd674d 100644
--- a/gcc/config/i386/386bsd.h
+++ b/gcc/config/i386/386bsd.h
@@ -5,6 +5,9 @@
#include "i386/gstabs.h"
+/* Get perform_* macros to build libgcc.a. */
+#include "i386/perform.h"
+
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Di386 -D____386BSD____ -D__386BSD__ -DBSD_NET2"
@@ -57,82 +60,6 @@
#undef ASM_APP_OFF
#define ASM_APP_OFF "#NO_APP\n"
-/* Defines to be able to build libgcc.a with GCC.
- These are the same as in i386mach.h. */
-
-/* It might seem that these are not important, since gcc 2 will never
- call libgcc for these functions. But programs might be linked with
- code compiled by gcc 1, and then these will be used. */
-
-/* The arg names used to be a and b, but `a' appears inside strings
- and that confuses non-ANSI cpp. */
-
-#define perform_udivsi3(arg0,arg1) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- dx = 0; \
- ax = arg0; \
- asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (arg1), "d" (dx)); \
- return ax; \
-}
-
-#define perform_divsi3(arg0,arg1) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- ax = arg0; \
- asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (arg1)); \
- return ax; \
-}
-
-#define perform_umodsi3(arg0,arg1) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- dx = 0; \
- ax = arg0; \
- asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (arg1), "d" (dx)); \
- return dx; \
-}
-
-#define perform_modsi3(arg0,arg1) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- ax = arg0; \
- asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (arg1)); \
- return dx; \
-}
-
-
-#define perform_fixdfsi(arg0) \
-{ \
- auto unsigned short ostatus; \
- auto unsigned short nstatus; \
- auto int ret; \
- auto double tmp; \
- \
- &ostatus; /* guarantee these land in memory */ \
- &nstatus; \
- &ret; \
- &tmp; \
- \
- asm volatile ("fnstcw %0" : "=m" (ostatus)); \
- nstatus = ostatus | 0x0c00; \
- asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus)); \
- tmp = arg0; \
- asm volatile ("fldl %0" : /* no outputs */ : "m" (tmp)); \
- asm volatile ("fistpl %0" : "=m" (ret)); \
- asm volatile ("fldcw %0" : /* no outputs */ : "m" (ostatus)); \
- \
- return ret; \
-}
-
/* The following macros are stolen from i386v4.h */
/* These have to be defined to get PIC code correct */
diff --git a/gcc/config/i386/mach.h b/gcc/config/i386/mach.h
index 71a1331..964f451 100644
--- a/gcc/config/i386/mach.h
+++ b/gcc/config/i386/mach.h
@@ -6,6 +6,9 @@
#include "i386/gstabs.h"
+/* Get perform_* macros to build libgcc.a. */
+#include "i386/perform.h"
+
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Di386 -DMACH"
@@ -14,74 +17,3 @@
/* Make stddef.h agree with types.h. */
#define SIZE_TYPE "long int"
-
-/* Defines to be able to build libgcc.a with GCC. */
-
-/* It might seem that these are not important, since gcc 2 will never
- call libgcc for these functions. But programs might be linked with
- code compiled by gcc 1, and then these will be used. */
-
-#define perform_udivsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- dx = 0; \
- ax = a; \
- asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b), "d" (dx)); \
- return ax; \
-}
-
-#define perform_divsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- ax = a; \
- asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b)); \
- return ax; \
-}
-
-#define perform_umodsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- dx = 0; \
- ax = a; \
- asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b), "d" (dx)); \
- return dx; \
-}
-
-#define perform_modsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- ax = a; \
- asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b)); \
- return dx; \
-}
-
-#define perform_fixdfsi(a) \
-{ \
- auto unsigned short ostatus; \
- auto unsigned short nstatus; \
- auto int ret; \
- auto double tmp; \
- \
- &ostatus; /* guarantee these land in memory */ \
- &nstatus; \
- &ret; \
- &tmp; \
- \
- asm volatile ("fnstcw %0" : "=m" (ostatus)); \
- nstatus = ostatus | 0x0c00; \
- asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus)); \
- tmp = a; \
- asm volatile ("fldl %0" : /* no outputs */ : "m" (tmp)); \
- asm volatile ("fistpl %0" : "=m" (ret)); \
- asm volatile ("fldcw %0" : /* no outputs */ : "m" (ostatus)); \
- \
- return ret; \
-}
diff --git a/gcc/config/i386/osfrose.h b/gcc/config/i386/osfrose.h
index 3af233c..abd7d40 100644
--- a/gcc/config/i386/osfrose.h
+++ b/gcc/config/i386/osfrose.h
@@ -24,6 +24,9 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "halfpic.h"
#include "i386/gstabs.h"
+/* Get perform_* macros to build libgcc.a. */
+#include "i386/perform.h"
+
#define OSF_OS
#undef WORD_SWITCH_TAKES_ARG
@@ -372,76 +375,3 @@ while (0)
/* Generate calls to memcpy, etc., not bcopy, etc. */
#define TARGET_MEM_FUNCTIONS
-
-
-
-/* Defines to be able to build libgcc.a with GCC. */
-
-/* It might seem that these are not important, since gcc 2 will never
- call libgcc for these functions. But programs might be linked with
- code compiled by gcc 1, and then these will be used. */
-
-#define perform_udivsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- dx = 0; \
- ax = a; \
- asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b), "d" (dx)); \
- return ax; \
-}
-
-#define perform_divsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- ax = a; \
- asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b)); \
- return ax; \
-}
-
-#define perform_umodsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- dx = 0; \
- ax = a; \
- asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b), "d" (dx)); \
- return dx; \
-}
-
-#define perform_modsi3(a,b) \
-{ \
- register int dx asm("dx"); \
- register int ax asm("ax"); \
- \
- ax = a; \
- asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b)); \
- return dx; \
-}
-
-#define perform_fixdfsi(a) \
-{ \
- auto unsigned short ostatus; \
- auto unsigned short nstatus; \
- auto int ret; \
- auto double tmp; \
- \
- &ostatus; /* guarantee these land in memory */ \
- &nstatus; \
- &ret; \
- &tmp; \
- \
- asm volatile ("fnstcw %0" : "=m" (ostatus)); \
- nstatus = ostatus | 0x0c00; \
- asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus)); \
- tmp = a; \
- asm volatile ("fldl %0" : /* no outputs */ : "m" (tmp)); \
- asm volatile ("fistpl %0" : "=m" (ret)); \
- asm volatile ("fldcw %0" : /* no outputs */ : "m" (ostatus)); \
- \
- return ret; \
-}