xref: /plan9/sys/src/libmach/5.c (revision fe48307444a1acf63db729baba08249782b86598)
17dd7cddfSDavid du Colombier /*
27dd7cddfSDavid du Colombier  * arm definition
37dd7cddfSDavid du Colombier  */
47dd7cddfSDavid du Colombier #include <u.h>
5*fe483074SDavid du Colombier #include <libc.h>
67dd7cddfSDavid du Colombier #include <bio.h>
77dd7cddfSDavid du Colombier #include "/arm/include/ureg.h"
87dd7cddfSDavid du Colombier #include <mach.h>
97dd7cddfSDavid du Colombier 
107dd7cddfSDavid du Colombier #define	REGOFF(x)	(ulong) (&((struct Ureg *) 0)->x)
117dd7cddfSDavid du Colombier 
127dd7cddfSDavid du Colombier #define SP		REGOFF(r13)
137dd7cddfSDavid du Colombier #define PC		REGOFF(pc)
147dd7cddfSDavid du Colombier 
157dd7cddfSDavid du Colombier #define	REGSIZE		sizeof(struct Ureg)
167dd7cddfSDavid du Colombier 
177dd7cddfSDavid du Colombier Reglist armreglist[] =
187dd7cddfSDavid du Colombier {
197dd7cddfSDavid du Colombier 	{"TYPE",	REGOFF(type),		RINT|RRDONLY, 'X'},
207dd7cddfSDavid du Colombier 	{"PSR",		REGOFF(psr),		RINT|RRDONLY, 'X'},
217dd7cddfSDavid du Colombier 	{"PC",		PC,			RINT, 'X'},
227dd7cddfSDavid du Colombier 	{"SP",		SP,			RINT, 'X'},
237dd7cddfSDavid du Colombier 	{"R15",		PC,			RINT, 'X'},
247dd7cddfSDavid du Colombier 	{"R14",		REGOFF(r14),		RINT, 'X'},
257dd7cddfSDavid du Colombier 	{"R13",		REGOFF(r13),		RINT, 'X'},
267dd7cddfSDavid du Colombier 	{"R12",		REGOFF(r12),		RINT, 'X'},
277dd7cddfSDavid du Colombier 	{"R11",		REGOFF(r11),		RINT, 'X'},
287dd7cddfSDavid du Colombier 	{"R10",		REGOFF(r10),		RINT, 'X'},
297dd7cddfSDavid du Colombier 	{"R9",		REGOFF(r9),		RINT, 'X'},
307dd7cddfSDavid du Colombier 	{"R8",		REGOFF(r8),		RINT, 'X'},
317dd7cddfSDavid du Colombier 	{"R7",		REGOFF(r7),		RINT, 'X'},
327dd7cddfSDavid du Colombier 	{"R6",		REGOFF(r6),		RINT, 'X'},
337dd7cddfSDavid du Colombier 	{"R5",		REGOFF(r5),		RINT, 'X'},
347dd7cddfSDavid du Colombier 	{"R4",		REGOFF(r4),		RINT, 'X'},
357dd7cddfSDavid du Colombier 	{"R3",		REGOFF(r3),		RINT, 'X'},
367dd7cddfSDavid du Colombier 	{"R2",		REGOFF(r2),		RINT, 'X'},
377dd7cddfSDavid du Colombier 	{"R1",		REGOFF(r1),		RINT, 'X'},
387dd7cddfSDavid du Colombier 	{"R0",		REGOFF(r0),		RINT, 'X'},
397dd7cddfSDavid du Colombier 	{  0 }
407dd7cddfSDavid du Colombier };
417dd7cddfSDavid du Colombier 
427dd7cddfSDavid du Colombier 	/* the machine description */
437dd7cddfSDavid du Colombier Mach marm =
447dd7cddfSDavid du Colombier {
457dd7cddfSDavid du Colombier 	"arm",
467dd7cddfSDavid du Colombier 	MARM,		/* machine type */
477dd7cddfSDavid du Colombier 	armreglist,	/* register set */
487dd7cddfSDavid du Colombier 	REGSIZE,	/* register set size */
497dd7cddfSDavid du Colombier 	0,		/* fp register set size */
507dd7cddfSDavid du Colombier 	"PC",		/* name of PC */
517dd7cddfSDavid du Colombier 	"SP",		/* name of SP */
5259cc4ca5SDavid du Colombier 	"R14",		/* name of link register */
537dd7cddfSDavid du Colombier 	"setR12",	/* static base register name */
547dd7cddfSDavid du Colombier 	0,		/* static base register value */
557dd7cddfSDavid du Colombier 	0x1000,		/* page size */
564de34a7eSDavid du Colombier 	0xC0000000ULL,	/* kernel base */
572cca75a1SDavid du Colombier 	0xC0000000ULL,	/* kernel text mask */
587ad596ffSDavid du Colombier 	0x3FFFFFFFULL,	/* user stack top */
597dd7cddfSDavid du Colombier 	4,		/* quantization of pc */
607dd7cddfSDavid du Colombier 	4,		/* szaddr */
617dd7cddfSDavid du Colombier 	4,		/* szreg */
627dd7cddfSDavid du Colombier 	4,		/* szfloat */
637dd7cddfSDavid du Colombier 	8,		/* szdouble */
647dd7cddfSDavid du Colombier };
65