xref: /plan9-contrib/spim64/include/u.h (revision f8bc6aaf8056e137bcdfb6117a990ac3eff62cc9)
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