Initial revision
authorRichard Stallman <rms@gnu.org>
Sat, 22 Feb 1992 07:45:55 +0000 (07:45 +0000)
committerRichard Stallman <rms@gnu.org>
Sat, 22 Feb 1992 07:45:55 +0000 (07:45 +0000)
From-SVN: r358

gcc/config/i386/mach.h [new file with mode: 0644]

diff --git a/gcc/config/i386/mach.h b/gcc/config/i386/mach.h
new file mode 100644 (file)
index 0000000..4390a6f
--- /dev/null
@@ -0,0 +1,72 @@
+/* Configuration for an i386 running Mach as the target machine.  */
+#include "i386gas.h"
+
+#undef CPP_PREDEFINES
+#define CPP_PREDEFINES "-Dunix -Di386 -DMACH"
+
+/* Specify extra dir to search for include files.  */
+#define SYSTEM_INCLUDE_DIR "/usr/mach/include"
+\f
+/* Defines to be able to build libgcc.a with GCC.  */
+
+#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_fix_truncdfsi2(a)                                              \
+{                                                                      \
+  auto unsigned short ostatus;                                         \
+  auto unsigned short nstatus;                                         \
+  auto int ret;                                                                \
+                                                                       \
+  &ostatus;                    /* guarantee these land in memory */    \
+  &nstatus;                                                            \
+  &ret;                                                                        \
+                                                                       \
+  asm volatile ("fnstcw %0" : "=m" (ostatus));                         \
+  nstatus = ostatus | 0x0c00;                                          \
+  asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus));                \
+  asm volatile ("fldl %0" : /* no outputs */ : "m" (a));               \
+  asm volatile ("fistpl %0" : "=m" (ret));                             \
+  asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus));                \
+                                                                       \
+  return ret;                                                          \
+}