147ad9175SDavid du Colombier #define nil ((void*)0) 247ad9175SDavid du Colombier typedef unsigned short ushort; 347ad9175SDavid du Colombier typedef unsigned char uchar; 447ad9175SDavid du Colombier typedef unsigned long ulong; 547ad9175SDavid du Colombier typedef unsigned int uint; 647ad9175SDavid du Colombier typedef signed char schar; 747ad9175SDavid du Colombier typedef long long vlong; 847ad9175SDavid du Colombier typedef unsigned long long uvlong; 947ad9175SDavid du Colombier typedef unsigned long long uintptr; 1047ad9175SDavid du Colombier typedef unsigned long usize; 11*e94a8e9bSDavid du Colombier typedef uint Rune; 1247ad9175SDavid du Colombier typedef union FPdbleword FPdbleword; 1347ad9175SDavid du Colombier typedef uintptr jmp_buf[2]; 1447ad9175SDavid du Colombier #define JMPBUFSP 0 1547ad9175SDavid du Colombier #define JMPBUFPC 1 1647ad9175SDavid du Colombier #define JMPBUFDPC 0 1747ad9175SDavid du Colombier typedef unsigned int mpdigit; /* for /sys/include/mp.h */ 1847ad9175SDavid du Colombier typedef unsigned char u8int; 1947ad9175SDavid du Colombier typedef unsigned short u16int; 2047ad9175SDavid du Colombier typedef unsigned int u32int; 2147ad9175SDavid du Colombier typedef unsigned long long u64int; 2247ad9175SDavid du Colombier 2347ad9175SDavid du Colombier /* FPSCR */ 2447ad9175SDavid du Colombier #define FPSFX (1<<31) /* exception summary (sticky) */ 2547ad9175SDavid du Colombier #define FPSEX (1<<30) /* enabled exception summary */ 2647ad9175SDavid du Colombier #define FPSVX (1<<29) /* invalid operation exception summary */ 2747ad9175SDavid du Colombier #define FPSOX (1<<28) /* overflow exception OX (sticky) */ 2847ad9175SDavid du Colombier #define FPSUX (1<<27) /* underflow exception UX (sticky) */ 2947ad9175SDavid du Colombier #define FPSZX (1<<26) /* zero divide exception ZX (sticky) */ 3047ad9175SDavid du Colombier #define FPSXX (1<<25) /* inexact exception XX (sticky) */ 3147ad9175SDavid du Colombier #define FPSVXSNAN (1<<24) /* invalid operation exception for SNaN (sticky) */ 3247ad9175SDavid du Colombier #define FPSVXISI (1<<23) /* invalid operation exception for ∞-∞ (sticky) */ 3347ad9175SDavid du Colombier #define FPSVXIDI (1<<22) /* invalid operation exception for ∞/∞ (sticky) */ 3447ad9175SDavid du Colombier #define FPSVXZDZ (1<<21) /* invalid operation exception for 0/0 (sticky) */ 3547ad9175SDavid du Colombier #define FPSVXIMZ (1<<20) /* invalid operation exception for ∞*0 (sticky) */ 3647ad9175SDavid du Colombier #define FPSVXVC (1<<19) /* invalid operation exception for invalid compare (sticky) */ 3747ad9175SDavid du Colombier #define FPSFR (1<<18) /* fraction rounded */ 3847ad9175SDavid du Colombier #define FPSFI (1<<17) /* fraction inexact */ 3947ad9175SDavid du Colombier #define FPSFPRF (1<<16) /* floating point result class */ 4047ad9175SDavid du Colombier #define FPSFPCC (0xF<<12) /* <, >, =, unordered */ 4147ad9175SDavid du Colombier #define FPVXCVI (1<<8) /* enable exception for invalid integer convert (sticky) */ 4247ad9175SDavid du Colombier #define FPVE (1<<7) /* invalid operation exception enable */ 4347ad9175SDavid du Colombier #define FPOVFL (1<<6) /* enable overflow exceptions */ 4447ad9175SDavid du Colombier #define FPUNFL (1<<5) /* enable underflow */ 4547ad9175SDavid du Colombier #define FPZDIV (1<<4) /* enable zero divide */ 4647ad9175SDavid du Colombier #define FPINEX (1<<3) /* enable inexact exceptions */ 4747ad9175SDavid du Colombier #define FPRMASK (3<<0) /* rounding mode */ 4847ad9175SDavid du Colombier #define FPRNR (0<<0) 4947ad9175SDavid du Colombier #define FPRZ (1<<0) 5047ad9175SDavid du Colombier #define FPRPINF (2<<0) 5147ad9175SDavid du Colombier #define FPRNINF (3<<0) 5247ad9175SDavid du Colombier #define FPPEXT 0 5347ad9175SDavid du Colombier #define FPPSGL 0 5447ad9175SDavid du Colombier #define FPPDBL 0 5547ad9175SDavid du Colombier #define FPPMASK 0 5647ad9175SDavid du Colombier #define FPINVAL FPVE 5747ad9175SDavid du Colombier 5847ad9175SDavid du Colombier #define FPAOVFL FPSOX 5947ad9175SDavid du Colombier #define FPAINEX FPSXX 6047ad9175SDavid du Colombier #define FPAUNFL FPSUX 6147ad9175SDavid du Colombier #define FPAZDIV FPSZX 6247ad9175SDavid du Colombier #define FPAINVAL FPSVX 6347ad9175SDavid du Colombier 6447ad9175SDavid du Colombier union FPdbleword 6547ad9175SDavid du Colombier { 6647ad9175SDavid du Colombier double x; 6747ad9175SDavid du Colombier struct { /* big endian */ 6847ad9175SDavid du Colombier ulong hi; 6947ad9175SDavid du Colombier ulong lo; 7047ad9175SDavid du Colombier }; 7147ad9175SDavid du Colombier }; 7247ad9175SDavid du Colombier 7347ad9175SDavid du Colombier typedef char* va_list; 7447ad9175SDavid du Colombier #define va_start(list, start) list =\ 7547ad9175SDavid du Colombier (sizeof(start) < 8?\ 7647ad9175SDavid du Colombier (char*)((vlong*)&(start)+1):\ 7747ad9175SDavid du Colombier (char*)(&(start)+1)) 7847ad9175SDavid du Colombier #define va_end(list)\ 7947ad9175SDavid du Colombier USED(list) 8047ad9175SDavid du Colombier #define va_arg(list, mode)\ 8147ad9175SDavid du Colombier ((sizeof(mode) == 1)?\ 8247ad9175SDavid du Colombier ((mode*)(list += 8))[-1]:\ 8347ad9175SDavid du Colombier (sizeof(mode) == 2)?\ 8447ad9175SDavid du Colombier ((mode*)(list += 8))[-1]:\ 8547ad9175SDavid du Colombier (sizeof(mode) == 4)?\ 8647ad9175SDavid du Colombier ((mode*)(list += 8))[-1]:\ 8747ad9175SDavid du Colombier ((mode*)(list += sizeof(mode)))[-1]) 88