xref: /csrg-svn/sys/vax/bi/kdbreg.h (revision 44542)
134293Skarels /*
235041Sbostic  * Copyright (c) 1988 Regents of the University of California.
335041Sbostic  * All rights reserved.
435041Sbostic  *
535041Sbostic  * This code is derived from software contributed to Berkeley by
635041Sbostic  * Chris Torek.
735041Sbostic  *
8*44542Sbostic  * %sccs.include.redist.c%
935041Sbostic  *
10*44542Sbostic  *	@(#)kdbreg.h	7.3 (Berkeley) 06/28/90
1134293Skarels  */
1235041Sbostic 
1334293Skarels /*
1434293Skarels  * The KDB50 registers are embedded inside the bi interface
1534293Skarels  * general-purpose registers.
1634293Skarels  */
1734293Skarels struct	kdb_regs {
1834293Skarels 	struct	biiregs kdb_bi;
1934293Skarels 	short	kdb_xxx;	/* first half of GPR 0 unused */
2034293Skarels 	short	kdb_ip;		/* initialisation and polling */
2134293Skarels 	short	kdb_sa;		/* status & address (r/o half) */
2234293Skarels 	short	kdb_sw;		/* status & address (w/o half) */
2334293Skarels };
2434293Skarels 
2534293Skarels /*
2634293Skarels  * Bits in KDB status register during initialisation
2734293Skarels  */
2834293Skarels #define	KDB_ERR		0x8000	/* error */
2934293Skarels #define	KDB_STEP4	0x4000	/* step 4 has started */
3034293Skarels #define	KDB_STEP3	0x2000	/* step 3 has started */
3134293Skarels #define	KDB_STEP2	0x1000	/* step 2 has started */
3234293Skarels #define	KDB_STEP1	0x0800	/* step 1 has started */
3334293Skarels #define	KDB_DI		0x0100	/* controller implements diagnostics */
3434293Skarels #define	KDB_IE		0x0080	/* interrupt enable */
3534293Skarels #define	KDB_NCNRMASK	0x003f	/* in STEP1, bits 0-2=NCMDL2, 3-5=NRSPL2 */
3634293Skarels #define	KDB_IVECMASK	0x007f	/* in STEP2, bits 0-6 are interruptvec / 4 */
3734293Skarels 
3834293Skarels /* after initialisation: */
3934293Skarels #define	KDB_GO		0x0001	/* run */
4034293Skarels 
4134293Skarels #define KDBSR_BITS \
4234293Skarels "\20\20ERR\17STEP4\16STEP3\15STEP2\14STEP1\13oldNV\12oldQB\11DI\10IE\1GO"
4334293Skarels 
4434293Skarels /*
4534293Skarels  * KDB Communications Area.  Note that this structure definition
4634293Skarels  * requires NRSP and NCMD to be defined already.
4734293Skarels  */
4834293Skarels struct kdbca {
4934293Skarels 	short	ca_xxx1;	/* unused */
5034293Skarels 	char	ca_xxx2;	/* unused */
5134293Skarels 	char	ca_bdp;		/* BDP to purge  XXX */
5234293Skarels 	short	ca_cmdint;	/* command ring transition flag */
5334293Skarels 	short	ca_rspint;	/* response ring transition flag */
5434293Skarels 	long	ca_rspdsc[NRSP];/* response descriptors */
5534293Skarels 	long	ca_cmddsc[NCMD];/* command descriptors */
5634293Skarels };
5734293Skarels 
5834293Skarels /*
5934293Skarels  * Simplified routines (crash dump) use one command and one response.
6034293Skarels  */
6134293Skarels struct kdb1ca {
6234293Skarels 	long	ca_xxx;
6334293Skarels 	short	ca_cmdint;
6434293Skarels 	short	ca_rspint;
6534293Skarels 	long	ca_rspdsc;
6634293Skarels 	long	ca_cmddsc;
6734293Skarels };
6834293Skarels 
6934293Skarels /*
7034293Skarels  * Asserting KDB_MAP in values placed in mscp_seq.seq_buffer tells
7134293Skarels  * the KDB to use mscp_seq.seq_mapbase as a set of PTEs and seq_buffer
7234293Skarels  * as an offset value.  Hence we need no mappings; the KDB50 reads
7334293Skarels  * the hardware page tables directly.  (Without KDB_MAP, seq_bufer
7434293Skarels  * represents the physical memory address instead, and seq_mapbase is
7534293Skarels  * unused.)
7634293Skarels  */
7734293Skarels #define	KDB_MAP		0x80000000
7834293Skarels #define	KDB_PHYS	0		/* pseudo flag */
7934293Skarels 
8034293Skarels /*
8134293Skarels  * KDB statistics.
8234293Skarels  */
8334293Skarels #define	KS_MAXC	32
8434293Skarels 
8534293Skarels struct kdbstats {
8634293Skarels 	int	ks_sys;		/* transfers done from Sysmap */
8734293Skarels 	int	ks_paget;	/* transfers done from Usrptmap */
8834293Skarels 	int	ks_contig;	/* transfers done from contiguous user map */
8934293Skarels 	int	ks_copies;	/* transfers done from pte copies */
9034293Skarels 	int	ks_mapwait;	/* number of out-of-map waits */
9134293Skarels 	int	ks_cmd[KS_MAXC];/* commands started at once */
9234293Skarels 	int	ks_inval;	/* copies due to !PG_V */
9334293Skarels };
94