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