Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 * 68020 definition
3
 */
4
#include <u.h>
5
#include "68020/ureg.h"
6
#include <libc.h>
7
#include <bio.h>
8
#include <mach.h>
9
 
10
#define	MAXREG	0
11
#define	MINREG	0
12
 
13
#define	REGOFF(x)	(ulong)(&((struct Ureg *) 0)->x)
14
 
15
#define	VO	REGOFF(vo)		/* vo, 2 bytes */
16
#define	SR	REGOFF(sr)		/* sr, 2 bytes */
17
#define	R0	REGOFF(r0)
18
#define	PC	REGOFF(pc)
19
#define	DBMAGIC	REGOFF(magic)
20
#define	SP	REGOFF(usp)
21
 
22
#define	REGSIZE		(R0+4)
23
#define	FCTL(x)		(REGSIZE+(x)*4)
24
#define	FREG(x)		(FCTL(3)+(x)*12)
25
#define	FPREGSIZE	(11*12)
26
 
27
/*
28
 *	68020 register set
29
 */
30
Reglist m68020reglist[] = {
31
	{"VO",		VO,		RINT,	'x'},
32
	{"SR",		SR,		RINT,	'x'},
33
	{"MAGIC",	DBMAGIC,	RINT,	'X'},
34
	{"PC",		PC,		RINT,	'X'},
35
	{"A7",		SP,		RINT,	'X'},
36
	{"KSP",		REGOFF(sp),	RINT,	'X'},
37
	{"A6",		REGOFF(a6),	RINT,	'X'},
38
	{"A5",		REGOFF(a5),	RINT,	'X'},
39
	{"A4",		REGOFF(a4),	RINT,	'X'},
40
	{"A3",		REGOFF(a3),	RINT,	'X'},
41
	{"A2",		REGOFF(a2),	RINT,	'X'},
42
	{"A1",		REGOFF(a1),	RINT,	'X'},
43
	{"A0",		REGOFF(a0),	RINT,	'X'},
44
	{"R7",		REGOFF(r7),	RINT,	'X'},
45
	{"R6",		REGOFF(r6),	RINT,	'X'},
46
	{"R5",		REGOFF(r5),	RINT,	'X'},
47
	{"R4",		REGOFF(r4),	RINT,	'X'},
48
	{"R3",		REGOFF(r3),	RINT,	'X'},
49
	{"R2",		REGOFF(r2),	RINT,	'X'},
50
	{"R1",		REGOFF(r1),	RINT,	'X'},
51
	{"R0",		REGOFF(r0),	RINT,	'X'},
52
	{"FPCR",	FCTL(0),	RFLT,	'X'},
53
	{"FPSR",	FCTL(1),	RFLT,	'X'},
54
	{"FPIAR",	FCTL(2),	RFLT,	'X'},
55
	{"F0",		FREG(0),	RFLT,	'8'},
56
	{"F1",		FREG(1),	RFLT,	'8'},
57
	{"F2",		FREG(2),	RFLT,	'8'},
58
	{"F3",		FREG(3),	RFLT,	'8'},
59
	{"F4",		FREG(4),	RFLT,	'8'},
60
	{"F5",		FREG(5),	RFLT,	'8'},
61
	{"F6",		FREG(6),	RFLT,	'8'},
62
	{"F7",		FREG(7),	RFLT,	'8'},
63
	{0}
64
};
65
 
66
Mach m68020 =
67
{
68
	"68020",
69
	M68020,		/* machine type */
70
	m68020reglist,	/* register list */
71
	REGSIZE,	/* number of bytes in reg set */
72
	FPREGSIZE,	/* number of bytes in fp reg set */
73
	"PC",
74
	"A7",
75
	0,		/* link register */
76
	"a6base",	/* static base register name */
77
	0,		/* value */
78
	0x2000,		/* page size */
79
	0x80000000ULL,	/* kernel base */
80
	0x80000000ULL,	/* kernel text mask */
81
	0x7FFFFFFFULL,	/* user stack top */
82
	2,		/* quantization of pc */
83
	4,		/* szaddr */
84
	4,		/* szreg */
85
	4,		/* szfloat */
86
	8,		/* szdouble */
87
};