17dd7cddfSDavid du Colombier #define nil ((void*)0) 27dd7cddfSDavid du Colombier typedef unsigned short ushort; 37dd7cddfSDavid du Colombier typedef unsigned char uchar; 47dd7cddfSDavid du Colombier typedef unsigned long ulong; 57dd7cddfSDavid du Colombier typedef unsigned int uint; 67dd7cddfSDavid du Colombier typedef signed char schar; 77dd7cddfSDavid du Colombier typedef long long vlong; 87dd7cddfSDavid du Colombier typedef unsigned long long uvlong; 91517f4bcSDavid du Colombier typedef unsigned long uintptr; 105e492409SDavid du Colombier typedef unsigned long usize; 11*e94a8e9bSDavid du Colombier typedef uint Rune; 1259cc4ca5SDavid du Colombier typedef union FPdbleword FPdbleword; 137dd7cddfSDavid du Colombier typedef long jmp_buf[2]; 147dd7cddfSDavid du Colombier #define JMPBUFSP 0 157dd7cddfSDavid du Colombier #define JMPBUFPC 1 167dd7cddfSDavid du Colombier #define JMPBUFDPC 0 177dd7cddfSDavid du Colombier typedef unsigned int mpdigit; /* for /sys/include/mp.h */ 189800bf03SDavid du Colombier typedef unsigned char u8int; 199800bf03SDavid du Colombier typedef unsigned short u16int; 2059cc4ca5SDavid du Colombier typedef unsigned int u32int; 219800bf03SDavid du Colombier typedef unsigned long long u64int; 227dd7cddfSDavid du Colombier 237dd7cddfSDavid du Colombier /* FPSCR */ 247dd7cddfSDavid du Colombier #define FPSFX (1<<31) /* exception summary (sticky) */ 257dd7cddfSDavid du Colombier #define FPSEX (1<<30) /* enabled exception summary */ 267dd7cddfSDavid du Colombier #define FPSVX (1<<29) /* invalid operation exception summary */ 277dd7cddfSDavid du Colombier #define FPSOX (1<<28) /* overflow exception OX (sticky) */ 287dd7cddfSDavid du Colombier #define FPSUX (1<<27) /* underflow exception UX (sticky) */ 297dd7cddfSDavid du Colombier #define FPSZX (1<<26) /* zero divide exception ZX (sticky) */ 307dd7cddfSDavid du Colombier #define FPSXX (1<<25) /* inexact exception XX (sticky) */ 317dd7cddfSDavid du Colombier #define FPSVXSNAN (1<<24) /* invalid operation exception for SNaN (sticky) */ 327dd7cddfSDavid du Colombier #define FPSVXISI (1<<23) /* invalid operation exception for ∞-∞ (sticky) */ 337dd7cddfSDavid du Colombier #define FPSVXIDI (1<<22) /* invalid operation exception for ∞/∞ (sticky) */ 347dd7cddfSDavid du Colombier #define FPSVXZDZ (1<<21) /* invalid operation exception for 0/0 (sticky) */ 357dd7cddfSDavid du Colombier #define FPSVXIMZ (1<<20) /* invalid operation exception for ∞*0 (sticky) */ 367dd7cddfSDavid du Colombier #define FPSVXVC (1<<19) /* invalid operation exception for invalid compare (sticky) */ 377dd7cddfSDavid du Colombier #define FPSFR (1<<18) /* fraction rounded */ 387dd7cddfSDavid du Colombier #define FPSFI (1<<17) /* fraction inexact */ 397dd7cddfSDavid du Colombier #define FPSFPRF (1<<16) /* floating point result class */ 407dd7cddfSDavid du Colombier #define FPSFPCC (0xF<<12) /* <, >, =, unordered */ 417dd7cddfSDavid du Colombier #define FPVXCVI (1<<8) /* enable exception for invalid integer convert (sticky) */ 427dd7cddfSDavid du Colombier #define FPVE (1<<7) /* invalid operation exception enable */ 437dd7cddfSDavid du Colombier #define FPOVFL (1<<6) /* enable overflow exceptions */ 447dd7cddfSDavid du Colombier #define FPUNFL (1<<5) /* enable underflow */ 457dd7cddfSDavid du Colombier #define FPZDIV (1<<4) /* enable zero divide */ 467dd7cddfSDavid du Colombier #define FPINEX (1<<3) /* enable inexact exceptions */ 477dd7cddfSDavid du Colombier #define FPRMASK (3<<0) /* rounding mode */ 487dd7cddfSDavid du Colombier #define FPRNR (0<<0) 497dd7cddfSDavid du Colombier #define FPRZ (1<<0) 507dd7cddfSDavid du Colombier #define FPRPINF (2<<0) 517dd7cddfSDavid du Colombier #define FPRNINF (3<<0) 527dd7cddfSDavid du Colombier #define FPPEXT 0 537dd7cddfSDavid du Colombier #define FPPSGL 0 547dd7cddfSDavid du Colombier #define FPPDBL 0 557dd7cddfSDavid du Colombier #define FPPMASK 0 567dd7cddfSDavid du Colombier #define FPINVAL FPVE 577dd7cddfSDavid du Colombier 587dd7cddfSDavid du Colombier #define FPAOVFL FPSOX 597dd7cddfSDavid du Colombier #define FPAINEX FPSXX 607dd7cddfSDavid du Colombier #define FPAUNFL FPSUX 617dd7cddfSDavid du Colombier #define FPAZDIV FPSZX 627dd7cddfSDavid du Colombier #define FPAINVAL FPSVX 637dd7cddfSDavid du Colombier 6459cc4ca5SDavid du Colombier union FPdbleword 6559cc4ca5SDavid du Colombier { 6659cc4ca5SDavid du Colombier double x; 6759cc4ca5SDavid du Colombier struct { /* big endian */ 689a747e4fSDavid du Colombier ulong hi; 699a747e4fSDavid du Colombier ulong lo; 7059cc4ca5SDavid du Colombier }; 7159cc4ca5SDavid du Colombier }; 7259cc4ca5SDavid du Colombier 737dd7cddfSDavid du Colombier typedef char* va_list; 749a747e4fSDavid du Colombier #define va_start(list, start) list =\ 759a747e4fSDavid du Colombier (sizeof(start) < 4?\ 769a747e4fSDavid du Colombier (char*)((int*)&(start)+1):\ 777dd7cddfSDavid du Colombier (char*)(&(start)+1)) 789a747e4fSDavid du Colombier #define va_end(list)\ 799a747e4fSDavid du Colombier USED(list) 809a747e4fSDavid du Colombier #define va_arg(list, mode)\ 816891d857SDavid du Colombier ((sizeof(mode) <= 4)?\ 823f9c8393SDavid du Colombier ((list += 4), (mode*)list)[-1]:\ 836891d857SDavid du Colombier (signof(mode) != signof(double))?\ 846891d857SDavid du Colombier ((list += sizeof(mode)), (mode*)list)[-1]:\ 856891d857SDavid du Colombier ((list = (char*)((uintptr)(list+7) & ~7) + sizeof(mode)), (mode*)list)[-1]) 86