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