xref: /plan9/sys/src/libmach/0.c (revision eaba85aa6b158bdf68fdb77f770e3ba0899a8b5e)
159cc4ca5SDavid du Colombier /*
259cc4ca5SDavid du Colombier  * mips r4k definition
317dd33a2SDavid du Colombier  *
417dd33a2SDavid du Colombier  * currently no compiler - not related to 0c
559cc4ca5SDavid du Colombier  */
659cc4ca5SDavid du Colombier #include <u.h>
7*eaba85aaSDavid du Colombier #include <libc.h>
859cc4ca5SDavid du Colombier #include <bio.h>
917dd33a2SDavid du Colombier #include "mips2ureg.h"
1059cc4ca5SDavid du Colombier #include <mach.h>
1159cc4ca5SDavid du Colombier 
1259cc4ca5SDavid du Colombier #define	FPREGBYTES	4
1359cc4ca5SDavid du Colombier #define	REGOFF(x)	(ulong)(&((struct Ureg *) 0)->x)
1459cc4ca5SDavid du Colombier 
1559cc4ca5SDavid du Colombier #define SP		REGOFF(sp)
1659cc4ca5SDavid du Colombier #define PC		REGOFF(pc)
1759cc4ca5SDavid du Colombier #define	R1		REGOFF(hr1)
1859cc4ca5SDavid du Colombier #define	R31		REGOFF(hr31)
1959cc4ca5SDavid du Colombier #define	FP_REG(x)	(R1+8+FPREGBYTES*(x))
2059cc4ca5SDavid du Colombier 
2159cc4ca5SDavid du Colombier #define	REGSIZE		sizeof(struct Ureg)
2259cc4ca5SDavid du Colombier #define	FPREGSIZE	(FPREGBYTES*33)
2359cc4ca5SDavid du Colombier 
2459cc4ca5SDavid du Colombier Reglist mips2reglist[] = {
2559cc4ca5SDavid du Colombier 	{"STATUS",	REGOFF(status),		RINT|RRDONLY, 'X'},
2659cc4ca5SDavid du Colombier 	{"CAUSE",	REGOFF(cause),		RINT|RRDONLY, 'X'},
2759cc4ca5SDavid du Colombier 	{"BADVADDR",	REGOFF(badvaddr),	RINT|RRDONLY, 'X'},
2859cc4ca5SDavid du Colombier 	{"TLBVIRT",	REGOFF(tlbvirt),	RINT|RRDONLY, 'X'},
2959cc4ca5SDavid du Colombier 	{"HI",		REGOFF(hhi),		RINT|RRDONLY, 'W'},
3059cc4ca5SDavid du Colombier 	{"LO",		REGOFF(hlo),		RINT|RRDONLY, 'W'},
3159cc4ca5SDavid du Colombier 	{"PC",		PC,		RINT, 'X'},
3259cc4ca5SDavid du Colombier 	{"SP",		SP,		RINT, 'X'},
3359cc4ca5SDavid du Colombier 	{"R31",		R31,		RINT, 'W'},
3459cc4ca5SDavid du Colombier 	{"R30",		REGOFF(hr30),	RINT, 'W'},
3559cc4ca5SDavid du Colombier 	{"R28",		REGOFF(hr28),	RINT, 'W'},
3659cc4ca5SDavid du Colombier 	{"R27",		REGOFF(hr27),	RINT, 'W'},
3759cc4ca5SDavid du Colombier 	{"R26",		REGOFF(hr26),	RINT, 'W'},
3859cc4ca5SDavid du Colombier 	{"R25",		REGOFF(hr25),	RINT, 'W'},
3959cc4ca5SDavid du Colombier 	{"R24",		REGOFF(hr24),	RINT, 'W'},
4059cc4ca5SDavid du Colombier 	{"R23",		REGOFF(hr23),	RINT, 'W'},
4159cc4ca5SDavid du Colombier 	{"R22",		REGOFF(hr22),	RINT, 'W'},
4259cc4ca5SDavid du Colombier 	{"R21",		REGOFF(hr21),	RINT, 'W'},
4359cc4ca5SDavid du Colombier 	{"R20",		REGOFF(hr20),	RINT, 'W'},
4459cc4ca5SDavid du Colombier 	{"R19",		REGOFF(hr19),	RINT, 'W'},
4559cc4ca5SDavid du Colombier 	{"R18",		REGOFF(hr18),	RINT, 'W'},
4659cc4ca5SDavid du Colombier 	{"R17",		REGOFF(hr17),	RINT, 'W'},
4759cc4ca5SDavid du Colombier 	{"R16",		REGOFF(hr16),	RINT, 'W'},
4859cc4ca5SDavid du Colombier 	{"R15",		REGOFF(hr15),	RINT, 'W'},
4959cc4ca5SDavid du Colombier 	{"R14",		REGOFF(hr14),	RINT, 'W'},
5059cc4ca5SDavid du Colombier 	{"R13",		REGOFF(hr13),	RINT, 'W'},
5159cc4ca5SDavid du Colombier 	{"R12",		REGOFF(hr12),	RINT, 'W'},
5259cc4ca5SDavid du Colombier 	{"R11",		REGOFF(hr11),	RINT, 'W'},
5359cc4ca5SDavid du Colombier 	{"R10",		REGOFF(hr10),	RINT, 'W'},
5459cc4ca5SDavid du Colombier 	{"R9",		REGOFF(hr9),	RINT, 'W'},
5559cc4ca5SDavid du Colombier 	{"R8",		REGOFF(hr8),	RINT, 'W'},
5659cc4ca5SDavid du Colombier 	{"R7",		REGOFF(hr7),	RINT, 'W'},
5759cc4ca5SDavid du Colombier 	{"R6",		REGOFF(hr6),	RINT, 'W'},
5859cc4ca5SDavid du Colombier 	{"R5",		REGOFF(hr5),	RINT, 'W'},
5959cc4ca5SDavid du Colombier 	{"R4",		REGOFF(hr4),	RINT, 'W'},
6059cc4ca5SDavid du Colombier 	{"R3",		REGOFF(hr3),	RINT, 'W'},
6159cc4ca5SDavid du Colombier 	{"R2",		REGOFF(hr2),	RINT, 'W'},
6259cc4ca5SDavid du Colombier 	{"R1",		REGOFF(hr1),	RINT, 'W'},
6359cc4ca5SDavid du Colombier 	{"F0",		FP_REG(0),	RFLT, 'F'},
6459cc4ca5SDavid du Colombier 	{"F1",		FP_REG(1),	RFLT, 'f'},
6559cc4ca5SDavid du Colombier 	{"F2",		FP_REG(2),	RFLT, 'F'},
6659cc4ca5SDavid du Colombier 	{"F3",		FP_REG(3),	RFLT, 'f'},
6759cc4ca5SDavid du Colombier 	{"F4",		FP_REG(4),	RFLT, 'F'},
6859cc4ca5SDavid du Colombier 	{"F5",		FP_REG(5),	RFLT, 'f'},
6959cc4ca5SDavid du Colombier 	{"F6",		FP_REG(6),	RFLT, 'F'},
7059cc4ca5SDavid du Colombier 	{"F7",		FP_REG(7),	RFLT, 'f'},
7159cc4ca5SDavid du Colombier 	{"F8",		FP_REG(8),	RFLT, 'F'},
7259cc4ca5SDavid du Colombier 	{"F9",		FP_REG(9),	RFLT, 'f'},
7359cc4ca5SDavid du Colombier 	{"F10",		FP_REG(10),	RFLT, 'F'},
7459cc4ca5SDavid du Colombier 	{"F11",		FP_REG(11),	RFLT, 'f'},
7559cc4ca5SDavid du Colombier 	{"F12",		FP_REG(12),	RFLT, 'F'},
7659cc4ca5SDavid du Colombier 	{"F13",		FP_REG(13),	RFLT, 'f'},
7759cc4ca5SDavid du Colombier 	{"F14",		FP_REG(14),	RFLT, 'F'},
7859cc4ca5SDavid du Colombier 	{"F15",		FP_REG(15),	RFLT, 'f'},
7959cc4ca5SDavid du Colombier 	{"F16",		FP_REG(16),	RFLT, 'F'},
8059cc4ca5SDavid du Colombier 	{"F17",		FP_REG(17),	RFLT, 'f'},
8159cc4ca5SDavid du Colombier 	{"F18",		FP_REG(18),	RFLT, 'F'},
8259cc4ca5SDavid du Colombier 	{"F19",		FP_REG(19),	RFLT, 'f'},
8359cc4ca5SDavid du Colombier 	{"F20",		FP_REG(20),	RFLT, 'F'},
8459cc4ca5SDavid du Colombier 	{"F21",		FP_REG(21),	RFLT, 'f'},
8559cc4ca5SDavid du Colombier 	{"F22",		FP_REG(22),	RFLT, 'F'},
8659cc4ca5SDavid du Colombier 	{"F23",		FP_REG(23),	RFLT, 'f'},
8759cc4ca5SDavid du Colombier 	{"F24",		FP_REG(24),	RFLT, 'F'},
8859cc4ca5SDavid du Colombier 	{"F25",		FP_REG(25),	RFLT, 'f'},
8959cc4ca5SDavid du Colombier 	{"F26",		FP_REG(26),	RFLT, 'F'},
9059cc4ca5SDavid du Colombier 	{"F27",		FP_REG(27),	RFLT, 'f'},
9159cc4ca5SDavid du Colombier 	{"F28",		FP_REG(28),	RFLT, 'F'},
9259cc4ca5SDavid du Colombier 	{"F29",		FP_REG(29),	RFLT, 'f'},
9359cc4ca5SDavid du Colombier 	{"F30",		FP_REG(30),	RFLT, 'F'},
9459cc4ca5SDavid du Colombier 	{"F31",		FP_REG(31),	RFLT, 'f'},
9559cc4ca5SDavid du Colombier 	{"FPCR",	FP_REG(32),	RFLT, 'X'},
9659cc4ca5SDavid du Colombier 	{  0 }
9759cc4ca5SDavid du Colombier };
9859cc4ca5SDavid du Colombier 
9959cc4ca5SDavid du Colombier 	/* mips r4k big-endian */
10059cc4ca5SDavid du Colombier Mach mmips2be =
10159cc4ca5SDavid du Colombier {
10259cc4ca5SDavid du Colombier 	"mips2",
10359cc4ca5SDavid du Colombier 	MMIPS2,		/* machine type */
10459cc4ca5SDavid du Colombier 	mips2reglist,	/* register set */
10559cc4ca5SDavid du Colombier 	REGSIZE,	/* number of bytes in reg set */
10659cc4ca5SDavid du Colombier 	FPREGSIZE,	/* number of bytes in fp reg set */
10759cc4ca5SDavid du Colombier 	"PC",		/* name of PC */
10859cc4ca5SDavid du Colombier 	"SP",		/* name of SP */
10959cc4ca5SDavid du Colombier 	"R31",		/* name of link register */
11059cc4ca5SDavid du Colombier 	"setR30",	/* static base register name */
11159cc4ca5SDavid du Colombier 	0,		/* SB value */
11259cc4ca5SDavid du Colombier 	0x1000,		/* page size */
11359cc4ca5SDavid du Colombier 	0xC0000000,	/* kernel base */
11459cc4ca5SDavid du Colombier 	0x40000000,	/* kernel text mask */
11517dd33a2SDavid du Colombier 	0x7FFFFFFFULL,	/* user stack top */
11659cc4ca5SDavid du Colombier 	4,		/* quantization of pc */
11759cc4ca5SDavid du Colombier 	4,		/* szaddr */
11859cc4ca5SDavid du Colombier 	8,		/* szreg */
11959cc4ca5SDavid du Colombier 	4,		/* szfloat */
12059cc4ca5SDavid du Colombier 	8,		/* szdouble */
12159cc4ca5SDavid du Colombier };
12259cc4ca5SDavid du Colombier 
12359cc4ca5SDavid du Colombier 	/* mips r4k little-endian */
12459cc4ca5SDavid du Colombier Mach mmips2le =
12559cc4ca5SDavid du Colombier {
12659cc4ca5SDavid du Colombier 	"mips2",
12759cc4ca5SDavid du Colombier 	NMIPS2,		/* machine type */
12859cc4ca5SDavid du Colombier 	mips2reglist,	/* register set */
12959cc4ca5SDavid du Colombier 	REGSIZE,	/* number of bytes in reg set */
13059cc4ca5SDavid du Colombier 	FPREGSIZE,	/* number of bytes in fp reg set */
13159cc4ca5SDavid du Colombier 	"PC",		/* name of PC */
13259cc4ca5SDavid du Colombier 	"SP",		/* name of SP */
13359cc4ca5SDavid du Colombier 	"R31",		/* name of link register */
13459cc4ca5SDavid du Colombier 	"setR30",	/* static base register name */
13559cc4ca5SDavid du Colombier 	0,		/* SB value */
13659cc4ca5SDavid du Colombier 	0x1000,		/* page size */
1374de34a7eSDavid du Colombier 	0xC0000000ULL,	/* kernel base */
1384de34a7eSDavid du Colombier 	0x40000000ULL,	/* kernel text mask */
1394de34a7eSDavid du Colombier 	0x7FFFFFFFULL,	/* user stack top */
14059cc4ca5SDavid du Colombier 	4,		/* quantization of pc */
14159cc4ca5SDavid du Colombier 	4,		/* szaddr */
14259cc4ca5SDavid du Colombier 	8,		/* szreg */
14359cc4ca5SDavid du Colombier 	4,		/* szfloat */
14459cc4ca5SDavid du Colombier 	8,		/* szdouble */
14559cc4ca5SDavid du Colombier };
146