xref: /openbmc/u-boot/arch/xtensa/include/asm/regs.h (revision c978b52410016b0ab5a213f235596340af8d45f7)
1*c978b524SChris Zankel /*
2*c978b524SChris Zankel  * Copyright (c) 2006 Tensilica, Inc.  All Rights Reserved.
3*c978b524SChris Zankel  *
4*c978b524SChris Zankel  * SPDX-License-Identifier:	GPL-2.0+
5*c978b524SChris Zankel  */
6*c978b524SChris Zankel 
7*c978b524SChris Zankel #ifndef _XTENSA_REGS_H
8*c978b524SChris Zankel #define _XTENSA_REGS_H
9*c978b524SChris Zankel 
10*c978b524SChris Zankel /*  Special registers  */
11*c978b524SChris Zankel 
12*c978b524SChris Zankel #define IBREAKA		128
13*c978b524SChris Zankel #define DBREAKA		144
14*c978b524SChris Zankel #define DBREAKC		160
15*c978b524SChris Zankel 
16*c978b524SChris Zankel /*  Special names for read-only and write-only interrupt registers  */
17*c978b524SChris Zankel 
18*c978b524SChris Zankel #define INTREAD		226
19*c978b524SChris Zankel #define INTSET		226
20*c978b524SChris Zankel #define INTCLEAR	227
21*c978b524SChris Zankel 
22*c978b524SChris Zankel /*  EXCCAUSE register fields  */
23*c978b524SChris Zankel 
24*c978b524SChris Zankel #define EXCCAUSE_EXCCAUSE_SHIFT	0
25*c978b524SChris Zankel #define EXCCAUSE_EXCCAUSE_MASK	0x3F
26*c978b524SChris Zankel 
27*c978b524SChris Zankel #define EXCCAUSE_ILLEGAL_INSTRUCTION		0
28*c978b524SChris Zankel #define EXCCAUSE_SYSTEM_CALL			1
29*c978b524SChris Zankel #define EXCCAUSE_INSTRUCTION_FETCH_ERROR	2
30*c978b524SChris Zankel #define EXCCAUSE_LOAD_STORE_ERROR		3
31*c978b524SChris Zankel #define EXCCAUSE_LEVEL1_INTERRUPT		4
32*c978b524SChris Zankel #define EXCCAUSE_ALLOCA				5
33*c978b524SChris Zankel #define EXCCAUSE_INTEGER_DIVIDE_BY_ZERO		6
34*c978b524SChris Zankel #define EXCCAUSE_SPECULATION			7
35*c978b524SChris Zankel #define EXCCAUSE_PRIVILEGED			8
36*c978b524SChris Zankel #define EXCCAUSE_UNALIGNED			9
37*c978b524SChris Zankel #define EXCCAUSE_INSTR_DATA_ERROR		12
38*c978b524SChris Zankel #define EXCCAUSE_LOAD_STORE_DATA_ERROR		13
39*c978b524SChris Zankel #define EXCCAUSE_INSTR_ADDR_ERROR		14
40*c978b524SChris Zankel #define EXCCAUSE_LOAD_STORE_ADDR_ERROR		15
41*c978b524SChris Zankel #define EXCCAUSE_ITLB_MISS			16
42*c978b524SChris Zankel #define EXCCAUSE_ITLB_MULTIHIT			17
43*c978b524SChris Zankel #define EXCCAUSE_ITLB_PRIVILEGE			18
44*c978b524SChris Zankel #define EXCCAUSE_ITLB_SIZE_RESTRICTION		19
45*c978b524SChris Zankel #define EXCCAUSE_FETCH_CACHE_ATTRIBUTE		20
46*c978b524SChris Zankel #define EXCCAUSE_DTLB_MISS			24
47*c978b524SChris Zankel #define EXCCAUSE_DTLB_MULTIHIT			25
48*c978b524SChris Zankel #define EXCCAUSE_DTLB_PRIVILEGE			26
49*c978b524SChris Zankel #define EXCCAUSE_DTLB_SIZE_RESTRICTION		27
50*c978b524SChris Zankel #define EXCCAUSE_LOAD_CACHE_ATTRIBUTE		28
51*c978b524SChris Zankel #define EXCCAUSE_STORE_CACHE_ATTRIBUTE		29
52*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR0_DISABLED		32
53*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR1_DISABLED		33
54*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR2_DISABLED		34
55*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR3_DISABLED		35
56*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR4_DISABLED		36
57*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR5_DISABLED		37
58*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR6_DISABLED		38
59*c978b524SChris Zankel #define EXCCAUSE_COPROCESSOR7_DISABLED		39
60*c978b524SChris Zankel #define EXCCAUSE_LAST				63
61*c978b524SChris Zankel 
62*c978b524SChris Zankel /*  PS register fields  */
63*c978b524SChris Zankel 
64*c978b524SChris Zankel #define PS_WOE_BIT		18
65*c978b524SChris Zankel #define PS_CALLINC_SHIFT	16
66*c978b524SChris Zankel #define PS_CALLINC_MASK		0x00030000
67*c978b524SChris Zankel #define PS_OWB_SHIFT		8
68*c978b524SChris Zankel #define PS_OWB_MASK		0x00000F00
69*c978b524SChris Zankel #define PS_RING_SHIFT		6
70*c978b524SChris Zankel #define PS_RING_MASK		0x000000C0
71*c978b524SChris Zankel #define PS_UM_BIT		5
72*c978b524SChris Zankel #define PS_EXCM_BIT		4
73*c978b524SChris Zankel #define PS_INTLEVEL_SHIFT	0
74*c978b524SChris Zankel #define PS_INTLEVEL_MASK	0x0000000F
75*c978b524SChris Zankel 
76*c978b524SChris Zankel /*  DBREAKCn register fields  */
77*c978b524SChris Zankel 
78*c978b524SChris Zankel #define DBREAKC_MASK_BIT		0
79*c978b524SChris Zankel #define DBREAKC_MASK_MASK		0x0000003F
80*c978b524SChris Zankel #define DBREAKC_LOAD_BIT		30
81*c978b524SChris Zankel #define DBREAKC_LOAD_MASK		0x40000000
82*c978b524SChris Zankel #define DBREAKC_STOR_BIT		31
83*c978b524SChris Zankel #define DBREAKC_STOR_MASK		0x80000000
84*c978b524SChris Zankel 
85*c978b524SChris Zankel /*  DEBUGCAUSE register fields  */
86*c978b524SChris Zankel 
87*c978b524SChris Zankel #define DEBUGCAUSE_DEBUGINT_BIT		5	/* External debug interrupt */
88*c978b524SChris Zankel #define DEBUGCAUSE_BREAKN_BIT		4	/* BREAK.N instruction */
89*c978b524SChris Zankel #define DEBUGCAUSE_BREAK_BIT		3	/* BREAK instruction */
90*c978b524SChris Zankel #define DEBUGCAUSE_DBREAK_BIT		2	/* DBREAK match */
91*c978b524SChris Zankel #define DEBUGCAUSE_IBREAK_BIT		1	/* IBREAK match */
92*c978b524SChris Zankel #define DEBUGCAUSE_ICOUNT_BIT		0	/* ICOUNT would incr. to zero */
93*c978b524SChris Zankel 
94*c978b524SChris Zankel #endif /* _XTENSA_SPECREG_H */
95*c978b524SChris Zankel 
96