2 |
- |
1 |
#define nil ((void*)0)
|
|
|
2 |
typedef unsigned short ushort;
|
|
|
3 |
typedef unsigned char uchar;
|
|
|
4 |
typedef unsigned long ulong;
|
|
|
5 |
typedef unsigned int uint;
|
|
|
6 |
typedef signed char schar;
|
|
|
7 |
typedef long long vlong;
|
|
|
8 |
typedef unsigned long long uvlong;
|
|
|
9 |
typedef unsigned long uintptr;
|
|
|
10 |
typedef unsigned long usize;
|
|
|
11 |
typedef uint Rune;
|
|
|
12 |
typedef union FPdbleword FPdbleword;
|
|
|
13 |
typedef long jmp_buf[2];
|
|
|
14 |
#define JMPBUFSP 0
|
|
|
15 |
#define JMPBUFPC 1
|
|
|
16 |
#define JMPBUFDPC 0
|
|
|
17 |
typedef unsigned int mpdigit; /* for /sys/include/mp.h */
|
|
|
18 |
typedef unsigned char u8int;
|
|
|
19 |
typedef unsigned short u16int;
|
|
|
20 |
typedef unsigned int u32int;
|
|
|
21 |
typedef unsigned long long u64int;
|
|
|
22 |
|
|
|
23 |
/* FPSCR */
|
|
|
24 |
#define FPSFX (1<<31) /* exception summary (sticky) */
|
|
|
25 |
#define FPSEX (1<<30) /* enabled exception summary */
|
|
|
26 |
#define FPSVX (1<<29) /* invalid operation exception summary */
|
|
|
27 |
#define FPSOX (1<<28) /* overflow exception OX (sticky) */
|
|
|
28 |
#define FPSUX (1<<27) /* underflow exception UX (sticky) */
|
|
|
29 |
#define FPSZX (1<<26) /* zero divide exception ZX (sticky) */
|
|
|
30 |
#define FPSXX (1<<25) /* inexact exception XX (sticky) */
|
|
|
31 |
#define FPSVXSNAN (1<<24) /* invalid operation exception for SNaN (sticky) */
|
|
|
32 |
#define FPSVXISI (1<<23) /* invalid operation exception for ∞-∞ (sticky) */
|
|
|
33 |
#define FPSVXIDI (1<<22) /* invalid operation exception for ∞/∞ (sticky) */
|
|
|
34 |
#define FPSVXZDZ (1<<21) /* invalid operation exception for 0/0 (sticky) */
|
|
|
35 |
#define FPSVXIMZ (1<<20) /* invalid operation exception for ∞*0 (sticky) */
|
|
|
36 |
#define FPSVXVC (1<<19) /* invalid operation exception for invalid compare (sticky) */
|
|
|
37 |
#define FPSFR (1<<18) /* fraction rounded */
|
|
|
38 |
#define FPSFI (1<<17) /* fraction inexact */
|
|
|
39 |
#define FPSFPRF (1<<16) /* floating point result class */
|
|
|
40 |
#define FPSFPCC (0xF<<12) /* <, >, =, unordered */
|
|
|
41 |
#define FPVXCVI (1<<8) /* enable exception for invalid integer convert (sticky) */
|
|
|
42 |
#define FPVE (1<<7) /* invalid operation exception enable */
|
|
|
43 |
#define FPOVFL (1<<6) /* enable overflow exceptions */
|
|
|
44 |
#define FPUNFL (1<<5) /* enable underflow */
|
|
|
45 |
#define FPZDIV (1<<4) /* enable zero divide */
|
|
|
46 |
#define FPINEX (1<<3) /* enable inexact exceptions */
|
|
|
47 |
#define FPRMASK (3<<0) /* rounding mode */
|
|
|
48 |
#define FPRNR (0<<0)
|
|
|
49 |
#define FPRZ (1<<0)
|
|
|
50 |
#define FPRPINF (2<<0)
|
|
|
51 |
#define FPRNINF (3<<0)
|
|
|
52 |
#define FPPEXT 0
|
|
|
53 |
#define FPPSGL 0
|
|
|
54 |
#define FPPDBL 0
|
|
|
55 |
#define FPPMASK 0
|
|
|
56 |
#define FPINVAL FPVE
|
|
|
57 |
|
|
|
58 |
#define FPAOVFL FPSOX
|
|
|
59 |
#define FPAINEX FPSXX
|
|
|
60 |
#define FPAUNFL FPSUX
|
|
|
61 |
#define FPAZDIV FPSZX
|
|
|
62 |
#define FPAINVAL FPSVX
|
|
|
63 |
|
|
|
64 |
union FPdbleword
|
|
|
65 |
{
|
|
|
66 |
double x;
|
|
|
67 |
struct { /* big endian */
|
|
|
68 |
ulong hi;
|
|
|
69 |
ulong lo;
|
|
|
70 |
};
|
|
|
71 |
};
|
|
|
72 |
|
|
|
73 |
typedef char* va_list;
|
|
|
74 |
#define va_start(list, start) list =\
|
|
|
75 |
(sizeof(start) < 4?\
|
|
|
76 |
(char*)((int*)&(start)+1):\
|
|
|
77 |
(char*)(&(start)+1))
|
|
|
78 |
#define va_end(list)\
|
|
|
79 |
USED(list)
|
|
|
80 |
#define va_arg(list, mode)\
|
|
|
81 |
((sizeof(mode) <= 4)?\
|
|
|
82 |
((list += 4), (mode*)list)[-1]:\
|
|
|
83 |
(signof(mode) != signof(double))?\
|
|
|
84 |
((list += sizeof(mode)), (mode*)list)[-1]:\
|
|
|
85 |
((list = (char*)((uintptr)(list+7) & ~7) + sizeof(mode)), (mode*)list)[-1])
|