xref: /csrg-svn/sys/hp300/include/frame.h (revision 41474)
1*41474Smckusick /*
2*41474Smckusick  * Copyright (c) 1988 University of Utah.
3*41474Smckusick  * Copyright (c) 1982, 1990 The Regents of the University of California.
4*41474Smckusick  * All rights reserved.
5*41474Smckusick  *
6*41474Smckusick  * This code is derived from software contributed to Berkeley by
7*41474Smckusick  * the Systems Programming Group of the University of Utah Computer
8*41474Smckusick  * Science Department.
9*41474Smckusick  *
10*41474Smckusick  * %sccs.include.redist.c%
11*41474Smckusick  *
12*41474Smckusick  * from: Utah $Hdr: frame.h 1.6 89/02/24$
13*41474Smckusick  *
14*41474Smckusick  *	@(#)frame.h	7.1 (Berkeley) 05/08/90
15*41474Smckusick  */
16*41474Smckusick 
17*41474Smckusick struct frame {
18*41474Smckusick 	int	f_regs[16];
19*41474Smckusick 	short	f_stackadj;
20*41474Smckusick 	u_short	f_sr;
21*41474Smckusick 	u_int	f_pc;
22*41474Smckusick 	u_short	f_format:4,
23*41474Smckusick 		f_vector:12;
24*41474Smckusick 	union F_u {
25*41474Smckusick 		struct fmt2 {
26*41474Smckusick 			u_int	f_iaddr;
27*41474Smckusick 		} F_fmt2;
28*41474Smckusick 
29*41474Smckusick 		struct fmt9 {
30*41474Smckusick 			u_int	f_iaddr;
31*41474Smckusick 			u_short	f_iregs[4];
32*41474Smckusick 		} F_fmt9;
33*41474Smckusick 
34*41474Smckusick 		struct fmtA {
35*41474Smckusick 			u_short	f_ir0;
36*41474Smckusick 			u_short	f_ssw;
37*41474Smckusick 			u_short	f_ipsc;
38*41474Smckusick 			u_short	f_ipsb;
39*41474Smckusick 			u_int	f_dcfa;
40*41474Smckusick 			u_short	f_ir1, f_ir2;
41*41474Smckusick 			u_int	f_dob;
42*41474Smckusick 			u_short	f_ir3, f_ir4;
43*41474Smckusick 		} F_fmtA;
44*41474Smckusick 
45*41474Smckusick 		struct fmtB {
46*41474Smckusick 			u_short	f_ir0;
47*41474Smckusick 			u_short	f_ssw;
48*41474Smckusick 			u_short	f_ipsc;
49*41474Smckusick 			u_short	f_ipsb;
50*41474Smckusick 			u_int	f_dcfa;
51*41474Smckusick 			u_short	f_ir1, f_ir2;
52*41474Smckusick 			u_int	f_dob;
53*41474Smckusick 			u_short	f_ir3, f_ir4;
54*41474Smckusick 			u_short	f_ir5, f_ir6;
55*41474Smckusick 			u_int	f_sba;
56*41474Smckusick 			u_short	f_ir7, f_ir8;
57*41474Smckusick 			u_int	f_dib;
58*41474Smckusick 			u_short	f_iregs[22];
59*41474Smckusick 		} F_fmtB;
60*41474Smckusick 	} F_u;
61*41474Smckusick };
62*41474Smckusick 
63*41474Smckusick #define	f_fmt2		F_u.F_fmt2
64*41474Smckusick #define	f_fmtA		F_u.F_fmtA
65*41474Smckusick #define	f_fmtB		F_u.F_fmtB
66*41474Smckusick 
67*41474Smckusick /* common frame size */
68*41474Smckusick #define	CFSIZE		(sizeof(struct frame) - sizeof(union F_u))
69*41474Smckusick #define	NFMTSIZE	8
70*41474Smckusick 
71*41474Smckusick #define	FMT0		0x0
72*41474Smckusick #define	FMT1		0x1
73*41474Smckusick #define	FMT2		0x2
74*41474Smckusick #define	FMT9		0x9
75*41474Smckusick #define	FMTA		0xA
76*41474Smckusick #define	FMTB		0xB
77*41474Smckusick 
78*41474Smckusick /* frame specific info sizes */
79*41474Smckusick #define	FMT0SIZE	0
80*41474Smckusick #define	FMT1SIZE	0
81*41474Smckusick #define	FMT2SIZE	sizeof(struct fmt2)
82*41474Smckusick #define	FMT9SIZE	sizeof(struct fmt9)
83*41474Smckusick #define	FMTASIZE	sizeof(struct fmtA)
84*41474Smckusick #define	FMTBSIZE	sizeof(struct fmtB)
85*41474Smckusick 
86*41474Smckusick #define	V_BUSERR	0x008
87*41474Smckusick #define	V_ADDRERR	0x00C
88*41474Smckusick #define	V_TRAP1		0x084
89*41474Smckusick 
90*41474Smckusick #define	SSW_RC		0x2000
91*41474Smckusick #define	SSW_RB		0x1000
92*41474Smckusick #define	SSW_DF		0x0100
93*41474Smckusick #define	SSW_RM		0x0080
94*41474Smckusick #define	SSW_RW		0x0040
95*41474Smckusick #define	SSW_FCMASK	0x0007
96*41474Smckusick 
97*41474Smckusick struct fpframe {
98*41474Smckusick 	union FPF_u1 {
99*41474Smckusick 		u_int	FPF_null;
100*41474Smckusick 		struct {
101*41474Smckusick 			u_char	FPF_version;
102*41474Smckusick 			u_char	FPF_fsize;
103*41474Smckusick 			u_short	FPF_res1;
104*41474Smckusick 		} FPF_nonnull;
105*41474Smckusick 	} FPF_u1;
106*41474Smckusick 	union FPF_u2 {
107*41474Smckusick 		struct fpidle {
108*41474Smckusick 			u_short	fpf_ccr;
109*41474Smckusick 			u_short	fpf_res2;
110*41474Smckusick 			u_int	fpf_iregs1[8];
111*41474Smckusick 			u_int	fpf_xops[3];
112*41474Smckusick 			u_int	fpf_opreg;
113*41474Smckusick 			u_int	fpf_biu;
114*41474Smckusick 		} FPF_idle;
115*41474Smckusick 
116*41474Smckusick 		struct fpbusy {
117*41474Smckusick 			u_int	fpf_iregs[53];
118*41474Smckusick 		} FPF_busy;
119*41474Smckusick 	} FPF_u2;
120*41474Smckusick 	u_int	fpf_regs[8*3];
121*41474Smckusick 	u_int	fpf_fpcr;
122*41474Smckusick 	u_int	fpf_fpsr;
123*41474Smckusick 	u_int	fpf_fpiar;
124*41474Smckusick };
125*41474Smckusick 
126*41474Smckusick #define fpf_null	FPF_u1.FPF_null
127*41474Smckusick #define fpf_version	FPF_u1.FPF_nonnull.FPF_version
128*41474Smckusick #define fpf_fsize	FPF_u1.FPF_nonnull.FPF_fsize
129*41474Smckusick #define fpf_res1	FPF_u1.FPF_nonnull.FPF_res1
130*41474Smckusick #define fpf_idle	FPF_u2.FPF_idle
131*41474Smckusick #define fpf_busy	FPF_u2.FPF_busy
132