1
2
3
4
5
6
7
8
9
10
11#ifndef _ASM_CPU_REGS_H
12#define _ASM_CPU_REGS_H
13
14#ifndef __ASSEMBLY__
15#include <linux/types.h>
16#endif
17
18#ifdef CONFIG_MN10300_CPU_AM33V2
19
20
21
22#ifndef __ASSEMBLY__
23asm(" .am33_2\n");
24#else
25.am33_2
26#endif
27#endif
28
29#ifdef __KERNEL__
30
31#ifndef __ASSEMBLY__
32#define __SYSREG(ADDR, TYPE) (*(volatile TYPE *)(ADDR))
33#define __SYSREGC(ADDR, TYPE) (*(const volatile TYPE *)(ADDR))
34#else
35#define __SYSREG(ADDR, TYPE) ADDR
36#define __SYSREGC(ADDR, TYPE) ADDR
37#endif
38
39
40#define EPSW_FLAG_Z 0x00000001
41#define EPSW_FLAG_N 0x00000002
42#define EPSW_FLAG_C 0x00000004
43#define EPSW_FLAG_V 0x00000008
44#define EPSW_IM 0x00000700
45#define EPSW_IM_0 0x00000000
46#define EPSW_IM_1 0x00000100
47#define EPSW_IM_2 0x00000200
48#define EPSW_IM_3 0x00000300
49#define EPSW_IM_4 0x00000400
50#define EPSW_IM_5 0x00000500
51#define EPSW_IM_6 0x00000600
52#define EPSW_IM_7 0x00000700
53#define EPSW_IE 0x00000800
54#define EPSW_S 0x00003000
55#define EPSW_T 0x00008000
56#define EPSW_nSL 0x00010000
57#define EPSW_NMID 0x00020000
58#define EPSW_nAR 0x00040000
59#define EPSW_ML 0x00080000
60#define EPSW_FE 0x00100000
61
62
63#define FPCR_EF_I 0x00000001
64#define FPCR_EF_U 0x00000002
65#define FPCR_EF_O 0x00000004
66#define FPCR_EF_Z 0x00000008
67#define FPCR_EF_V 0x00000010
68#define FPCR_EE_I 0x00000020
69#define FPCR_EE_U 0x00000040
70#define FPCR_EE_O 0x00000080
71#define FPCR_EE_Z 0x00000100
72#define FPCR_EE_V 0x00000200
73#define FPCR_EC_I 0x00000400
74#define FPCR_EC_U 0x00000800
75#define FPCR_EC_O 0x00001000
76#define FPCR_EC_Z 0x00002000
77#define FPCR_EC_V 0x00004000
78#define FPCR_RM 0x00030000
79#define FPCR_RM_NEAREST 0x00000000
80#define FPCR_FCC_U 0x00040000
81#define FPCR_FCC_E 0x00080000
82#define FPCR_FCC_G 0x00100000
83#define FPCR_FCC_L 0x00200000
84#define FPCR_INIT 0x00000000
85
86
87#define CPUP __SYSREG(0xc0000020, u16)
88#define CPUP_DWBD 0x0020
89#define CPUP_IPFD 0x0040
90#define CPUP_EXM 0x0080
91#define CPUP_EXM_AM33V1 0x0000
92#define CPUP_EXM_AM33V2 0x0080
93
94#define CPUM __SYSREG(0xc0000040, u16)
95#define CPUM_SLEEP 0x0004
96#define CPUM_HALT 0x0008
97#define CPUM_STOP 0x0010
98
99#define CPUREV __SYSREGC(0xc0000050, u32)
100#define CPUREV_TYPE 0x0000000f
101#define CPUREV_TYPE_S 0
102#define CPUREV_TYPE_AM33V1 0x00000000
103#define CPUREV_TYPE_AM33V2 0x00000001
104#define CPUREV_TYPE_AM34V1 0x00000002
105#define CPUREV_REVISION 0x000000f0
106#define CPUREV_REVISION_S 4
107#define CPUREV_ICWAY 0x00000f00
108#define CPUREV_ICWAY_S 8
109#define CPUREV_ICSIZE 0x0000f000
110#define CPUREV_ICSIZE_S 12
111#define CPUREV_DCWAY 0x000f0000
112#define CPUREV_DCWAY_S 16
113#define CPUREV_DCSIZE 0x00f00000
114#define CPUREV_DCSIZE_S 20
115#define CPUREV_FPUTYPE 0x0f000000
116#define CPUREV_FPUTYPE_NONE 0x00000000
117#define CPUREV_OCDCTG 0xf0000000
118
119#define DCR __SYSREG(0xc0000030, u16)
120
121
122#define IVAR0 __SYSREG(0xc0000000, u16)
123#define IVAR1 __SYSREG(0xc0000004, u16)
124#define IVAR2 __SYSREG(0xc0000008, u16)
125#define IVAR3 __SYSREG(0xc000000c, u16)
126#define IVAR4 __SYSREG(0xc0000010, u16)
127#define IVAR5 __SYSREG(0xc0000014, u16)
128#define IVAR6 __SYSREG(0xc0000018, u16)
129
130#define TBR __SYSREG(0xc0000024, u32)
131#define TBR_TB 0xff000000
132#define TBR_INT_CODE 0x00ffffff
133
134#define DEAR __SYSREG(0xc0000038, u32)
135
136#define sISR __SYSREG(0xc0000044, u32)
137#define sISR_IRQICE 0x00000001
138#define sISR_ISTEP 0x00000002
139#define sISR_MISSA 0x00000004
140#define sISR_UNIMP 0x00000008
141#define sISR_PIEXE 0x00000010
142#define sISR_MEMERR 0x00000020
143#define sISR_IBREAK 0x00000040
144#define sISR_DBSRL 0x00000080
145#define sISR_PERIDB 0x00000100
146#define sISR_EXUNIMP 0x00000200
147#define sISR_OBREAK 0x00000400
148#define sISR_PRIV 0x00000800
149#define sISR_BUSERR 0x00001000
150#define sISR_DBLFT 0x00002000
151#define sISR_DBG 0x00008000
152#define sISR_ITMISS 0x00010000
153#define sISR_DTMISS 0x00020000
154#define sISR_ITEX 0x00040000
155#define sISR_DTEX 0x00080000
156#define sISR_ILGIA 0x00100000
157#define sISR_ILGDA 0x00200000
158#define sISR_IOIA 0x00400000
159#define sISR_PRIVA 0x00800000
160#define sISR_PRIDA 0x01000000
161#define sISR_DISA 0x02000000
162#define sISR_SYSC 0x04000000
163#define sISR_FPUD 0x08000000
164#define sISR_FPUUI 0x10000000
165#define sISR_FPUOP 0x20000000
166#define sISR_NE 0x80000000
167
168
169#define CHCTR __SYSREG(0xc0000070, u16)
170#define CHCTR_ICEN 0x0001
171#define CHCTR_DCEN 0x0002
172#define CHCTR_ICBUSY 0x0004
173#define CHCTR_DCBUSY 0x0008
174#define CHCTR_ICINV 0x0010
175#define CHCTR_DCINV 0x0020
176#define CHCTR_DCWTMD 0x0040
177#define CHCTR_DCWTMD_WRBACK 0x0000
178#define CHCTR_DCWTMD_WRTHROUGH 0x0040
179#define CHCTR_DCALMD 0x0080
180#define CHCTR_ICWMD 0x0f00
181#define CHCTR_DCWMD 0xf000
182
183
184#define MMUCTR __SYSREG(0xc0000090, u32)
185#define MMUCTR_IRP 0x0000003f
186#define MMUCTR_ITE 0x00000040
187#define MMUCTR_IIV 0x00000080
188#define MMUCTR_ITL 0x00000700
189#define MMUCTR_ITL_NOLOCK 0x00000000
190#define MMUCTR_ITL_LOCK0 0x00000100
191#define MMUCTR_ITL_LOCK0_1 0x00000200
192#define MMUCTR_ITL_LOCK0_3 0x00000300
193#define MMUCTR_ITL_LOCK0_7 0x00000400
194#define MMUCTR_ITL_LOCK0_15 0x00000500
195#define MMUCTR_CE 0x00008000
196#define MMUCTR_DRP 0x003f0000
197#define MMUCTR_DTE 0x00400000
198#define MMUCTR_DIV 0x00800000
199#define MMUCTR_DTL 0x07000000
200#define MMUCTR_DTL_NOLOCK 0x00000000
201#define MMUCTR_DTL_LOCK0 0x01000000
202#define MMUCTR_DTL_LOCK0_1 0x02000000
203#define MMUCTR_DTL_LOCK0_3 0x03000000
204#define MMUCTR_DTL_LOCK0_7 0x04000000
205#define MMUCTR_DTL_LOCK0_15 0x05000000
206
207#define PIDR __SYSREG(0xc0000094, u16)
208#define PIDR_PID 0x00ff
209
210#define PTBR __SYSREG(0xc0000098, unsigned long)
211
212#define IPTEL __SYSREG(0xc00000a0, u32)
213#define DPTEL __SYSREG(0xc00000b0, u32)
214#define xPTEL_V 0x00000001
215#define xPTEL_UNUSED1 0x00000002
216#define xPTEL_UNUSED2 0x00000004
217#define xPTEL_C 0x00000008
218#define xPTEL_PV 0x00000010
219#define xPTEL_D 0x00000020
220#define xPTEL_PR 0x000001c0
221#define xPTEL_PR_ROK 0x00000000
222#define xPTEL_PR_RWK 0x00000100
223#define xPTEL_PR_ROK_ROU 0x00000080
224#define xPTEL_PR_RWK_ROU 0x00000180
225#define xPTEL_PR_RWK_RWU 0x000001c0
226#define xPTEL_G 0x00000200
227#define xPTEL_PS 0x00000c00
228#define xPTEL_PS_4Kb 0x00000000
229#define xPTEL_PS_128Kb 0x00000400
230#define xPTEL_PS_1Kb 0x00000800
231#define xPTEL_PS_4Mb 0x00000c00
232#define xPTEL_PPN 0xfffff006
233
234#define xPTEL_V_BIT 0
235#define xPTEL_UNUSED1_BIT 1
236#define xPTEL_UNUSED2_BIT 2
237#define xPTEL_C_BIT 3
238#define xPTEL_PV_BIT 4
239#define xPTEL_D_BIT 5
240#define xPTEL_G_BIT 9
241
242#define IPTEU __SYSREG(0xc00000a4, u32)
243#define DPTEU __SYSREG(0xc00000b4, u32)
244#define xPTEU_VPN 0xfffffc00
245#define xPTEU_PID 0x000000ff
246
247#define IPTEL2 __SYSREG(0xc00000a8, u32)
248#define DPTEL2 __SYSREG(0xc00000b8, u32)
249#define xPTEL2_V 0x00000001
250#define xPTEL2_C 0x00000002
251#define xPTEL2_PV 0x00000004
252#define xPTEL2_D 0x00000008
253#define xPTEL2_PR 0x00000070
254#define xPTEL2_PR_ROK 0x00000000
255#define xPTEL2_PR_RWK 0x00000040
256#define xPTEL2_PR_ROK_ROU 0x00000020
257#define xPTEL2_PR_RWK_ROU 0x00000060
258#define xPTEL2_PR_RWK_RWU 0x00000070
259#define xPTEL2_G 0x00000080
260#define xPTEL2_PS 0x00000300
261#define xPTEL2_PS_4Kb 0x00000000
262#define xPTEL2_PS_128Kb 0x00000100
263#define xPTEL2_PS_1Kb 0x00000200
264#define xPTEL2_PS_4Mb 0x00000300
265#define xPTEL2_PPN 0xfffffc00
266
267#define MMUFCR __SYSREGC(0xc000009c, u32)
268#define MMUFCR_IFC __SYSREGC(0xc000009c, u16)
269#define MMUFCR_DFC __SYSREGC(0xc000009e, u16)
270#define MMUFCR_xFC_TLBMISS 0x0001
271#define MMUFCR_xFC_INITWR 0x0002
272#define MMUFCR_xFC_PGINVAL 0x0004
273#define MMUFCR_xFC_PROTVIOL 0x0008
274#define MMUFCR_xFC_ACCESS 0x0010
275#define MMUFCR_xFC_ACCESS_USR 0x0000
276#define MMUFCR_xFC_ACCESS_SR 0x0010
277#define MMUFCR_xFC_TYPE 0x0020
278#define MMUFCR_xFC_TYPE_READ 0x0000
279#define MMUFCR_xFC_TYPE_WRITE 0x0020
280#define MMUFCR_xFC_PR 0x01c0
281#define MMUFCR_xFC_PR_ROK 0x0000
282#define MMUFCR_xFC_PR_RWK 0x0100
283#define MMUFCR_xFC_PR_ROK_ROU 0x0080
284#define MMUFCR_xFC_PR_RWK_ROU 0x0180
285#define MMUFCR_xFC_PR_RWK_RWU 0x01c0
286#define MMUFCR_xFC_ILLADDR 0x0200
287
288#endif
289
290#endif
291