shithub: riscv

Download patch

ref: c3ceeded2dfb647e1a4172debf3cf6d3aba5ef39
parent: 96fa636465351366a4e11569c21175a9337d7866
author: cinap_lenrek <devnull@localhost>
date: Wed Mar 30 12:05:55 EDT 2011

...

--- /dev/null
+++ b/68000/include/u.h
@@ -1,0 +1,65 @@
+#define nil		((void*)0)
+typedef	unsigned short	ushort;
+typedef	unsigned char	uchar;
+typedef	unsigned long	ulong;
+typedef	unsigned int	uint;
+typedef	signed char	schar;
+typedef	long long	vlong;
+typedef	unsigned long long uvlong;
+typedef unsigned long	uintptr;
+typedef unsigned long	usize;
+typedef	ushort		Rune;
+typedef 	union FPdbleword FPdbleword;
+typedef long	jmp_buf[2];
+#define	JMPBUFSP	0
+#define	JMPBUFPC	1
+#define	JMPBUFDPC	0
+typedef unsigned int	mpdigit;	/* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int	u32int;
+typedef unsigned long long u64int;
+
+/* FCR */
+#define	FPINEX	(3<<8)
+#define	FPOVFL	(1<<12)
+#define	FPUNFL	(1<<11)
+#define	FPZDIV	(1<<10)
+#define	FPRNR	(0<<4)
+#define	FPRZ	(1<<4)
+#define	FPINVAL	(3<<13)
+#define	FPRPINF	(3<<4)
+#define	FPRNINF	(2<<4)
+#define	FPRMASK	(3<<4)
+#define	FPPEXT	(0<<6)
+#define	FPPSGL	(1<<6)
+#define	FPPDBL	(2<<6)
+#define	FPPMASK	(3<<6)
+/* FSR */
+#define	FPAINEX	FPINEX
+#define	FPAOVFL	FPOVFL
+#define	FPAUNFL	FPUNFL
+#define	FPAZDIV	FPZDIV
+#define	FPAINVAL	FPINVAL
+union FPdbleword
+{
+	double	x;
+	struct {	/* big endian */
+		ulong hi;
+		ulong lo;
+	};
+};
+
+typedef	char*	va_list;
+#define va_start(list, start) list =\
+	(sizeof(start) < 4?\
+		(char*)((int*)&(start)+1):\
+		(char*)(&(start)+1))
+#define va_end(list)\
+	USED(list)
+#define va_arg(list, mode)\
+	((sizeof(mode) == 1)?\
+		((list += 4), (mode*)list)[-1]:\
+	(sizeof(mode) == 2)?\
+		((list += 4), (mode*)list)[-1]:\
+		((list += sizeof(mode)), (mode*)list)[-1])
--- /dev/null
+++ b/68000/include/ureg.h
@@ -1,0 +1,28 @@
+struct Ureg
+{
+	ulong	r0;
+	ulong	r1;
+	ulong	r2;
+	ulong	r3;
+	ulong	r4;
+	ulong	r5;
+	ulong	r6;
+	ulong	r7;
+	ulong	a0;
+	ulong	a1;
+	ulong	a2;
+	ulong	a3;
+	ulong	a4;
+	ulong	a5;
+	ulong	a6;
+	ulong	sp;
+	ulong	usp;
+	ulong	magic;		/* for db to find bottom of ureg */
+	ushort	sr;
+	ulong	pc;
+	ushort	vo;
+#ifndef	UREGVARSZ
+#define	UREGVARSZ 23		/* for 68040; 15 is enough on 68020 */
+#endif
+	uchar	microstate[UREGVARSZ];	/* variable-sized portion */
+};
--- /dev/null
+++ b/68000/mkfile
@@ -1,0 +1,7 @@
+</sys/src/mkfile.proto
+
+CC=1c
+LD=1l
+O=1
+RL=rl
+AS=1a
--- /dev/null
+++ b/68020/include/ape/float.h
@@ -1,0 +1,74 @@
+#ifndef __FLOAT
+#define __FLOAT
+/* IEEE, default rounding */
+
+#define FLT_ROUNDS	1
+#define FLT_RADIX	2
+
+#define FLT_DIG		6
+#define FLT_EPSILON	1.19209290e-07
+#define FLT_MANT_DIG	24
+#define FLT_MAX		3.40282347e+38
+#define FLT_MAX_10_EXP	38
+#define FLT_MAX_EXP	128
+#define FLT_MIN		1.17549435e-38
+#define FLT_MIN_10_EXP	-37
+#define FLT_MIN_EXP	-125
+
+#define DBL_DIG		15
+#define DBL_EPSILON	2.2204460492503131e-16
+#define DBL_MANT_DIG	53
+#define DBL_MAX		1.797693134862315708145e+308
+#define DBL_MAX_10_EXP	308
+#define DBL_MAX_EXP	1024
+#define DBL_MIN		2.225073858507201383090233e-308
+#define DBL_MIN_10_EXP	-307
+#define DBL_MIN_EXP	-1021
+#define LDBL_MANT_DIG	DBL_MANT_DIG
+#define LDBL_EPSILON	DBL_EPSILON
+#define LDBL_DIG	DBL_DIG
+#define LDBL_MIN_EXP	DBL_MIN_EXP
+#define LDBL_MIN	DBL_MIN
+#define LDBL_MIN_10_EXP	DBL_MIN_10_EXP
+#define LDBL_MAX_EXP	DBL_MAX_EXP
+#define LDBL_MAX	DBL_MAX
+#define LDBL_MAX_10_EXP	DBL_MAX_10_EXP
+
+
+typedef 	union FPdbleword FPdbleword;
+union FPdbleword
+{
+	double	x;
+	struct {	/* big endian */
+		long hi;
+		long lo;
+	};
+};
+
+#ifdef _RESEARCH_SOURCE
+/* define order of longs in IEEE double: little endian */
+#define IEEE_MC68k	1
+#define Sudden_Underflow 1
+#endif
+#ifdef _PLAN9_SOURCE
+/* FCR */
+#define	FPINEX	(3<<8)
+#define	FPOVFL	(1<<12)
+#define	FPUNFL	(1<<11)
+#define	FPZDIV	(1<<10)
+#define	FPRNR	(0<<4)
+#define	FPRZ	(1<<4)
+#define	FPRPINF	(3<<4)
+#define	FPRNINF	(2<<4)
+#define	FPRMASK	(3<<4)
+#define	FPPEXT	(0<<6)
+#define	FPPSGL	(1<<6)
+#define	FPPDBL	(2<<6)
+#define	FPPMASK	(3<<6)
+/* FSR */
+#define	FPAINEX	FPINEX
+#define	FPAOVFL	FPOVFL
+#define	FPAUNFL	FPUNFL
+#define	FPAZDIV	FPZDIV
+#endif
+#endif /* __FLOAT */
--- /dev/null
+++ b/68020/include/ape/math.h
@@ -1,0 +1,77 @@
+#ifndef __MATH
+#define __MATH
+#pragma lib "/$M/lib/ape/libap.a"
+
+/* a HUGE_VAL appropriate for IEEE double-precision */
+/* the correct value, 1.797693134862316e+308, causes a ken overflow */
+#define HUGE_VAL 1.79769313486231e+308
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern double acos(double);
+extern double asin(double);
+extern double atan(double);
+extern double atan2(double, double);
+extern double cos(double);
+extern double sin(double);
+extern double tan(double);
+extern double cosh(double);
+extern double sinh(double);
+extern double tanh(double);
+extern double exp(double);
+extern double frexp(double, int *);
+extern double ldexp(double, int);
+extern double log(double);
+extern double log10(double);
+extern double modf(double, double *);
+extern double pow(double, double);
+extern double sqrt(double);
+extern double ceil(double);
+extern double fabs(double);
+extern double floor(double);
+extern double fmod(double, double);
+extern double NaN(void);
+extern int isNaN(double);
+extern double Inf(int);
+extern int isInf(double, int);
+
+#ifdef _RESEARCH_SOURCE
+/* does >> treat left operand as unsigned ? */
+#define Unsigned_Shifts 1
+#define	M_E		2.7182818284590452354	/* e */
+#define	M_LOG2E		1.4426950408889634074	/* log 2e */
+#define	M_LOG10E	0.43429448190325182765	/* log 10e */
+#define	M_LN2		0.69314718055994530942	/* log e2 */
+#define	M_LN10		2.30258509299404568402	/* log e10 */
+#define	M_PI		3.14159265358979323846	/* pi */
+#define	M_PI_2		1.57079632679489661923	/* pi/2 */
+#define	M_PI_4		0.78539816339744830962	/* pi/4 */
+#define	M_1_PI		0.31830988618379067154	/* 1/pi */
+#define	M_2_PI		0.63661977236758134308	/* 2/pi */
+#define	M_2_SQRTPI	1.12837916709551257390	/* 2/sqrt(pi) */
+#define	M_SQRT2		1.41421356237309504880	/* sqrt(2) */
+#define	M_SQRT1_2	0.70710678118654752440	/* 1/sqrt(2) */
+
+extern double hypot(double, double);
+extern double erf(double);
+extern double erfc(double);
+extern double j0(double);
+extern double y0(double);
+extern double j1(double);
+extern double y1(double);
+extern double jn(int, double);
+extern double yn(int, double);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#define isnan(x) isNaN(x)
+#define isinf(x) isInf(x)
+
+#endif /* __MATH */
--- /dev/null
+++ b/68020/include/ape/stdarg.h
@@ -1,0 +1,11 @@
+#ifndef __STDARG
+#define __STDARG
+
+typedef char *va_list;
+
+#define va_start(list, start) list = (char *)(&(start)+1)
+#define va_end(list)
+#define va_arg(list, mode) (sizeof(mode)==1 ? ((mode *) (list += 4))[-4] : \
+sizeof(mode)==2 ? ((mode *) (list += 4))[-2] : ((mode *) (list += sizeof(mode)))[-1])
+
+#endif /* __STDARG */
--- /dev/null
+++ b/68020/include/ape/ureg.h
@@ -1,0 +1,36 @@
+#ifndef __UREG_H
+#define __UREG_H
+#if !defined(_PLAN9_SOURCE)
+    This header file is an extension to ANSI/POSIX
+#endif
+
+struct Ureg
+{
+	unsigned long	r0;
+	unsigned long	r1;
+	unsigned long	r2;
+	unsigned long	r3;
+	unsigned long	r4;
+	unsigned long	r5;
+	unsigned long	r6;
+	unsigned long	r7;
+	unsigned long	a0;
+	unsigned long	a1;
+	unsigned long	a2;
+	unsigned long	a3;
+	unsigned long	a4;
+	unsigned long	a5;
+	unsigned long	a6;
+	unsigned long	sp;
+	unsigned long	usp;
+	unsigned long	magic;		/* for db to find bottom of ureg */
+	unsigned short	sr;
+	unsigned long	pc;
+	unsigned short	vo;
+#ifndef	UREGVARSZ
+#define	UREGVARSZ 23		/* for 68040; 15 is enough on 68020 */
+#endif
+	unsigned char	microstate[UREGVARSZ];	/* variable-sized portion */
+};
+
+#endif
--- /dev/null
+++ b/68020/include/dac.h
@@ -1,0 +1,14 @@
+/*
+ * Inmos G17x d/a converter
+ */
+
+typedef
+struct	G170
+{
+	uchar	waddr;
+	uchar	value;
+	uchar	mask;
+	uchar	raddr;
+} G170;
+
+#define DAC	((G170*)0xc0100000)
--- /dev/null
+++ b/68020/include/lbp.h
@@ -1,0 +1,3 @@
+typedef struct Lbpconf {
+	int nhblank, nvblank, xmax, ymax, res;
+} Lbpconf;
--- /dev/null
+++ b/68020/include/u.h
@@ -1,0 +1,66 @@
+#define nil		((void*)0)
+typedef	unsigned short	ushort;
+typedef	unsigned char	uchar;
+typedef	unsigned long	ulong;
+typedef	unsigned int	uint;
+typedef	signed char	schar;
+typedef	long long	vlong;
+typedef	unsigned long long uvlong;
+typedef unsigned long	uintptr;
+typedef unsigned long	usize;
+typedef	ushort		Rune;
+typedef 	union FPdbleword FPdbleword;
+typedef long	jmp_buf[2];
+#define	JMPBUFSP	0
+#define	JMPBUFPC	1
+#define	JMPBUFDPC	0
+typedef unsigned int	mpdigit;	/* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int	u32int;
+typedef unsigned long long u64int;
+
+
+/* FCR */
+#define	FPINEX	(3<<8)
+#define	FPOVFL	(1<<12)
+#define	FPUNFL	(1<<11)
+#define	FPZDIV	(1<<10)
+#define	FPRNR	(0<<4)
+#define	FPRZ	(1<<4)
+#define	FPINVAL	(3<<13)
+#define	FPRPINF	(3<<4)
+#define	FPRNINF	(2<<4)
+#define	FPRMASK	(3<<4)
+#define	FPPEXT	(0<<6)
+#define	FPPSGL	(1<<6)
+#define	FPPDBL	(2<<6)
+#define	FPPMASK	(3<<6)
+/* FSR */
+#define	FPAINEX	FPINEX
+#define	FPAOVFL	FPOVFL
+#define	FPAUNFL	FPUNFL
+#define	FPAZDIV	FPZDIV
+#define	FPAINVAL	FPINVAL
+union FPdbleword
+{
+	double	x;
+	struct {	/* big endian */
+		ulong hi;
+		ulong lo;
+	};
+};
+
+typedef	char*	va_list;
+#define va_start(list, start) list =\
+	(sizeof(start) < 4?\
+		(char*)((int*)&(start)+1):\
+		(char*)(&(start)+1))
+#define va_end(list)\
+	USED(list)
+#define va_arg(list, mode)\
+	((sizeof(mode) == 1)?\
+		((list += 4), (mode*)list)[-1]:\
+	(sizeof(mode) == 2)?\
+		((list += 4), (mode*)list)[-1]:\
+		((list += sizeof(mode)), (mode*)list)[-1])
--- /dev/null
+++ b/68020/include/ureg.h
@@ -1,0 +1,28 @@
+struct Ureg
+{
+	ulong	r0;
+	ulong	r1;
+	ulong	r2;
+	ulong	r3;
+	ulong	r4;
+	ulong	r5;
+	ulong	r6;
+	ulong	r7;
+	ulong	a0;
+	ulong	a1;
+	ulong	a2;
+	ulong	a3;
+	ulong	a4;
+	ulong	a5;
+	ulong	a6;
+	ulong	sp;
+	ulong	usp;
+	ulong	magic;		/* for db to find bottom of ureg */
+	ushort	sr;
+	ulong	pc;
+	ushort	vo;
+#ifndef	UREGVARSZ
+#define	UREGVARSZ 23		/* for 68040; 15 is enough on 68020 */
+#endif
+	uchar	microstate[UREGVARSZ];	/* variable-sized portion */
+};
--- /dev/null
+++ b/68020/mkfile
@@ -1,0 +1,7 @@
+</sys/src/mkfile.proto
+
+CC=2c
+LD=2l
+O=2
+RL=rl
+AS=2a
--- /dev/null
+++ b/alpha/include/ape/float.h
@@ -1,0 +1,76 @@
+#ifndef __FLOAT
+#define __FLOAT
+/* IEEE, default rounding */
+
+#define FLT_ROUNDS	1
+#define FLT_RADIX	2
+
+#define FLT_DIG		6
+#define FLT_EPSILON	1.19209290e-07
+#define FLT_MANT_DIG	24
+#define FLT_MAX		3.40282347e+38
+#define FLT_MAX_10_EXP	38
+#define FLT_MAX_EXP	128
+#define FLT_MIN		1.17549435e-38
+#define FLT_MIN_10_EXP	-37
+#define FLT_MIN_EXP	-125
+
+#define DBL_DIG		15
+#define DBL_EPSILON	2.2204460492503131e-16
+#define DBL_MANT_DIG	53
+#define DBL_MAX		1.797693134862315708145e+308
+#define DBL_MAX_10_EXP	308
+#define DBL_MAX_EXP	1024
+#define DBL_MIN		2.225073858507201383090233e-308
+#define DBL_MIN_10_EXP	-307
+#define DBL_MIN_EXP	-1021
+#define LDBL_MANT_DIG	DBL_MANT_DIG
+#define LDBL_EPSILON	DBL_EPSILON
+#define LDBL_DIG	DBL_DIG
+#define LDBL_MIN_EXP	DBL_MIN_EXP
+#define LDBL_MIN	DBL_MIN
+#define LDBL_MIN_10_EXP	DBL_MIN_10_EXP
+#define LDBL_MAX_EXP	DBL_MAX_EXP
+#define LDBL_MAX	DBL_MAX
+#define LDBL_MAX_10_EXP	DBL_MAX_10_EXP
+
+typedef 	union FPdbleword FPdbleword;
+union FPdbleword
+{
+	double	x;
+	struct {	/* little endian */
+		long lo;
+		long hi;
+	};
+};
+
+#ifdef _RESEARCH_SOURCE
+/* define stuff needed for floating conversion */
+#define IEEE_8087	1
+#define Sudden_Underflow 1
+#endif
+#ifdef _PLAN9_SOURCE
+#define	FPINEX	(1<<30)
+#define	FPOVFL	(1<<19)
+#define	FPUNFL	((1<<29)|(1<<28))
+#define	FPZDIV	(1<<18)
+#define	FPINVAL	(1<<17)
+
+#define	FPRNR	(2<<26)
+#define	FPRZ		(0<<26)
+#define	FPRPINF	(3<<26)
+#define	FPRNINF	(1<<26)
+#define	FPRMASK	(3<<26)
+
+#define	FPPEXT	0
+#define	FPPSGL	0
+#define	FPPDBL	0
+#define	FPPMASK	0
+/* FSR */
+#define	FPAINEX	(1<<24)
+#define	FPAUNFL	(1<<23)
+#define	FPAOVFL	(1<<22)
+#define	FPAZDIV	(1<<21)
+#define	FPAINVAL	(1<<20)
+#endif
+#endif /* __FLOAT */
--- /dev/null
+++ b/alpha/include/ape/math.h
@@ -1,0 +1,77 @@
+#ifndef __MATH
+#define __MATH
+#pragma lib "/$M/lib/ape/libap.a"
+
+/* a HUGE_VAL appropriate for IEEE double-precision */
+/* the correct value, 1.797693134862316e+308, causes a ken overflow */
+#define HUGE_VAL 1.79769313486231e+308
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern double acos(double);
+extern double asin(double);
+extern double atan(double);
+extern double atan2(double, double);
+extern double cos(double);
+extern double sin(double);
+extern double tan(double);
+extern double cosh(double);
+extern double sinh(double);
+extern double tanh(double);
+extern double exp(double);
+extern double frexp(double, int *);
+extern double ldexp(double, int);
+extern double log(double);
+extern double log10(double);
+extern double modf(double, double *);
+extern double pow(double, double);
+extern double sqrt(double);
+extern double ceil(double);
+extern double fabs(double);
+extern double floor(double);
+extern double fmod(double, double);
+extern double NaN(void);
+extern int isNaN(double);
+extern double Inf(int);
+extern int isInf(double, int);
+
+#ifdef _RESEARCH_SOURCE
+/* does >> treat left operand as unsigned ? */
+#define Unsigned_Shifts 1
+#define	M_E		2.7182818284590452354	/* e */
+#define	M_LOG2E		1.4426950408889634074	/* log 2e */
+#define	M_LOG10E	0.43429448190325182765	/* log 10e */
+#define	M_LN2		0.69314718055994530942	/* log e2 */
+#define	M_LN10		2.30258509299404568402	/* log e10 */
+#define	M_PI		3.14159265358979323846	/* pi */
+#define	M_PI_2		1.57079632679489661923	/* pi/2 */
+#define	M_PI_4		0.78539816339744830962	/* pi/4 */
+#define	M_1_PI		0.31830988618379067154	/* 1/pi */
+#define	M_2_PI		0.63661977236758134308	/* 2/pi */
+#define	M_2_SQRTPI	1.12837916709551257390	/* 2/sqrt(pi) */
+#define	M_SQRT2		1.41421356237309504880	/* sqrt(2) */
+#define	M_SQRT1_2	0.70710678118654752440	/* 1/sqrt(2) */
+
+extern double hypot(double, double);
+extern double erf(double);
+extern double erfc(double);
+extern double j0(double);
+extern double y0(double);
+extern double j1(double);
+extern double y1(double);
+extern double jn(int, double);
+extern double yn(int, double);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#define isnan(x) isNaN(x)
+#define isinf(x) isInf(x)
+
+#endif /* __MATH */
--- /dev/null
+++ b/alpha/include/ape/stdarg.h
@@ -1,0 +1,17 @@
+#ifndef __STDARG
+#define __STDARG
+
+typedef char *va_list;
+
+#define va_start(list, start) list = (char *)(&(start)+1)
+#define va_end(list)
+#define va_arg(list, mode)\
+	(sizeof(mode)==1?\
+		((mode*)(list += 4))[-1]:\
+	sizeof(mode)==2?\
+		((mode*)(list += 4))[-1]:\
+	sizeof(mode)>4?\
+		((mode*)(list = (char*)((long)(list+7) & ~7) + sizeof(mode)))[-1]:\
+		((mode*)(list += sizeof(mode)))[-1])
+
+#endif /* __STDARG */
--- /dev/null
+++ b/alpha/include/ape/ureg.h
@@ -1,0 +1,57 @@
+#ifndef __UREG_H
+#define __UREG_H
+#if !defined(_PLAN9_SOURCE)
+    This header file is an extension to ANSI/POSIX
+#endif
+
+struct Ureg
+{
+	/* l.s saves 31 64-bit values: */
+	unsigned long long	type;
+	unsigned long long	a0;
+	unsigned long long	a1;
+	unsigned long long	a2;
+
+	unsigned long long	r0;
+	unsigned long long	r1;
+	unsigned long long	r2;
+	unsigned long long	r3;
+	unsigned long long	r4;
+	unsigned long long	r5;
+	unsigned long long	r6;
+	unsigned long long	r7;
+	unsigned long long	r8;
+	unsigned long long	r9;
+	unsigned long long	r10;
+	unsigned long long	r11;
+	unsigned long long	r12;
+	unsigned long long	r13;
+	unsigned long long	r14;
+	unsigned long long	r15;
+
+	unsigned long long	r19;
+	unsigned long long	r20;
+	unsigned long long	r21;
+	unsigned long long	r22;
+	unsigned long long	r23;
+	unsigned long long	r24;
+	unsigned long long	r25;
+	unsigned long long	r26;
+	unsigned long long	r27;
+	unsigned long long	r28;
+	union {
+		unsigned long long	r30;
+		unsigned long long	usp;
+		unsigned long long	sp;
+	};
+
+	/* OSF/1 PALcode frame: */
+	unsigned long long	status;	/* PS */
+	unsigned long long	pc;
+	unsigned long long	r29;		/* GP */
+	unsigned long long	r16;		/* a0 */
+	unsigned long long	r17;		/* a1 */
+	unsigned long long	r18;		/* a2 */
+};
+
+#endif
--- /dev/null
+++ b/alpha/include/u.h
@@ -1,0 +1,70 @@
+#define nil		((void*)0)
+typedef	unsigned short	ushort;
+typedef	unsigned char	uchar;
+typedef unsigned long	ulong;
+typedef unsigned int	uint;
+typedef   signed char	schar;
+typedef	long long	vlong;
+typedef	unsigned long long uvlong;
+typedef unsigned long	uintptr;
+typedef unsigned long	usize;
+typedef	ushort		Rune;
+typedef 	union FPdbleword FPdbleword;
+typedef long	jmp_buf[2];
+#define	JMPBUFSP	0
+#define	JMPBUFPC	1
+#define	JMPBUFDPC	0
+typedef unsigned int	mpdigit;	/* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int	u32int;
+typedef unsigned long long u64int;
+
+/* FCR */
+#define	FPINEX	(1<<30)
+#define	FPOVFL	(1<<19)
+#define	FPUNFL	((1<<29)|(1<<28))
+#define	FPZDIV	(1<<18)
+#define	FPINVAL	(1<<17)
+
+#define	FPRNR	(2<<26)
+#define	FPRZ		(0<<26)
+#define	FPRPINF	(3<<26)
+#define	FPRNINF	(1<<26)
+#define	FPRMASK	(3<<26)
+
+#define	FPPEXT	0
+#define	FPPSGL	0
+#define	FPPDBL	0
+#define	FPPMASK	0
+/* FSR */
+#define	FPAINEX	(1<<24)
+#define	FPAUNFL	(1<<23)
+#define	FPAOVFL	(1<<22)
+#define	FPAZDIV	(1<<21)
+#define	FPAINVAL	(1<<20)
+union FPdbleword
+{
+	double	x;
+	struct {	/* little endian */
+		ulong lo;
+		ulong hi;
+	};
+};
+
+/* stdarg */
+typedef	char*	va_list;
+#define va_start(list, start) list =\
+	(sizeof(start) < 4?\
+		(char*)((int*)&(start)+1):\
+		(char*)(&(start)+1))
+#define va_end(list)\
+	USED(list)
+#define va_arg(list, mode)\
+	((sizeof(mode) == 1)?\
+		((list += 4), (mode*)list)[-4]:\
+	(sizeof(mode) == 2)?\
+		((list += 4), (mode*)list)[-2]:\
+	sizeof(mode)>4?\
+		((mode*)(list = (char*)((uintptr)(list+7) & ~7) + sizeof(mode)))[-1]:\
+		((list += sizeof(mode)), (mode*)list)[-1])
--- /dev/null
+++ b/alpha/include/ureg.h
@@ -1,0 +1,49 @@
+struct Ureg
+{
+	/* l.s saves 31 64-bit values: */
+	uvlong	type;
+	uvlong	a0;
+	uvlong	a1;
+	uvlong	a2;
+
+	uvlong	r0;
+	uvlong	r1;
+	uvlong	r2;
+	uvlong	r3;
+	uvlong	r4;
+	uvlong	r5;
+	uvlong	r6;
+	uvlong	r7;
+	uvlong	r8;
+	uvlong	r9;
+	uvlong	r10;
+	uvlong	r11;
+	uvlong	r12;
+	uvlong	r13;
+	uvlong	r14;
+	uvlong	r15;
+
+	uvlong	r19;
+	uvlong	r20;
+	uvlong	r21;
+	uvlong	r22;
+	uvlong	r23;
+	uvlong	r24;
+	uvlong	r25;
+	uvlong	r26;
+	uvlong	r27;
+	uvlong	r28;
+	union {
+		uvlong	r30;
+		uvlong	usp;
+		uvlong	sp;
+	};
+
+	/* OSF/1 PALcode frame: */
+	uvlong	status;	/* PS */
+	uvlong	pc;
+	uvlong	r29;		/* GP */
+	uvlong	r16;		/* a0 */
+	uvlong	r17;		/* a1 */
+	uvlong	r18;		/* a2 */
+};
--- /dev/null
+++ b/alpha/mkfile
@@ -1,0 +1,6 @@
+</sys/src/mkfile.proto
+
+CC=7c
+LD=7l
+O=7
+AS=7a
--- a/sys/src/cmd/gs/src/plan9.mak
+++ /dev/null
@@ -1,450 +1,0 @@
-#    Copyright (C) 1997-2002 artofcode LLC. All rights reserved.
-# 
-# This software is provided AS-IS with no warranty, either express or
-# implied.
-# 
-# This software is distributed under license and may not be copied,
-# modified or distributed except as expressly authorized under the terms
-# of the license contained in the file LICENSE in this distribution.
-# 
-# For more information about licensing, please refer to
-# http://www.ghostscript.com/licensing/. For information on
-# commercial licensing, go to http://www.artifex.com/licensing/ or
-# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
-# San Rafael, CA  94903, U.S.A., +1(415)492-9861.
-#
-# $Id: unixansi.mak,v 1.41 2005/08/31 05:52:32 ray Exp $
-# makefile for Unix/ANSI C/X11 configuration.
-
-# ------------------------------- Options ------------------------------- #
-
-####### The following are the only parts of the file you should need to edit.
-
-# Define the directory for the final executable, and the
-# source, generated intermediate file, and object directories
-# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
-
-BINDIR=./bin
-GLSRCDIR=./src
-GLGENDIR=./obj
-GLOBJDIR=./obj
-PSSRCDIR=./src
-PSLIBDIR=./lib
-PSGENDIR=./obj
-PSOBJDIR=./obj
-
-# Do not edit the next group of lines.
-
-#include $(COMMONDIR)/ansidefs.mak
-#include $(COMMONDIR)/unixdefs.mak
-#include $(COMMONDIR)/generic.mak
-include src/version.mak
-DD=$(GLGENDIR)/
-GLD=$(GLGENDIR)/
-PSD=$(PSGENDIR)/
-
-# ------ Generic options ------ #
-
-# Define the installation commands and target directories for
-# executables and files.  The commands are only relevant to `make install';
-# the directories also define the default search path for the
-# initialization files (gs_*.ps) and the fonts.
-
-INSTALL = $(GLSRCDIR)/instcopy -c
-INSTALL_PROGRAM = $(INSTALL) -m 755
-INSTALL_DATA = $(INSTALL) -m 644
-
-prefix = /usr/local
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-scriptdir = $(bindir)
-mandir = $(prefix)/man
-man1ext = 1
-datadir = $(prefix)/share
-gsdir = $(datadir)/ghostscript
-gsdatadir=/sys/src/cmd/gs
-
-docdir=$(gsdatadir)/doc
-exdir=$(gsdatadir)/examples
-GS_DOCDIR=$(docdir)
-
-# Define the default directory/ies for the runtime initialization, resource and
-# font files.  Separate multiple directories with a :.
-
-GS_LIB_DEFAULT=/sys/lib/ghostscript:/sys/lib/ghostscript/font:/sys/lib/postscript/font
-
-# Define whether or not searching for initialization files should always
-# look in the current directory first.  This leads to well-known security
-# and confusion problems, but users insist on it.
-# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of Use.htm for full details.
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
-
-SEARCH_HERE_FIRST=1
-
-# Define the name of the interpreter initialization file.
-# (There is no reason to change this.)
-
-GS_INIT=gs_init.ps
-
-# Choose generic configuration options.
-
-# -DDEBUG
-#	includes debugging features (-Z switch) in the code.
-#	  Code runs substantially slower even if no debugging switches
-#	  are set.
-# -DNOPRIVATE
-#	makes private (static) procedures and variables public,
-#	  so they are visible to the debugger and profiler.
-#	  No execution time or space penalty.
-
-GENOPT=
-
-# Define the name of the executable file.
-
-GS=gs
-
-# Define the name of a pre-built executable that can be invoked at build
-# time.  Currently, this is only needed for compiled fonts.  The usual
-# alternatives are:
-#   - the standard name of Ghostscript on your system (typically `gs'):
-BUILD_TIME_GS=gs
-#   - the name of the executable you are building now.  If you choose this
-# option, then you must build the executable first without compiled fonts,
-# and then again with compiled fonts.
-#BUILD_TIME_GS=$(BINDIR)/$(GS) -I$(PSLIBDIR)
-
-# Define the directories for debugging and profiling binaries, relative to
-# the standard binaries.
-
-DEBUGRELDIR=../debugobj
-PGRELDIR=../pgobj
-
-# Define the directory where the IJG JPEG library sources are stored,
-# and the major version of the library that is stored there.
-# You may need to change this if the IJG library version changes.
-# See jpeg.mak for more information.
-
-JSRCDIR=jpeg
-JVERSION=6
-
-# Note: if a shared library is used, it may not contain the
-# D_MAX_BLOCKS_IN_MCU patch, and thus may not be able to read
-# some older JPEG streams that violate the standard. If the JPEG
-# library built from local sources, the patch will be applied.
-
-SHARE_JPEG=0
-JPEG_NAME=jpeg
-
-# Define the directory where the PNG library sources are stored,
-# and the version of the library that is stored there.
-# You may need to change this if the libpng version changes.
-# See libpng.mak for more information.
-
-PSRCDIR=libpng
-PVERSION=10208
-
-# Choose whether to use a shared version of the PNG library, and if so,
-# what its name is.
-# See gs.mak and Make.htm for more information.
-
-SHARE_LIBPNG=0
-LIBPNG_NAME=png
-
-# Define the directory where the zlib sources are stored.
-# See zlib.mak for more information.
-
-ZSRCDIR=zlib
-
-# Choose whether to use a shared version of the zlib library, and if so,
-# what its name is (usually libz, but sometimes libgz).
-# See gs.mak and Make.htm for more information.
-
-SHARE_ZLIB=0
-#ZLIB_NAME=gz
-ZLIB_NAME=z
-
-# Choose shared or compiled in libjbig2dec and source location
-SHARE_JBIG2=0
-JBIG2SRCDIR=jbig2dec
-
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
-
-ICCSRCDIR=icclib
-
-# Define the directory where the ijs source is stored,
-# and the process forking method to use for the server.
-# See ijs.mak for more information.
-
-IJSSRCDIR=ijs
-IJSEXECTYPE=unix
-
-# Define how to build the library archives.  (These are not used in any
-# standard configuration.)
-
-AR=ar
-ARFLAGS=qc
-RANLIB=ranlib
-
-# ------ Platform-specific options ------ #
-
-# Define the name of the C compiler.  If the standard compiler for your
-# platform is ANSI-compatible, leave this line commented out; if not,
-# uncomment the line and insert the proper definition.
-
-#CC=some_C_compiler
-
-# Define the name of the linker for the final link step.
-# Normally this is the same as the C compiler.
-
-CCLD=$(CC)
-
-# Define the added flags for standard, debugging, and profiling builds.
-
-CFLAGS_STANDARD=
-CFLAGS_DEBUG=-g
-CFLAGS_PROFILE=-pg -O
-
-# Define the other compilation flags.  Add at most one of the following:
-#	-Aa -w -D_HPUX_SOURCE for the HP 400.
-#	-DBSD4_2 for 4.2bsd systems.
-#	-DSYSV for System V or DG/UX.
-#	-DSVR4 -DSVR4_0 (not -DSYSV) for System V release 4.0.
-#	-DSVR4 (not -DSYSV) for System V release 4.2 (or later) and Solaris 2.
-# XCFLAGS can be set from the command line.
-XCFLAGS=-D_BSD_EXTENSION -DPlan9
-
-CFLAGS=$(CFLAGS_STANDARD) $(XCFLAGS)
-
-# Define platform flags for ld.
-# SunOS and some others want -X; Ultrix wants -x.
-# SunOS 4.n may need -Bstatic.
-# Solaris 2.6 (and possibly some other versions) with any of the SHARE_
-# parameters set to 1 may need
-#	-R /usr/local/xxx/lib:/usr/local/lib
-# giving the full path names of the shared library directories.
-# Apollos running DomainOS don't support -X (and -x has no effect).
-# XLDFLAGS can be set from the command line.
-XLDFLAGS=
-
-LDFLAGS=$(XLDFLAGS)
-
-# Define any extra libraries to link into the executable.
-# ISC Unix 2.2 wants -linet.
-# SCO Unix needs -lsocket if you aren't including the X11 driver.
-# SVR4 may need -lnsl.
-# Solaris may need -lnsl -lsocket -lposix4.
-# (Libraries required by individual drivers are handled automatically.)
-
-EXTRALIBS=
-
-# Define the standard libraries to search at the end of linking.
-# Most platforms require -lpthread for the POSIX threads library;
-# on FreeBSD, change -lpthread to -lc_r; BSDI and perhaps some others
-# include pthreads in libc and don't require any additional library.
-# All reasonable platforms require -lm, but Rhapsody and perhaps one or
-# two others fold libm into libc and don't require any additional library.
-
-#STDLIBS=-lpthread -lm
-
-# Since the default build is for nosync, don't include pthread lib
-STDLIBS=-lm
-
-# Define the include switch(es) for the X11 header files.
-# This can be null if handled in some other way (e.g., the files are
-# in /usr/include, or the directory is supplied by an environment variable);
-# in particular, SCO Xenix, Unix, and ODT just want
-#XINCLUDE=
-# Note that x_.h expects to find the header files in $(XINCLUDE)/X11,
-# not in $(XINCLUDE).
-
-XINCLUDE=-I/usr/X11R6/include
-
-# Define the directory/ies and library names for the X11 library files.
-# XLIBDIRS is for ld and should include -L; XLIBDIR is for LD_RUN_PATH
-# (dynamic libraries on SVR4) and should not include -L.
-# Newer SVR4 systems can use -R in XLIBDIRS rather than setting XLIBDIR.
-# Both can be null if these files are in the default linker search path;
-# in particular, SCO Xenix, Unix, and ODT just want
-#XLIBDIRS=
-# Solaris and other SVR4 systems with dynamic linking probably want
-#XLIBDIRS=-L/usr/openwin/lib -R/usr/openwin/lib
-# X11R6 (on any platform) may need
-#XLIBS=Xt SM ICE Xext X11
-
-XLIBDIRS=-L/usr/X11R6/lib
-XLIBDIR=
-XLIBS=Xt Xext X11
-
-# Define whether this platform has floating point hardware:
-#	FPU_TYPE=2 means floating point is faster than fixed point.
-# (This is the case on some RISCs with multiple instruction dispatch.)
-#	FPU_TYPE=1 means floating point is at worst only slightly slower
-# than fixed point.
-#	FPU_TYPE=0 means that floating point may be considerably slower.
-#	FPU_TYPE=-1 means that floating point is always much slower than
-# fixed point.
-
-FPU_TYPE=1
-
-# Define the .dev module that implements thread and synchronization
-# primitives for this platform.  Don't change this unless you really know
-# what you're doing.
-
-# If POSIX sync primitives are used, also change the STDLIBS to include
-# the pthread library.
-#SYNC=posync
-
-# Default is No sync primitives since some platforms don't have it (HP-UX)
-SYNC=nosync
-
-# ------ Devices and features ------ #
-
-# Choose the language feature(s) to include.  See gs.mak for details.
-
-FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)epsf.dev $(GLD)pipe.dev $(PSD)fapi.dev
-
-# Choose whether to compile the .ps initialization files into the executable.
-# See gs.mak for details.
-
-COMPILE_INITS=0
-
-# Choose whether to store band lists on files or in memory.
-# The choices are 'file' or 'memory'.
-
-BAND_LIST_STORAGE=file
-
-# Choose which compression method to use when storing band lists in memory.
-# The choices are 'lzw' or 'zlib'.
-
-BAND_LIST_COMPRESSOR=zlib
-
-# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'.
-# See gs.mak and sfxfd.c for more details.
-
-FILE_IMPLEMENTATION=stdio
-
-# Choose the implementation of stdio: '' for file I/O and 'c' for callouts
-# See gs.mak and ziodevs.c/ziodevsc.c for more details.
-
-STDIO_IMPLEMENTATION=c
-
-# Choose the device(s) to include.  See devs.mak for details,
-# devs.mak and contrib.mak for the list of available devices.
-
-DEVICE_DEVS=$(DD)plan9.dev $(DD)bj10e.dev $(DD)bjc600.dev $(DD)bjc800.dev $(DD)cdj1600.dev $(DD)cdj670.dev $(DD)cdj850.dev $(DD)cdj890.dev $(DD)dfaxlow.dev $(DD)epswrite.dev $(DD)inferno.dev $(DD)jpeg.dev $(DD)jpeggray.dev $(DD)laserjet.dev $(DD)ljet2p.dev $(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)pbm.dev $(DD)pbmraw.dev $(DD)pdfwrite.dev $(DD)pgm.dev $(DD)pgmraw.dev $(DD)plan9bm.dev $(DD)pnm.dev $(DD)pnmraw.dev $(DD)ppm.dev $(DD)ppmraw.dev $(DD)pswrite.dev $(DD)stcolor.dev $(DD)tiffg32d.dev $(DD)tiffg3.dev $(DD)tiffg4.dev
-DEVICE_DEVS1=
-DEVICE_DEVS2=
-DEVICE_DEVS3=
-DEVICE_DEVS4=
-DEVICE_DEVS5=
-DEVICE_DEVS6=
-DEVICE_DEVS7=
-DEVICE_DEVS8=
-DEVICE_DEVS9=
-DEVICE_DEVS10=
-DEVICE_DEVS11=
-DEVICE_DEVS12=
-DEVICE_DEVS13=
-DEVICE_DEVS14=
-DEVICE_DEVS15=
-DEVICE_DEVS16=
-# Overflow from DEVS9
-DEVICE_DEVS17=
-DEVICE_DEVS18=
-DEVICE_DEVS19=
-DEVICE_DEVS20=
-
-# ---------------------------- End of options --------------------------- #
-
-# Define the name of the partial makefile that specifies options --
-# used in dependencies.
-
-MAKEFILE=$(GLSRCDIR)/unixansi.mak
-TOP_MAKEFILES=$(MAKEFILE) $(GLSRCDIR)/unixhead.mak
-
-# Define the auxilary program dependency.
-
-AK=
-
-# Define the compilation rules and flags.
-
-# If you system has a 64 bit type you should pass it through
-# CCFLAGS to improve support for multiple colorants. e.g.:
-#     -DGX_COLOR_INDEX_TYPE='unsigned long long'
-# or use the autoconf build, which sets this automatically.
-# If you do not define a 64 bit type, there may be some warnings
-# about oversize shifts. It's a bug if these are not harmless.
-
-CCFLAGS=$(GENOPT) $(CFLAGS)
-CC_=$(CC) $(CCFLAGS)
-CCAUX=$(CC)
-CC_NO_WARN=$(CC_)
-
-# ---------------- End of platform-specific section ---------------- #
-
-include src/unixhead.mak
-include src/gs.mak
-include src/lib.mak
-include src/int.mak
-include src/cfonts.mak
-include src/jpeg.mak
-# zlib.mak must precede libpng.mak
-include src/zlib.mak
-include src/libpng.mak
-include src/jbig2.mak
-include src/icclib.mak
-include src/ijs.mak
-include src/devs.mak
-include src/contrib.mak
-include src/plan9-aux.mak
-include src/unixlink.mak
-include src/unix-end.mak
-include src/unixinst.mak
-
-# platform-specific clean-up  
-# this makefile is intended to be hand edited so we don't distribute
-# the (presumedly modified) version in the top level directory
-distclean : clean config-clean
-	-$(RM) Makefile
-
-maintainer-clean : distclean
-	# nothing special to do
-
-# Contributed drivers not found in the current distribution
-# We reinsert them whenever we download a new distribution.
-
-### ------------------------- Plan 9 bitmaps -------------------------- ###
-### Note: this driver was contributed by a user: please contact          ###
-###       Russ Cox <[email protected]> if you have questions.      ###
-
-plan9_=$(GLOBJ)gdevplan9.$(OBJ)
-$(DD)plan9.dev : $(plan9_) $(DD)page.dev
-	$(SETPDEV) $(DD)plan9 $(plan9_)
-
-$(GLOBJ)gdevplan9.$(OBJ) : $(GLSRC)gdevplan9.c $(PDEVH) $(gsparam_h) $(gxlum_h)
-	$(GLCC) $(GLO_)gdevplan9.$(OBJ) $(C_) $(GLSRC)gdevplan9.c
-
-### -------------- cdj850 - HP 850c Driver under development ------------- ###
-### For questions about this driver, please contact:                       ###
-###       Uli Wortmann ([email protected])                                 ###
-
-cdeskjet8_=$(GLOBJ)gdevcd8.$(OBJ) $(HPPCL)
-
-$(DD)cdj850.dev : $(cdeskjet8_) $(DD)page.dev
-	$(SETPDEV2) $(DD)cdj850 $(cdeskjet8_)
-
-$(DD)cdj670.dev : $(cdeskjet8_) $(DD)page.dev
-	$(SETPDEV2) $(DD)cdj670 $(cdeskjet8_)
-
-$(DD)cdj890.dev : $(cdeskjet8_) $(DD)page.dev
-	$(SETPDEV2) $(DD)cdj890 $(cdeskjet8_)
-
-$(DD)cdj1600.dev : $(cdeskjet8_) $(DD)page.dev
-	$(SETPDEV2) $(DD)cdj1600 $(cdeskjet8_)
-
-$(GLOBJ)gdevcd8.$(OBJ) : $(GLSRC)gdevcd8.c $(PDEVH) $(math__h)\
- $(gsparam_h) $(gxlum_h) $(gdevpcl_h)
-	$(GLCC) $(GLO_)gdevcd8.$(OBJ) $(C_) $(GLSRC)gdevcd8.c
-