xref: /plan9-contrib/sys/src/cmd/jtagfs/mmu.h (revision dedb130315e7b691e306ee069395ee1f0b18e4d4)
1 typedef struct MMUMcrChain15 MMUMcrChain15;
2 
3 /* Version of the 15 Chain for mcr access */
4 struct MMUMcrChain15 {
5 	uchar	rw;		/* 1bit */
6 	uchar	op1;		/* 3 bits */
7 	uchar	op2;		/* 3 bits */
8 	uchar	crn;		/* 4 bits */
9 	uchar	crm;		/* 4 bits */
10 	uchar	access;	/* 1 bit */
11 	u32int	data;		/* 32 bits */
12 };
13 
14 enum {
15 	/* other sizes taken from icert.h */
16 	AccessSz		= 1,
17 	OpSz		= 3,
18 	CrxSz		= 4,
19 };
20 
21 enum{
22 	ARMMCROP		= 0xee000010,
23 	ARMMRCLFLAG	= 0x00100000,
24 };
25 
26 #define C(cr)	((cr)&0x7)
27 #define ARMMCR(cp, op1, rd, crn, crm, op2) (ARMMCROP | \
28 				crm | (op2 << 5) | (cp<<8) | \
29 				(rd<<12) | (crn<<16) | (op1<<21))
30 
31 
32 #define ARMMRC(cp, op1, rd, crn, crm, op2) (ARMMRCLFLAG | \
33 				ARMMCR(cp, op1, rd, crn, crm, op2))
34 
35 extern int	mmurdregs(JMedium *jmed, MMURegs *regs);
36 extern char *	printmmuregs(MMURegs *mmuregs, char *s, int ssz);
37