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