|
|
1.1 root 1: /* Configuration for an i386 running Mach as the target machine. */
2: #include "i386gas.h"
3:
4: #undef CPP_PREDEFINES
5: #define CPP_PREDEFINES "-Dunix -Di386 -DMACH"
6:
7: /* Specify extra dir to search for include files. */
8: #define SYSTEM_INCLUDE_DIR "/usr/mach/include"
9:
10: /* Defines to be able to build libgcc.a with GCC. */
11:
12: #define perform_udivsi3(a,b) \
13: { \
14: register int dx asm("dx"); \
15: register int ax asm("ax"); \
16: \
17: dx = 0; \
18: ax = a; \
19: asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b), "d" (dx)); \
20: return ax; \
21: }
22:
23: #define perform_divsi3(a,b) \
24: { \
25: register int dx asm("dx"); \
26: register int ax asm("ax"); \
27: \
28: ax = a; \
29: asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b)); \
30: return ax; \
31: }
32:
33: #define perform_umodsi3(a,b) \
34: { \
35: register int dx asm("dx"); \
36: register int ax asm("ax"); \
37: \
38: dx = 0; \
39: ax = a; \
40: asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b), "d" (dx)); \
41: return dx; \
42: }
43:
44: #define perform_modsi3(a,b) \
45: { \
46: register int dx asm("dx"); \
47: register int ax asm("ax"); \
48: \
49: ax = a; \
50: asm ("cltd\n\tidivl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (b)); \
51: return dx; \
52: }
53:
54: #define perform_fix_truncdfsi2(a) \
55: { \
56: auto unsigned short ostatus; \
57: auto unsigned short nstatus; \
58: auto int ret; \
59: \
60: &ostatus; /* guarantee these land in memory */ \
61: &nstatus; \
62: &ret; \
63: \
64: asm volatile ("fnstcw %0" : "=m" (ostatus)); \
65: nstatus = ostatus | 0x0c00; \
66: asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus)); \
67: asm volatile ("fldl %0" : /* no outputs */ : "m" (a)); \
68: asm volatile ("fistpl %0" : "=m" (ret)); \
69: asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus)); \
70: \
71: return ret; \
72: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.