xref: /plan9-contrib/power64/include/u.h (revision e94a8e9b44de11e62dfd4566245554f8bf8e0295)
147ad9175SDavid du Colombier #define nil		((void*)0)
247ad9175SDavid du Colombier typedef	unsigned short	ushort;
347ad9175SDavid du Colombier typedef	unsigned char	uchar;
447ad9175SDavid du Colombier typedef	unsigned long	ulong;
547ad9175SDavid du Colombier typedef	unsigned int	uint;
647ad9175SDavid du Colombier typedef	signed char	schar;
747ad9175SDavid du Colombier typedef	long long	vlong;
847ad9175SDavid du Colombier typedef	unsigned long long uvlong;
947ad9175SDavid du Colombier typedef unsigned long long uintptr;
1047ad9175SDavid du Colombier typedef unsigned long	usize;
11*e94a8e9bSDavid du Colombier typedef	uint		Rune;
1247ad9175SDavid du Colombier typedef 	union FPdbleword FPdbleword;
1347ad9175SDavid du Colombier typedef uintptr	jmp_buf[2];
1447ad9175SDavid du Colombier #define	JMPBUFSP	0
1547ad9175SDavid du Colombier #define	JMPBUFPC	1
1647ad9175SDavid du Colombier #define	JMPBUFDPC	0
1747ad9175SDavid du Colombier typedef unsigned int	mpdigit;	/* for /sys/include/mp.h */
1847ad9175SDavid du Colombier typedef unsigned char u8int;
1947ad9175SDavid du Colombier typedef unsigned short u16int;
2047ad9175SDavid du Colombier typedef unsigned int	u32int;
2147ad9175SDavid du Colombier typedef unsigned long long u64int;
2247ad9175SDavid du Colombier 
2347ad9175SDavid du Colombier /* FPSCR */
2447ad9175SDavid du Colombier #define	FPSFX	(1<<31)	/* exception summary (sticky) */
2547ad9175SDavid du Colombier #define	FPSEX	(1<<30)	/* enabled exception summary */
2647ad9175SDavid du Colombier #define	FPSVX	(1<<29)	/* invalid operation exception summary */
2747ad9175SDavid du Colombier #define	FPSOX	(1<<28)	/* overflow exception OX (sticky) */
2847ad9175SDavid du Colombier #define	FPSUX	(1<<27)	/* underflow exception UX (sticky) */
2947ad9175SDavid du Colombier #define	FPSZX	(1<<26)	/* zero divide exception ZX (sticky) */
3047ad9175SDavid du Colombier #define	FPSXX	(1<<25)	/* inexact exception XX (sticky) */
3147ad9175SDavid du Colombier #define	FPSVXSNAN (1<<24)	/* invalid operation exception for SNaN (sticky) */
3247ad9175SDavid du Colombier #define	FPSVXISI	(1<<23)	/* invalid operation exception for ∞-∞ (sticky) */
3347ad9175SDavid du Colombier #define	FPSVXIDI	(1<<22)	/* invalid operation exception for ∞/∞ (sticky) */
3447ad9175SDavid du Colombier #define	FPSVXZDZ (1<<21)	/* invalid operation exception for 0/0 (sticky) */
3547ad9175SDavid du Colombier #define	FPSVXIMZ	(1<<20)	/* invalid operation exception for ∞*0 (sticky) */
3647ad9175SDavid du Colombier #define	FPSVXVC	(1<<19)	/* invalid operation exception for invalid compare (sticky) */
3747ad9175SDavid du Colombier #define	FPSFR	(1<<18)	/* fraction rounded */
3847ad9175SDavid du Colombier #define	FPSFI	(1<<17)	/* fraction inexact */
3947ad9175SDavid du Colombier #define	FPSFPRF	(1<<16)	/* floating point result class */
4047ad9175SDavid du Colombier #define	FPSFPCC	(0xF<<12)	/* <, >, =, unordered */
4147ad9175SDavid du Colombier #define	FPVXCVI	(1<<8)	/* enable exception for invalid integer convert (sticky) */
4247ad9175SDavid du Colombier #define	FPVE	(1<<7)	/* invalid operation exception enable */
4347ad9175SDavid du Colombier #define	FPOVFL	(1<<6)	/* enable overflow exceptions */
4447ad9175SDavid du Colombier #define	FPUNFL	(1<<5)	/* enable underflow */
4547ad9175SDavid du Colombier #define	FPZDIV	(1<<4)	/* enable zero divide */
4647ad9175SDavid du Colombier #define	FPINEX	(1<<3)	/* enable inexact exceptions */
4747ad9175SDavid du Colombier #define	FPRMASK	(3<<0)	/* rounding mode */
4847ad9175SDavid du Colombier #define	FPRNR	(0<<0)
4947ad9175SDavid du Colombier #define	FPRZ	(1<<0)
5047ad9175SDavid du Colombier #define	FPRPINF	(2<<0)
5147ad9175SDavid du Colombier #define	FPRNINF	(3<<0)
5247ad9175SDavid du Colombier #define	FPPEXT	0
5347ad9175SDavid du Colombier #define	FPPSGL	0
5447ad9175SDavid du Colombier #define	FPPDBL	0
5547ad9175SDavid du Colombier #define	FPPMASK	0
5647ad9175SDavid du Colombier #define	FPINVAL	FPVE
5747ad9175SDavid du Colombier 
5847ad9175SDavid du Colombier #define	FPAOVFL	FPSOX
5947ad9175SDavid du Colombier #define	FPAINEX	FPSXX
6047ad9175SDavid du Colombier #define	FPAUNFL	FPSUX
6147ad9175SDavid du Colombier #define	FPAZDIV	FPSZX
6247ad9175SDavid du Colombier #define	FPAINVAL	FPSVX
6347ad9175SDavid du Colombier 
6447ad9175SDavid du Colombier union FPdbleword
6547ad9175SDavid du Colombier {
6647ad9175SDavid du Colombier 	double	x;
6747ad9175SDavid du Colombier 	struct {	/* big endian */
6847ad9175SDavid du Colombier 		ulong hi;
6947ad9175SDavid du Colombier 		ulong lo;
7047ad9175SDavid du Colombier 	};
7147ad9175SDavid du Colombier };
7247ad9175SDavid du Colombier 
7347ad9175SDavid du Colombier typedef	char*	va_list;
7447ad9175SDavid du Colombier #define va_start(list, start) list =\
7547ad9175SDavid du Colombier 	(sizeof(start) < 8?\
7647ad9175SDavid du Colombier 		(char*)((vlong*)&(start)+1):\
7747ad9175SDavid du Colombier 		(char*)(&(start)+1))
7847ad9175SDavid du Colombier #define va_end(list)\
7947ad9175SDavid du Colombier 	USED(list)
8047ad9175SDavid du Colombier #define va_arg(list, mode)\
8147ad9175SDavid du Colombier 	((sizeof(mode) == 1)?\
8247ad9175SDavid du Colombier 		((mode*)(list += 8))[-1]:\
8347ad9175SDavid du Colombier 	(sizeof(mode) == 2)?\
8447ad9175SDavid du Colombier 		((mode*)(list += 8))[-1]:\
8547ad9175SDavid du Colombier 	(sizeof(mode) == 4)?\
8647ad9175SDavid du Colombier 		((mode*)(list += 8))[-1]:\
8747ad9175SDavid du Colombier 		((mode*)(list += sizeof(mode)))[-1])
88