xref: /csrg-svn/sys/vax/bi/kdbreg.h (revision 34293)
1*34293Skarels /*
2*34293Skarels  *	@(#)kdbreg.h	7.1 (Berkeley) 05/14/88
3*34293Skarels  */
4*34293Skarels /*
5*34293Skarels  * The KDB50 registers are embedded inside the bi interface
6*34293Skarels  * general-purpose registers.
7*34293Skarels  */
8*34293Skarels struct	kdb_regs {
9*34293Skarels 	struct	biiregs kdb_bi;
10*34293Skarels 	short	kdb_xxx;	/* first half of GPR 0 unused */
11*34293Skarels 	short	kdb_ip;		/* initialisation and polling */
12*34293Skarels 	short	kdb_sa;		/* status & address (r/o half) */
13*34293Skarels 	short	kdb_sw;		/* status & address (w/o half) */
14*34293Skarels };
15*34293Skarels 
16*34293Skarels /*
17*34293Skarels  * Bits in KDB status register during initialisation
18*34293Skarels  */
19*34293Skarels #define	KDB_ERR		0x8000	/* error */
20*34293Skarels #define	KDB_STEP4	0x4000	/* step 4 has started */
21*34293Skarels #define	KDB_STEP3	0x2000	/* step 3 has started */
22*34293Skarels #define	KDB_STEP2	0x1000	/* step 2 has started */
23*34293Skarels #define	KDB_STEP1	0x0800	/* step 1 has started */
24*34293Skarels #define	KDB_DI		0x0100	/* controller implements diagnostics */
25*34293Skarels #define	KDB_IE		0x0080	/* interrupt enable */
26*34293Skarels #define	KDB_NCNRMASK	0x003f	/* in STEP1, bits 0-2=NCMDL2, 3-5=NRSPL2 */
27*34293Skarels #define	KDB_IVECMASK	0x007f	/* in STEP2, bits 0-6 are interruptvec / 4 */
28*34293Skarels 
29*34293Skarels /* after initialisation: */
30*34293Skarels #define	KDB_GO		0x0001	/* run */
31*34293Skarels 
32*34293Skarels #define KDBSR_BITS \
33*34293Skarels "\20\20ERR\17STEP4\16STEP3\15STEP2\14STEP1\13oldNV\12oldQB\11DI\10IE\1GO"
34*34293Skarels 
35*34293Skarels /*
36*34293Skarels  * KDB Communications Area.  Note that this structure definition
37*34293Skarels  * requires NRSP and NCMD to be defined already.
38*34293Skarels  */
39*34293Skarels struct kdbca {
40*34293Skarels 	short	ca_xxx1;	/* unused */
41*34293Skarels 	char	ca_xxx2;	/* unused */
42*34293Skarels 	char	ca_bdp;		/* BDP to purge  XXX */
43*34293Skarels 	short	ca_cmdint;	/* command ring transition flag */
44*34293Skarels 	short	ca_rspint;	/* response ring transition flag */
45*34293Skarels 	long	ca_rspdsc[NRSP];/* response descriptors */
46*34293Skarels 	long	ca_cmddsc[NCMD];/* command descriptors */
47*34293Skarels };
48*34293Skarels 
49*34293Skarels /*
50*34293Skarels  * Simplified routines (crash dump) use one command and one response.
51*34293Skarels  */
52*34293Skarels struct kdb1ca {
53*34293Skarels 	long	ca_xxx;
54*34293Skarels 	short	ca_cmdint;
55*34293Skarels 	short	ca_rspint;
56*34293Skarels 	long	ca_rspdsc;
57*34293Skarels 	long	ca_cmddsc;
58*34293Skarels };
59*34293Skarels 
60*34293Skarels /*
61*34293Skarels  * Asserting KDB_MAP in values placed in mscp_seq.seq_buffer tells
62*34293Skarels  * the KDB to use mscp_seq.seq_mapbase as a set of PTEs and seq_buffer
63*34293Skarels  * as an offset value.  Hence we need no mappings; the KDB50 reads
64*34293Skarels  * the hardware page tables directly.  (Without KDB_MAP, seq_bufer
65*34293Skarels  * represents the physical memory address instead, and seq_mapbase is
66*34293Skarels  * unused.)
67*34293Skarels  */
68*34293Skarels #define	KDB_MAP		0x80000000
69*34293Skarels #define	KDB_PHYS	0		/* pseudo flag */
70*34293Skarels 
71*34293Skarels /*
72*34293Skarels  * KDB statistics.
73*34293Skarels  */
74*34293Skarels #define	KS_MAXC	32
75*34293Skarels 
76*34293Skarels struct kdbstats {
77*34293Skarels 	int	ks_sys;		/* transfers done from Sysmap */
78*34293Skarels 	int	ks_paget;	/* transfers done from Usrptmap */
79*34293Skarels 	int	ks_contig;	/* transfers done from contiguous user map */
80*34293Skarels 	int	ks_copies;	/* transfers done from pte copies */
81*34293Skarels 	int	ks_mapwait;	/* number of out-of-map waits */
82*34293Skarels 	int	ks_cmd[KS_MAXC];/* commands started at once */
83*34293Skarels 	int	ks_inval;	/* copies due to !PG_V */
84*34293Skarels };
85