xref: /csrg-svn/old/adb/adb.hp300/defs.h (revision 59795)
1*59795Shibler /*	defs.h	4.6	86/03/26	*/
2*59795Shibler 
3*59795Shibler /*
4*59795Shibler  * adb - vax string table version; common definitions
5*59795Shibler  */
6*59795Shibler #include <sys/param.h>
7*59795Shibler 
8*59795Shibler #include <machine/psl.h>
9*59795Shibler #ifdef NEWVM
10*59795Shibler typedef	unsigned long Ooff_t;
11*59795Shibler #define	off_t Ooff_t
12*59795Shibler #include <hp300/pte.h>
13*59795Shibler #else
14*59795Shibler #include <machine/pte.h>
15*59795Shibler #endif
16*59795Shibler 
17*59795Shibler #include <sys/user.h>
18*59795Shibler 
19*59795Shibler #include <ctype.h>
20*59795Shibler #include <a.out.h>
21*59795Shibler #include <sys/ptrace.h>
22*59795Shibler 
23*59795Shibler #include "mac.h"
24*59795Shibler #include "mode.h"
25*59795Shibler #include "head.h"
26*59795Shibler 
27*59795Shibler /* access modes */
28*59795Shibler #define RD	0
29*59795Shibler #define WT	1
30*59795Shibler 
31*59795Shibler #define NSP	0
32*59795Shibler #define	ISP	1
33*59795Shibler #define	DSP	2
34*59795Shibler #define STAR	4
35*59795Shibler #define PSP	8
36*59795Shibler #define STARCOM 0200
37*59795Shibler 
38*59795Shibler #ifdef pdp11
39*59795Shibler I guess I should look this up in the 2.10 source...
40*59795Shibler #endif
41*59795Shibler 
42*59795Shibler #ifdef vax
43*59795Shibler /*
44*59795Shibler  * Symbol types, used internally in calls to findsym routine.
45*59795Shibler  * One the VAX this all degenerates since I & D symbols are indistinct.
46*59795Shibler  * Basically we get NSYM==0 for `=' command, ISYM==DSYM otherwise.
47*59795Shibler  */
48*59795Shibler #define NSYM	0
49*59795Shibler #define DSYM	1		/* Data space symbol */
50*59795Shibler #define ISYM	DSYM		/* Instruction space symbol == DSYM on VAX */
51*59795Shibler 
52*59795Shibler #define BKPTSET	1
53*59795Shibler #define BKPTEXEC 2
54*59795Shibler 
55*59795Shibler #define USERPS	PSL
56*59795Shibler #define USERPC	PC
57*59795Shibler #define BPT	03
58*59795Shibler #define TBIT	020
59*59795Shibler #define FD	0200
60*59795Shibler #define getradj(i)	0
61*59795Shibler #define lget	get
62*59795Shibler 
63*59795Shibler /* puns from <sys/ptrace.h> */
64*59795Shibler #define	CONTIN	PT_CONTINUE
65*59795Shibler #define SINGLE	PT_STEP
66*59795Shibler 
67*59795Shibler /* the quantities involving ctob() are located in the kernel stack. */
68*59795Shibler /* the others are in the pcb. */
69*59795Shibler #define KSP	0
70*59795Shibler #define ESP	4
71*59795Shibler #define SSP	8
72*59795Shibler #define USP	(ctob(UPAGES)-5*sizeof(int))
73*59795Shibler 
74*59795Shibler /* should read this in from reg.h */
75*59795Shibler #define R0	(ctob(UPAGES)-18*sizeof(int))
76*59795Shibler #define R1	(ctob(UPAGES)-17*sizeof(int))
77*59795Shibler #define R2	(ctob(UPAGES)-16*sizeof(int))
78*59795Shibler #define R3	(ctob(UPAGES)-15*sizeof(int))
79*59795Shibler #define R4	(ctob(UPAGES)-14*sizeof(int))
80*59795Shibler #define R5	(ctob(UPAGES)-13*sizeof(int))
81*59795Shibler #define R6	(ctob(UPAGES)-12*sizeof(int))
82*59795Shibler #define R7	(ctob(UPAGES)-11*sizeof(int))
83*59795Shibler #define R8	(ctob(UPAGES)-10*sizeof(int))
84*59795Shibler #define R9	(ctob(UPAGES)-9*sizeof(int))
85*59795Shibler #define R10	(ctob(UPAGES)-8*sizeof(int))
86*59795Shibler #define R11	(ctob(UPAGES)-7*sizeof(int))
87*59795Shibler #define AP	(ctob(UPAGES)-21*sizeof(int))
88*59795Shibler #define FP	(ctob(UPAGES)-20*sizeof(int))
89*59795Shibler #define PC	(ctob(UPAGES)-2*sizeof(int))
90*59795Shibler #define PSL	(ctob(UPAGES)-1*sizeof(int))
91*59795Shibler 
92*59795Shibler #define P0BR	80
93*59795Shibler #define P0LR	84
94*59795Shibler #define P1BR	88
95*59795Shibler #define P1LR	92
96*59795Shibler #endif
97*59795Shibler 
98*59795Shibler #ifdef hp300
99*59795Shibler #define NSYM	0		/* ??? */
100*59795Shibler #define DSYM	1		/* Data space symbol */
101*59795Shibler #define ISYM	DSYM		/* Instruction space symbol */
102*59795Shibler 
103*59795Shibler #define BKPTSET	1
104*59795Shibler #define BKPTEXEC 2
105*59795Shibler 
106*59795Shibler extern L_INT	getradj();
107*59795Shibler 
108*59795Shibler #define BPT	0x4e42
109*59795Shibler 
110*59795Shibler /* puns from <sys/ptrace.h> */
111*59795Shibler #define	CONTIN	PT_CONTINUE
112*59795Shibler #define SINGLE	PT_STEP
113*59795Shibler 
114*59795Shibler /*
115*59795Shibler  * Appropriated from dbx (returning a favor)
116*59795Shibler  * `10' comes from:
117*59795Shibler  *	(4)	stack starts 4 bytes in from end of uarea
118*59795Shibler  *	(2)	trap type 0 frame format word is 2 bytes back from that
119*59795Shibler  *	(4)	trap type 0 pc is 4 bytes back from that
120*59795Shibler  */
121*59795Shibler #define	regloc(reg)	(ctob(UPAGES) + (sizeof(int) * ((reg) - 17)) - 10)
122*59795Shibler 
123*59795Shibler /* select map */
124*59795Shibler #define	mapptr(s)	(((s)&DSP)?&datmap:(((s)&PSP)?&physmap:&txtmap))
125*59795Shibler 
126*59795Shibler #define KSP	12	/* who knows? */
127*59795Shibler 
128*59795Shibler /* should read this in from reg.h */
129*59795Shibler #define	D0	regloc(0)
130*59795Shibler #define	D1	regloc(1)
131*59795Shibler #define	D2	regloc(2)
132*59795Shibler #define	D3	regloc(3)
133*59795Shibler #define	D4	regloc(4)
134*59795Shibler #define	D5	regloc(5)
135*59795Shibler #define	D6	regloc(6)
136*59795Shibler #define	D7	regloc(7)
137*59795Shibler #define	A0	regloc(8)
138*59795Shibler #define	A1	regloc(9)
139*59795Shibler #define	A2	regloc(10)
140*59795Shibler #define	A3	regloc(11)
141*59795Shibler #define	A4	regloc(12)
142*59795Shibler #define	A5	regloc(13)
143*59795Shibler #define	A6	regloc(14)
144*59795Shibler #define	A7	regloc(15)
145*59795Shibler /*
146*59795Shibler  * In 4.4 these have changed, stackadj (pad) field is 4 bytes not 2
147*59795Shibler  * so PSW/PC are 2 bytes further away from D0.
148*59795Shibler  */
149*59795Shibler #if defined(BSD4_4) || defined(HPBSD)
150*59795Shibler #define	PSW	(regloc(16)+2)
151*59795Shibler #define	PC	(regloc(17)+2)
152*59795Shibler #else
153*59795Shibler #define	PSW	regloc(16)
154*59795Shibler #define	PC	regloc(17)
155*59795Shibler #endif
156*59795Shibler #define FP	A6
157*59795Shibler #define USP	A7
158*59795Shibler 
159*59795Shibler #define P0BR	60
160*59795Shibler #define P0LR	64
161*59795Shibler #define P1BR	68
162*59795Shibler #define P1LR	72
163*59795Shibler 
164*59795Shibler #define	FP0	332
165*59795Shibler #define	FP1	344
166*59795Shibler #define	FP2	356
167*59795Shibler #define	FP3	368
168*59795Shibler #define	FP4	380
169*59795Shibler #define	FP5	392
170*59795Shibler #define	FP6	404
171*59795Shibler #define	FP7	416
172*59795Shibler #define	FPCR	428
173*59795Shibler #define	FPSR	432
174*59795Shibler #define	FPIAR	436
175*59795Shibler #endif
176*59795Shibler 
177*59795Shibler #if !defined(pdp11) && !defined(vax) && !defined(hp300)
178*59795Shibler 
179*59795Shibler "edit this file to accommodate your machine's addressing"
180*59795Shibler 
181*59795Shibler #endif
182*59795Shibler 
183*59795Shibler #define MAXOFF	255
184*59795Shibler #define MAXPOS	80
185*59795Shibler #define MAXLIN	128
186*59795Shibler #define EOR	'\n'
187*59795Shibler #define SP	' '
188*59795Shibler #define TB	'\t'
189*59795Shibler #define QUOTE	0200
190*59795Shibler #define STRIP	0177
191*59795Shibler #define EVEN	-2
192*59795Shibler 
193*59795Shibler /* long to ints and back (puns) */
194*59795Shibler union {
195*59795Shibler 	INT	I[2];
196*59795Shibler 	L_INT	L;
197*59795Shibler } itolws;
198*59795Shibler 
199*59795Shibler #ifdef pdp11
200*59795Shibler #define leng(a)		((long)((unsigned)(a)))
201*59795Shibler #define shorten(a)	((int)(a))
202*59795Shibler #define itol(a,b)	(itolws.I[0]=(a), itolws.I[1]=(b), itolws.L)
203*59795Shibler #define lobyte(a)	((a) & 0377)
204*59795Shibler #endif
205*59795Shibler 
206*59795Shibler #ifdef vax
207*59795Shibler #define leng(a)		itol(0,a)
208*59795Shibler #define shorten(a)	((short)(a))
209*59795Shibler #define itol(a,b)	(itolws.I[0]=(b), itolws.I[1]=(a), itolws.L)
210*59795Shibler #define lobyte(a)	((a) & 0377)
211*59795Shibler #endif
212*59795Shibler 
213*59795Shibler #ifdef mc68000
214*59795Shibler #define leng(a)		itol(0,a)
215*59795Shibler #define shorten(a)	((short)(a))
216*59795Shibler #define itol(a,b)	(itolws.I[0]=(a), itolws.I[1]=(b), itolws.L)
217*59795Shibler #define lobyte(a)	(((a) >> 8) & 0377)
218*59795Shibler #endif
219*59795Shibler 
220*59795Shibler #if !defined(vax) && !defined(pdp11) && !defined(mc68000)
221*59795Shibler 
222*59795Shibler "edit this file to suit your machine's byte order"
223*59795Shibler 
224*59795Shibler #endif
225*59795Shibler 
226*59795Shibler /* result type declarations */
227*59795Shibler L_INT		inkdot();
228*59795Shibler POS		get();
229*59795Shibler POS		chkget();
230*59795Shibler POS		lchkget();
231*59795Shibler STRING		exform();
232*59795Shibler L_INT		round();
233*59795Shibler BKPTR		scanbkpt();
234*59795Shibler VOID		fault();
235*59795Shibler 
236*59795Shibler struct	pcb	pcb;
237*59795Shibler int	kernel;
238*59795Shibler int	kcore;
239*59795Shibler struct	pte *sbr;
240*59795Shibler int	slr;
241*59795Shibler int	masterpcbb;
242