Browse Source

Plan 9 from Bell Labs 2012-09-25

David du Colombier 11 years ago
parent
commit
a7c9fee2c6

+ 0 - 74
68020/include/ape/float.h

@@ -1,74 +0,0 @@
-#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 */

+ 0 - 77
68020/include/ape/math.h

@@ -1,77 +0,0 @@
-#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 */

+ 0 - 18
68020/include/ape/stdarg.h

@@ -1,18 +0,0 @@
-#ifndef __STDARG
-#define __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)
-#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])
-
-#endif /* __STDARG */

+ 0 - 36
68020/include/ape/ureg.h

@@ -1,36 +0,0 @@
-#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

+ 0 - 14
68020/include/dac.h

@@ -1,14 +0,0 @@
-/*
- * Inmos G17x d/a converter
- */
-
-typedef
-struct	G170
-{
-	uchar	waddr;
-	uchar	value;
-	uchar	mask;
-	uchar	raddr;
-} G170;
-
-#define DAC	((G170*)0xc0100000)

+ 0 - 3
68020/include/lbp.h

@@ -1,3 +0,0 @@
-typedef struct Lbpconf {
-	int nhblank, nvblank, xmax, ymax, res;
-} Lbpconf;

+ 0 - 66
68020/include/u.h

@@ -1,66 +0,0 @@
-#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])

+ 0 - 7
68020/mkfile

@@ -1,7 +0,0 @@
-</sys/src/mkfile.proto
-
-CC=2c
-LD=2l
-O=2
-RL=rl
-AS=2a

+ 1 - 1
sys/man/1/2a

@@ -1,6 +1,6 @@
 .TH 2A 1 
 .SH NAME
-0a, 1a, 2a, 5a, 6a, 8a, 9a, ka, qa, va \- assemblers
+0a, 2a, 5a, 6a, 8a, 9a, ka, qa, va \- assemblers
 .SH SYNOPSIS
 .B 2a
 [

+ 1 - 4
sys/man/1/2c

@@ -1,6 +1,6 @@
 .TH 2C 1
 .SH NAME
-0c, 1c, 2c, 5c, 6c, 8c, 9c, kc, qc, vc \- C compilers
+0c, 2c, 5c, 6c, 8c, 9c, kc, qc, vc \- C compilers
 .SH SYNOPSIS
 .B 2c
 [
@@ -29,9 +29,6 @@ for example
 .B "0c spim
 little-endian MIPS 3000 family
 .TP
-.B "1c 68000
-Motorola MC68000
-.TP
 .B "2c 68020
 Motorola MC68020
 .TP

+ 2 - 2
sys/man/1/2l

@@ -1,6 +1,6 @@
 .TH 2L 1 
 .SH NAME
-0l, 1l, 2l, 5l, 6l, 8l, 9l, kl, ql, vl \- loaders
+0l, 2l, 5l, 6l, 8l, 9l, kl, ql, vl \- loaders
 .SH SYNOPSIS
 .B 2l
 [
@@ -32,7 +32,7 @@ in
 where
 .I objtype
 is one of
-.BR 68000 ,
+.BR 386 ,
 etc. as listed in
 .IR 2c (1).
 The libraries must have tables of contents

+ 1 - 18
sys/src/libc/9syscall/mkfile

@@ -8,11 +8,6 @@ install:V:
 		n=`{sed -n '/[ 	]'$I'[ 	]/s/.*	//p' sys.h}
 		if(~ $i exits) i=_exits
 		{switch($objtype){
-		case 68000 68020
-			echo TEXT $i'(SB)', 1, '$0'
-			echo MOVL '$'$n, R0
-			echo TRAP '$0'
-			echo RTS
 		case mips
 			echo TEXT $i'(SB)', 1, '$0'
 			echo MOVW R1, '0(FP)'
@@ -70,7 +65,7 @@ install:V:
 			echo MOVQ '$'$n, RARG
 			echo SYSCALL
 			echo RET
-		case sparc sparc64
+		case sparc
 			echo TEXT $i'(SB)', 1, '$0'
 			echo MOVW R7, '0(FP)'
 			echo MOVW '$'$n, R7
@@ -83,18 +78,6 @@ install:V:
 				MOVW R7,4(R8)'
 			}
 			echo RETURN
-		case 3210
-			echo TEXT $i'(SB)', 1, '$0'
-			echo MOVW R3, '0(FP)'
-			echo MOVW '$'$n, R3
-			echo WORD '$0x06000000'
-			echo RETURN
-		case 29000
-			echo TEXT $i'(SB)', 1, '$0'
-			echo MOVL R69, '0(FP)'
-			echo MOVL '$'$n, R69
-			echo EMULATE 0
-			echo RET
 		case arm
 			echo TEXT $i'(SB)', 1, '$0'
 			echo MOVW R0, '0(FP)'

+ 0 - 0
68020/include/ureg.h → sys/src/libmach/1c/ureg.h


+ 1 - 1
sys/src/libmach/2.c

@@ -2,7 +2,7 @@
  * 68020 definition
  */
 #include <u.h>
-#include "/68020/include/ureg.h"
+#include "2c/ureg.h"
 #include <bio.h>
 #include <mach.h>
 

+ 523 - 0
sys/src/libmach/2c/2.out.h

@@ -0,0 +1,523 @@
+#define	NSYM	50
+#define	NSNAME	8
+
+/* R0 is return */
+#define	REGEXT	7
+/* A7 is sp A6 is sb */
+#define	AREGEXT	5
+/* F0 is ret */
+#define	FREGEXT	7
+
+enum	as
+{
+	AXXX = 0,
+	AABCD,
+	AADDB,
+	AADDL,
+	AADDW,
+	AADDXB,
+	AADDXL,
+	AADDXW,
+	AADJSP,
+	AANDB,
+	AANDL,
+	AANDW,
+	AASLB,
+	AASLL,
+	AASLW,
+	AASRB,
+	AASRL,
+	AASRW,
+	ABCASE,
+	ABCC,
+	ABCHG,
+	ABCLR,
+	ABCS,
+	ABEQ,
+	ABFCHG,
+	ABFCLR,
+	ABFEXTS,
+	ABFEXTU,
+	ABFFFO,
+	ABFINS,
+	ABFSET,
+	ABFTST,
+	ABGE,
+	ABGT,
+	ABHI,
+	ABKPT,
+	ABLE,
+	ABLS,
+	ABLT,
+	ABMI,
+	ABNE,
+	ABPL,
+	ABRA,
+	ABSET,
+	ABSR,
+	ABTST,
+	ABVC,
+	ABVS,
+	ACALLM,
+	ACAS2B,
+	ACAS2L,
+	ACAS2W,
+	ACASB,
+	ACASEW,
+	ACASL,
+	ACASW,
+	ACHK2B,
+	ACHK2L,
+	ACHK2W,
+	ACHKL,
+	ACHKW,
+	ACLRB,
+	ACLRL,
+	ACLRW,
+	ACMP2B,
+	ACMP2L,
+	ACMP2W,
+	ACMPB,
+	ACMPL,
+	ACMPW,
+	ADATA,
+	ADBCC,
+	ADBCS,
+	ADBEQ,
+	ADBF,
+	ADBGE,
+	ADBGT,
+	ADBHI,
+	ADBLE,
+	ADBLS,
+	ADBLT,
+	ADBMI,
+	ADBNE,
+	ADBPL,
+	ADBT,
+	ADBVC,
+	ADBVS,
+	ADIVSL,
+	ADIVSW,
+	ADIVUL,
+	ADIVUW,
+	AEND,
+	AEORB,
+	AEORL,
+	AEORW,
+	AEXG,
+	AEXTBL,
+	AEXTBW,
+	AEXTWL,
+	AFABSB,
+	AFABSD,
+	AFABSF,
+	AFABSL,
+	AFABSW,
+	AFACOSB,
+	AFACOSD,
+	AFACOSF,
+	AFACOSL,
+	AFACOSW,
+	AFADDB,
+	AFADDD,
+	AFADDF,
+	AFADDL,
+	AFADDW,
+	AFASINB,
+	AFASIND,
+	AFASINF,
+	AFASINL,
+	AFASINW,
+	AFATANB,
+	AFATAND,
+	AFATANF,
+	AFATANHB,
+	AFATANHD,
+	AFATANHF,
+	AFATANHL,
+	AFATANHW,
+	AFATANL,
+	AFATANW,
+	AFBEQ,
+	AFBF,
+	AFBGE,
+	AFBGT,
+	AFBLE,
+	AFBLT,
+	AFBNE,
+	AFBT,
+	AFCMPB,
+	AFCMPD,
+	AFCMPF,
+	AFCMPL,
+	AFCMPW,
+	AFCOSB,
+	AFCOSD,
+	AFCOSF,
+	AFCOSHB,
+	AFCOSHD,
+	AFCOSHF,
+	AFCOSHL,
+	AFCOSHW,
+	AFCOSL,
+	AFCOSW,
+	AFDBEQ,
+	AFDBF,
+	AFDBGE,
+	AFDBGT,
+	AFDBLE,
+	AFDBLT,
+	AFDBNE,
+	AFDBT,
+	AFDIVB,
+	AFDIVD,
+	AFDIVF,
+	AFDIVL,
+	AFDIVW,
+	AFETOXB,
+	AFETOXD,
+	AFETOXF,
+	AFETOXL,
+	AFETOXM1B,
+	AFETOXM1D,
+	AFETOXM1F,
+	AFETOXM1L,
+	AFETOXM1W,
+	AFETOXW,
+	AFGETEXPB,
+	AFGETEXPD,
+	AFGETEXPF,
+	AFGETEXPL,
+	AFGETEXPW,
+	AFGETMANB,
+	AFGETMAND,
+	AFGETMANF,
+	AFGETMANL,
+	AFGETMANW,
+	AFINTB,
+	AFINTD,
+	AFINTF,
+	AFINTL,
+	AFINTRZB,
+	AFINTRZD,
+	AFINTRZF,
+	AFINTRZL,
+	AFINTRZW,
+	AFINTW,
+	AFLOG10B,
+	AFLOG10D,
+	AFLOG10F,
+	AFLOG10L,
+	AFLOG10W,
+	AFLOG2B,
+	AFLOG2D,
+	AFLOG2F,
+	AFLOG2L,
+	AFLOG2W,
+	AFLOGNB,
+	AFLOGND,
+	AFLOGNF,
+	AFLOGNL,
+	AFLOGNP1B,
+	AFLOGNP1D,
+	AFLOGNP1F,
+	AFLOGNP1L,
+	AFLOGNP1W,
+	AFLOGNW,
+	AFMODB,
+	AFMODD,
+	AFMODF,
+	AFMODL,
+	AFMODW,
+	AFMOVEB,
+	AFMOVED,
+	AFMOVEF,
+	AFMOVEL,
+	AFMOVEM,
+	AFMOVEMC,
+	AFMOVEW,
+	AFMULB,
+	AFMULD,
+	AFMULF,
+	AFMULL,
+	AFMULW,
+	AFNEGB,
+	AFNEGD,
+	AFNEGF,
+	AFNEGL,
+	AFNEGW,
+	AFREMB,
+	AFREMD,
+	AFREMF,
+	AFREML,
+	AFREMW,
+	AFRESTORE,
+	AFSAVE,
+	AFSCALEB,
+	AFSCALED,
+	AFSCALEF,
+	AFSCALEL,
+	AFSCALEW,
+	AFSEQ,
+	AFSF,
+	AFSGE,
+	AFSGT,
+	AFSINB,
+	AFSIND,
+	AFSINF,
+	AFSINHB,
+	AFSINHD,
+	AFSINHF,
+	AFSINHL,
+	AFSINHW,
+	AFSINL,
+	AFSINW,
+	AFSLE,
+	AFSLT,
+	AFSNE,
+	AFSQRTB,
+	AFSQRTD,
+	AFSQRTF,
+	AFSQRTL,
+	AFSQRTW,
+	AFST,
+	AFSUBB,
+	AFSUBD,
+	AFSUBF,
+	AFSUBL,
+	AFSUBW,
+	AFTANB,
+	AFTAND,
+	AFTANF,
+	AFTANHB,
+	AFTANHD,
+	AFTANHF,
+	AFTANHL,
+	AFTANHW,
+	AFTANL,
+	AFTANW,
+	AFTENTOXB,
+	AFTENTOXD,
+	AFTENTOXF,
+	AFTENTOXL,
+	AFTENTOXW,
+	AFTSTB,
+	AFTSTD,
+	AFTSTF,
+	AFTSTL,
+	AFTSTW,
+	AFTWOTOXB,
+	AFTWOTOXD,
+	AFTWOTOXF,
+	AFTWOTOXL,
+	AFTWOTOXW,
+	AGLOBL,
+	AGOK,
+	AHISTORY,
+	AILLEG,
+	AINSTR,
+	AJMP,
+	AJSR,
+	ALEA,
+	ALINKL,
+	ALINKW,
+	ALOCATE,
+	ALONG,
+	ALSLB,
+	ALSLL,
+	ALSLW,
+	ALSRB,
+	ALSRL,
+	ALSRW,
+	AMOVB,
+	AMOVEM,
+	AMOVEPL,
+	AMOVEPW,
+	AMOVESB,
+	AMOVESL,
+	AMOVESW,
+	AMOVL,
+	AMOVW,
+	AMULSL,
+	AMULSW,
+	AMULUL,
+	AMULUW,
+	ANAME,
+	ANBCD,
+	ANEGB,
+	ANEGL,
+	ANEGW,
+	ANEGXB,
+	ANEGXL,
+	ANEGXW,
+	ANOP,
+	ANOTB,
+	ANOTL,
+	ANOTW,
+	AORB,
+	AORL,
+	AORW,
+	APACK,
+	APEA,
+	ARESET,
+	AROTLB,
+	AROTLL,
+	AROTLW,
+	AROTRB,
+	AROTRL,
+	AROTRW,
+	AROXLB,
+	AROXLL,
+	AROXLW,
+	AROXRB,
+	AROXRL,
+	AROXRW,
+	ARTD,
+	ARTE,
+	ARTM,
+	ARTR,
+	ARTS,
+	ASBCD,
+	ASCC,
+	ASCS,
+	ASEQ,
+	ASF,
+	ASGE,
+	ASGT,
+	ASHI,
+	ASLE,
+	ASLS,
+	ASLT,
+	ASMI,
+	ASNE,
+	ASPL,
+	AST,
+	ASTOP,
+	ASUBB,
+	ASUBL,
+	ASUBW,
+	ASUBXB,
+	ASUBXL,
+	ASUBXW,
+	ASVC,
+	ASVS,
+	ASWAP,
+	ASYS,
+	ATAS,
+	ATEXT,
+	ATRAP,
+	ATRAPCC,
+	ATRAPCS,
+	ATRAPEQ,
+	ATRAPF,
+	ATRAPGE,
+	ATRAPGT,
+	ATRAPHI,
+	ATRAPLE,
+	ATRAPLS,
+	ATRAPLT,
+	ATRAPMI,
+	ATRAPNE,
+	ATRAPPL,
+	ATRAPT,
+	ATRAPV,
+	ATRAPVC,
+	ATRAPVS,
+	ATSTB,
+	ATSTL,
+	ATSTW,
+	AUNLK,
+	AUNPK,
+	AWORD,
+	ASIGNAME,
+
+	ALAST
+};
+
+enum
+{
+	NREG		= 8,
+
+	D_R0		= 0,
+	D_A0		= NREG,
+	D_F0		= D_A0+NREG,
+	D_NONE		= D_F0+NREG,
+	D_TOS,
+	D_BRANCH,
+	D_STACK,
+	D_TREE,
+	D_EXTERN,
+	D_STATIC,
+	D_AUTO,
+	D_PARAM,
+	D_CONST,
+	D_FCONST,
+	D_QUICK,
+
+	D_CCR,
+	D_SR,
+	D_SFC,
+	D_CACR,
+	D_USP,
+	D_VBR,
+	D_CAAR,
+	D_MSP,
+	D_ISP,
+	D_DFC,
+	D_FPCR,
+	D_FPSR,
+	D_FPIAR,
+	D_SCONST,
+	D_FILE,
+
+	D_TC,		/* new for 68040 */
+	D_ITT0,
+	D_ITT1,
+	D_DTT0,
+	D_DTT1,
+	D_MMUSR,
+	D_URP,
+	D_SRP,
+
+	D_FILE1,
+
+	D_MASK		= 63/(D_SRP>=63?0:1),
+
+	I_DIR		= (D_MASK+1)*0,
+	I_INDINC	= (D_MASK+1)*1,
+	I_INDDEC	= (D_MASK+1)*2,
+	I_INDIR		= (D_MASK+1)*3,
+	I_ADDR		= (D_MASK+1)*4,
+
+	I_INDEX1	= (D_MASK+1)*1,
+	I_INDEX2	= (D_MASK+1)*2,
+	I_INDEX3	= (D_MASK+1)*3,
+
+	I_MASK		= (D_MASK+1)*7,
+
+	T_FIELD		= 1<<0,
+	T_INDEX		= 1<<1,
+	T_TYPE		= 1<<2,
+	T_OFFSET	= 1<<3,
+	T_FCONST	= 1<<4,
+	T_SYM		= 1<<5,
+	T_SCONST	= 1<<6
+};
+
+/*
+ * this is the ranlib header
+ */
+#define	SYMDEF	"__.SYMDEF"
+
+/*
+ * this is the simulated IEEE floating point
+ */
+typedef	struct	ieee	Ieee;
+struct	ieee
+{
+	long	l;	/* contains ls-man	0xffffffff */
+	long	h;	/* contains sign	0x80000000
+				    exp		0x7ff00000
+				    ms-man	0x000fffff */
+};

+ 28 - 0
sys/src/libmach/2c/ureg.h

@@ -0,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 */
+};

+ 4 - 6
sys/src/libmach/mkfile

@@ -56,15 +56,13 @@ UPDATE=mkfile\
 
 CFLAGS=$CFLAGS -I/sys/src/cmd
 
-2obj.$O: /sys/src/cmd/2c/2.out.h
+2obj.$O: 2c/2.out.h
 5obj.$O: /sys/src/cmd/5c/5.out.h
 6obj.$O: /sys/src/cmd/6c/6.out.h
+7obj.$O: 7c/7.out.h
 8obj.$O: /sys/src/cmd/8c/8.out.h
+9obj.$O: 9c/9.out.h
 kobj.$O: /sys/src/cmd/kc/k.out.h
 qobj.$O: /sys/src/cmd/qc/q.out.h
+uobj.$O: uc/u.out.h
 vobj.$O: /sys/src/cmd/vc/v.out.h
-
-7obj.$O: 7c/7.out.h
-
-# 9obj.$O: /sys/src/cmd/9c/9.out.h
-# uobj.$O: uc/u.out.h