1*f8bc6aafSDavid du Colombier #define nil ((void*)0) 2*f8bc6aafSDavid du Colombier typedef unsigned short ushort; 3*f8bc6aafSDavid du Colombier typedef unsigned char uchar; 4*f8bc6aafSDavid du Colombier typedef unsigned long ulong; 5*f8bc6aafSDavid du Colombier typedef unsigned int uint; 6*f8bc6aafSDavid du Colombier typedef signed char schar; 7*f8bc6aafSDavid du Colombier typedef long long vlong; 8*f8bc6aafSDavid du Colombier typedef unsigned long long uvlong; 9*f8bc6aafSDavid du Colombier typedef unsigned long long uintptr; 10*f8bc6aafSDavid du Colombier typedef unsigned long usize; 11*f8bc6aafSDavid du Colombier typedef uint Rune; 12*f8bc6aafSDavid du Colombier typedef union FPdbleword FPdbleword; 13*f8bc6aafSDavid du Colombier typedef uintptr jmp_buf[2]; 14*f8bc6aafSDavid du Colombier #define JMPBUFSP 0 15*f8bc6aafSDavid du Colombier #define JMPBUFPC 1 16*f8bc6aafSDavid du Colombier #define JMPBUFDPC 0 17*f8bc6aafSDavid du Colombier typedef unsigned int mpdigit; /* for /sys/include/mp.h */ 18*f8bc6aafSDavid du Colombier typedef unsigned char u8int; 19*f8bc6aafSDavid du Colombier typedef unsigned short u16int; 20*f8bc6aafSDavid du Colombier typedef unsigned int u32int; 21*f8bc6aafSDavid du Colombier typedef unsigned long long u64int; 22*f8bc6aafSDavid du Colombier 23*f8bc6aafSDavid du Colombier /* FCR (FCR31) */ 24*f8bc6aafSDavid du Colombier #define FPINEX (1<<7) /* enables */ 25*f8bc6aafSDavid du Colombier #define FPUNFL (1<<8) 26*f8bc6aafSDavid du Colombier #define FPOVFL (1<<9) 27*f8bc6aafSDavid du Colombier #define FPZDIV (1<<10) 28*f8bc6aafSDavid du Colombier #define FPINVAL (1<<11) 29*f8bc6aafSDavid du Colombier #define FPRNR (0<<0) /* rounding modes */ 30*f8bc6aafSDavid du Colombier #define FPRZ (1<<0) 31*f8bc6aafSDavid du Colombier #define FPRPINF (2<<0) 32*f8bc6aafSDavid du Colombier #define FPRNINF (3<<0) 33*f8bc6aafSDavid du Colombier #define FPRMASK (3<<0) 34*f8bc6aafSDavid du Colombier #define FPPEXT 0 35*f8bc6aafSDavid du Colombier #define FPPSGL 0 36*f8bc6aafSDavid du Colombier #define FPPDBL 0 37*f8bc6aafSDavid du Colombier #define FPPMASK 0 38*f8bc6aafSDavid du Colombier #define FPCOND (1<<23) 39*f8bc6aafSDavid du Colombier 40*f8bc6aafSDavid du Colombier /* FSR (also FCR31) */ 41*f8bc6aafSDavid du Colombier #define FPAINEX (1<<2) /* flags */ 42*f8bc6aafSDavid du Colombier #define FPAOVFL (1<<4) 43*f8bc6aafSDavid du Colombier #define FPAUNFL (1<<3) 44*f8bc6aafSDavid du Colombier #define FPAZDIV (1<<5) 45*f8bc6aafSDavid du Colombier #define FPAINVAL (1<<6) 46*f8bc6aafSDavid du Colombier 47*f8bc6aafSDavid du Colombier union FPdbleword 48*f8bc6aafSDavid du Colombier { 49*f8bc6aafSDavid du Colombier double x; 50*f8bc6aafSDavid du Colombier struct { /* little endian */ 51*f8bc6aafSDavid du Colombier ulong lo; 52*f8bc6aafSDavid du Colombier ulong hi; 53*f8bc6aafSDavid du Colombier }; 54*f8bc6aafSDavid du Colombier }; 55*f8bc6aafSDavid du Colombier 56*f8bc6aafSDavid du Colombier /* stdarg */ 57*f8bc6aafSDavid du Colombier typedef char* va_list; 58*f8bc6aafSDavid du Colombier #define va_start(list, start) list =\ 59*f8bc6aafSDavid du Colombier (sizeof(start) < 8?\ 60*f8bc6aafSDavid du Colombier (char*)((vlong*)&(start)+1):\ 61*f8bc6aafSDavid du Colombier (char*)(&(start)+1)) 62*f8bc6aafSDavid du Colombier #define va_end(list)\ 63*f8bc6aafSDavid du Colombier USED(list) 64*f8bc6aafSDavid du Colombier #define va_arg(list, mode)\ 65*f8bc6aafSDavid du Colombier ((sizeof(mode) == 1)?\ 66*f8bc6aafSDavid du Colombier ((list += 8), (mode*)list)[-8]:\ 67*f8bc6aafSDavid du Colombier (sizeof(mode) == 2)?\ 68*f8bc6aafSDavid du Colombier ((list += 8), (mode*)list)[-4]:\ 69*f8bc6aafSDavid du Colombier (sizeof(mode) == 4)?\ 70*f8bc6aafSDavid du Colombier ((list += 8), (mode*)list)[-2]:\ 71*f8bc6aafSDavid du Colombier ((list += sizeof(mode)), (mode*)list)[-1]) 72