octeon_corereg.h revision 1.1 1 /* $NetBSD: octeon_corereg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $ */
2
3 /*
4 * Copyright (c) 2007 Internet Initiative Japan, Inc.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 */
28
29 #ifndef _OCTEON_COREREG_H_
30 #define _OCTEON_COREREG_H_
31
32 /*
33 * Core Coprocessor 0 Privileged Registers.
34 */
35
36 #ifdef _LOCORE
37 #define CP0_INDEX $0 /* Index Register */
38 #define CP0_RANDOM $1 /* Random Register */
39 #define CP0_ENTRYLO0 $2 /* EntryLo0 Registers */
40 #define CP0_ENTRYLO1 $3 /* EntryLo1 Registers */
41 #define CP0_CONTEXT $4 /* Context Register */
42 #define CP0_PAGEMASK $5 /* PageMask Register */
43 #define CP0_PAGEGRAIN $5, 1 /* PageGrain Register */
44 #define CP0_WIRED $6 /* Wired Register */
45 #define CP0_HWRENA $7 /* HWREna Register */
46 #define CP0_BADVADDR $8 /* BadVAddr Register */
47 #define CP0_COUNT $9 /* Count Register */
48 #define CP0_ENTRYHI $10 /* EntryHi Register */
49 #define CP0_COMPARE $11 /* Compare Register */
50 #define CP0_STATUS $12 /* Status Register */
51 #define CP0_INTCTL $12, 1 /* IntCtl Register */
52 #define CP0_SRSCTL $12, 2 /* SRSCtl Register */
53 #define CP0_CAUSE $13 /* Cause Register */
54 #define CP0_EPC $14 /* Exception Program Counter */
55 #define CP0_PRID $15 /* PRId Register */
56 #define CP0_EBASE $15, 1 /* EBase Register */
57 #define CP0_CONFIG $16 /* Config Register */
58 #define CP0_CONFIG1 $16, 1 /* Config1 Register */
59 #define CP0_CONFIG2 $16, 2 /* Config2 Register */
60 #define CP0_CONFIG3 $16, 3 /* Config3 Register */
61 #define CP0_WATCHLO $18 /* WatchLo Register */
62 #define CP0_WATCHLO1 $18, 1
63 #define CP0_WATCHHI $19 /* WatchHi Register */
64 #define CP0_WATCHHI1 $19, 1
65 #define CP0_XCONTEXT $20 /* XContext Register */
66 #define CP0_DEBUG $23 /* Debug Register */
67 #define CP0_DPC $24 /* Debug Exception Program Counter Register */
68 #define CP0_PCCTL $25 /* Performance Counter Control Register */
69 #define CP0_PCCTL1 $25, 2
70 #define CP0_PCCNT $25, 1 /* Performance Counter Counter Register */
71 #define CP0_PCCNT1 $25, 3
72 #define CP0_ERROREPC $30 /* ErrorEPC */
73 #define CP0_DESAVE $31 /* DESAVE Register */
74 #define CP0_CACHEERRI $27 /* CacheErr (Icache) */
75 #define CP0_CACHEERRD $27, 1 /* CacheErr (Dcache) */
76 #define CP0_TAGLOI $28 /* TagLo Register (Icache) */
77 #define CP0_TAGLOD $28, 2 /* TagLo Register (Dcache) */
78 #define CP0_DATALOI $28, 1 /* DataLo Register (Icache) */
79 #define CP0_DATALOD $28, 3 /* DataLo Register (Dcache) */
80 #define CP0_TAGHI $29, 2 /* TagHi Register */
81 #define CP0_DATAHII $29, 1 /* DataHi Register (Icache) */
82 #define CP0_DATAHID $29, 3 /* DataHi Register (Dcache) */
83 #define CP0_CVMCTL $9, 7 /* CvmCtl Register */
84 #define CP0_CVMMEMCTL $11, 7 /* CvmMemCtl Register */
85 #define CP0_CVMCNT $9, 6 /* CvmCount Register */
86 #define CP0_MCD $22 /* Multi-Core Debug Register */
87 #endif
88
89 /* ---- register bits */
90
91 /* Index Register */
92
93 #define CP0_INDEX_P UINT32_C(0x80000000)
94 #define CP0_INDEX_XXX_30_5 0x7fffffe0
95 #define CP0_INDEX_INDEX 0x0000001f
96
97 /* Random Register */
98
99 #define CP0_RANDOM_XXX_31_5 0xffffffe0
100 #define CP0_RANDOM_RANDOM 0x0000001f
101
102 /* EntryLo0, EntryLo1 Registers */
103
104 #define CP0_ENTRYLON_FILL UINT64_C(0xfffff80000000000)
105 #define CP0_ENTRYLON_PFNX UINT64_C(0x000007ffc0000000)
106 #define CP0_ENTRYLON_PFN UINT64_C(0x000000003fffffc0)
107 #define CP0_ENTRYLON_C UINT64_C(0x0000000000000038)
108 #define CP0_ENTRYLON_D UINT64_C(0x0000000000000004)
109 #define CP0_ENTRYLON_V UINT64_C(0x0000000000000002)
110 #define CP0_ENTRYLON_G UINT64_C(0x0000000000000001)
111
112 /* Context Register */
113
114 #define CP0_CONTEXT_PTEBASE UINT64_C(0xffffffffff800000)
115 #define CP0_CONTEXT_BADVPN2 UINT64_C(0x00000000007ffff0)
116 #define CP0_CONTEXT_XXX_3_0 UINT64_C(0x000000000000000f)
117
118 /* PageMask Register */
119
120 #define CP0_PAGEMASK_XXX_31_29 UINT64_C(0xe000000000000000)
121 #define CP0_PAGEMASK_MASK UINT64_C(0x1fffffffffffe000)
122 #define CP0_PAGEMASK_MASKX UINT64_C(0x0000000000001800)
123 #define CP0_PAGEMASK_XXX_10_0 UINT64_C(0x0000000000000fff)
124
125 /* PageGrain Register */
126
127 #define CP0_PAGEGRAIN_ASE 0xc0000000
128 #define CP0_PAGEGRAIN_ELPA UINT32_C(0x20000000)
129 #define CP0_PAGEGRAIN_ESP UINT32_C(0x10000000)
130 #define CP0_PAGEGRAIN_XXX_27_13 0x0fffe000
131 #define CP0_PAGEGRAIN_XXX_7_0 0x000000ff
132
133 /* Wired Register */
134
135 #define CP0_WIRED_XXX_31_5 UINT64_C(0xffffffffffffffe0)
136 #define CP0_WIRED_WIRED UINT64_C(0x000000000000001f)
137
138 /* HWREna Register */
139
140 #define CP0_HWRENA_MASKX 0xc0000000
141 #define CP0_HWRENA_XXX_29_4 0x3ffffff0
142 #define CP0_HWRENA_MASK 0x0000000f
143
144 /* BadVAddr Register */
145
146 /* Count Register */
147
148 /* EntryHi Register */
149
150 #define CP0_ENTRYHI_R UINT64_C(0xc000000000000000)
151 #define CP0_ENTRYHI_FILL UINT64_C(0x3ffe000000000000)
152 #define CP0_ENTRYHI_VPN2 UINT64_C(0x0001ffffffffe000)
153 #define CP0_ENTRYHI_VPN2X UINT64_C(0x0000000000001800)
154 #define CP0_ENTRYHI_XXX_10_8 UINT64_C(0x0000000000000700)
155 #define CP0_ENTRYHI_ASID UINT64_C(0x00000000000000ff)
156
157 /* Compare Register */
158
159 /* Status Register */
160
161 #define CP0_STATUS_CU3 UINT32_C(0x80000000)
162 #define CP0_STATUS_CU2 UINT32_C(0x40000000)
163 #define CP0_STATUS_CU1 UINT32_C(0x20000000)
164 #define CP0_STATUS_CU0 UINT32_C(0x10000000)
165 #define CP0_STATUS_RP UINT32_C(0x08000000)
166 #define CP0_STATUS_FR UINT32_C(0x04000000)
167 #define CP0_STATUS_RE UINT32_C(0x02000000)
168 #define CP0_STATUS_MX UINT32_C(0x01000000)
169 #define CP0_STATUS_PX UINT32_C(0x00800000)
170 #define CP0_STATUS_BEV UINT32_C(0x00400000)
171 #define CP0_STATUS_TS UINT32_C(0x00200000)
172 #define CP0_STATUS_SR UINT32_C(0x00100000)
173 #define CP0_STATUS_NMI UINT32_C(0x00080000)
174 #define CP0_STATUS_XXX_18_16 0x00070000
175 #define CP0_STATUS_IM_7_4 0x0000fc00
176 #define CP0_STATUS_IM_1_0 0x00000300
177 #define CP0_STATUS_KX UINT32_C(0x00000080)
178 #define CP0_STATUS_SX UINT32_C(0x00000040)
179 #define CP0_STATUS_UX UINT32_C(0x00000020)
180 #define CP0_STATUS_KSU 0x00000018
181 #define CP0_STATUS_ERL UINT32_C(0x00000004)
182 #define CP0_STATUS_EXL UINT32_C(0x00000002)
183 #define CP0_STATUS_IE UINT32_C(0x00000001)
184
185 /* IntCtl Register */
186
187 #define CP0_INTCTL_IPTI 0xe0000000
188 #define CP0_INTCTL_IPPCI 0x1c000000
189 #define CP0_INTCTL_XXX_25_10 0x03fffc00
190 #define CP0_INTCTL_VS 0x000003e0
191 #define CP0_INTCTL_XXX_4_0 0x0000001f
192
193 /* SRSCtl Register */
194
195 #define CP0_SRSCTL_XXX_31_30 0xc0000000
196 #define CP0_SRSCTL_HSS 0x3c000000
197 #define CP0_SRSCTL_XXX_25_22 0x03c00000
198 #define CP0_SRSCTL_EICSS 0x003c0000
199 #define CP0_SRSCTL_XXX_17_16 0x00030000
200 #define CP0_SRSCTL_ESS 0x0000f000
201 #define CP0_SRSCTL_XXX_11_10 0x00000c00
202 #define CP0_SRSCTL_EXL 0x000003c0
203 #define CP0_SRSCTL_XXX_5_4 0x00000030
204 #define CP0_SRSCTL_CSS 0x0000000f
205
206 /* Cause Register */
207
208 #define CP0_CAUSE_BD UINT32_C(0x80000000)
209 #define CP0_CAUSE_TI UINT32_C(0x40000000)
210 #define CP0_CAUSE_CE 0x30000000
211 #define CP0_CAUSE_DC UINT32_C(0x08000000)
212 #define CP0_CAUSE_PCI UINT32_C(0x04000000)
213 #define CP0_CAUSE_XXX_25_24 0x03000000
214 #define CP0_CAUSE_IV UINT32_C(0x00800000)
215 #define CP0_CAUSE_WP UINT32_C(0x00400000)
216 #define CP0_CAUSE_XXX_21_16 0x003f0000
217 #define CP0_CAUSE_IP_7_4 0x0000f000
218 #define CP0_CAUSE_IP_3_2 0x00000c00
219 #define CP0_CAUSE_IP_1_0 0x00000300
220 #define CP0_CAUSE_XXX_7 UINT32_C(0x00000080)
221 #define CP0_CAUSE_EXCCODE 0x0000007c
222 #define CP0_CAUSE_XXX_1_0 0x00000003
223
224 /* Exception Program Counter */
225
226 /* PRId Register */
227
228 #define CP0_PRID_COMPANY_OPTIONS 0xff000000
229 #define CP0_PRID_COMPANY_ID 0x00ff0000
230 #define CP0_PRID_PROCESSOR_ID 0x0000ff00
231 #define CP0_PRID_REVISION 0x000000ff
232
233 /* EBase Register */
234
235 #define CP0_EBASE_ALWAYS UINT32_C(0x80000000)
236 #define CP0_EBASE_XXX_30 UINT32_C(0x40000000)
237 #define CP0_EBASE_EXCEPTION_BASE 0x3ffff000
238 #define CP0_EBASE_XXX_11_10 0x00000c00
239 #define CP0_EBASE_CPU_NUM 0x000003ff
240
241 /* Config Register */
242
243 #define CP0_CONFIG_M UINT32_C(0x80000000)
244 #define CP0_CONFIG_IMPL 0x7fff0000
245 #define CP0_CONFIG_BE UINT32_C(0x00008000)
246 #define CP0_CONFIG_AT 0x00006000
247 #define CP0_CONFIG_AR 0x00001c00
248 #define CP0_CONFIG_MT 0x00000380
249 #define CP0_CONFIG_XXX_6_4 0x00000070
250 #define CP0_CONFIG_VI UINT32_C(0x00000008)
251 #define CP0_CONFIG_KO 0x00000007
252
253 /* Config1 Register */
254
255 #define CP0_CONFIG1_M UINT32_C(0x10000000)
256 #define CP0_CONFIG1_MMUSIZE_1 0x7e000000
257 #define CP0_CONFIG1_IS 0x01c00000
258 #define CP0_CONFIG1_IL 0x00380000
259 #define CP0_CONFIG1_IA 0x00070000
260 #define CP0_CONFIG1_DS 0x0000e000
261 #define CP0_CONFIG1_DL 0x00001c00
262 #define CP0_CONFIG1_DA 0x00000380
263 #define CP0_CONFIG1_C2 UINT32_C(0x00000040)
264 #define CP0_CONFIG1_MD UINT32_C(0x00000020)
265 #define CP0_CONFIG1_PC UINT32_C(0x00000010)
266 #define CP0_CONFIG1_WR UINT32_C(0x00000008)
267 #define CP0_CONFIG1_CA UINT32_C(0x00000004)
268 #define CP0_CONFIG1_EP UINT32_C(0x00000002)
269 #define CP0_CONFIG1_FP UINT32_C(0x00000001)
270
271 /* Config2 Register */
272
273 #define CP0_CONFIG2_M UINT32_C(0x80000000)
274 #define CP0_CONFIG2_TU 0x70000000
275 #define CP0_CONFIG2_TS 0x0f000000
276 #define CP0_CONFIG2_TL 0x00f00000
277 #define CP0_CONFIG2_TA 0x000f0000
278 #define CP0_CONFIG2_SU 0x0000f000
279 #define CP0_CONFIG2_SS 0x00000f00
280 #define CP0_CONFIG2_SL 0x000000f0
281 #define CP0_CONFIG2_SA 0x0000000f
282
283 /* Config3 Register */
284
285 #define CP0_CONFIG3_M UINT32_C(0x80000000)
286 #define CP0_CONFIG3_XXX_30_8 0x7fffff00
287 #define CP0_CONFIG3_LPA UINT32_C(0x00000080)
288 #define CP0_CONFIG3_VEIC UINT32_C(0x00000040)
289 #define CP0_CONFIG3_VINT UINT32_C(0x00000020)
290 #define CP0_CONFIG3_SP UINT32_C(0x00000010)
291 #define CP0_CONFIG3_XXX_3_2 0x0000000c
292 #define CP0_CONFIG3_SM UINT32_C(0x00000002)
293 #define CP0_CONFIG3_TL UINT32_C(0x00000001)
294
295 /* WatchLo Register */
296
297 #define CP0_WATCHLO_VADDR UINT64_C(0xfffffffffffffff8)
298 #define CP0_WATCHLO_I UINT64_C(0x0000000000000004)
299 #define CP0_WATCHLO_R UINT64_C(0x0000000000000002)
300 #define CP0_WATCHLO_W UINT64_C(0x0000000000000001)
301
302 /* WatchHi Register */
303
304 #define CP0_WATCHHI_M UINT32_C(0x80000000)
305 #define CP0_WATCHHI_G UINT32_C(0x40000000)
306 #define CP0_WATCHHI_XXX_29_24 0x3f000000
307 #define CP0_WATCHHI_ASID 0x00ff0000
308 #define CP0_WATCHHI_XXX_15_12 0x0000f000
309 #define CP0_WATCHHI_MASK 0x00000ff8
310 #define CP0_WATCHHI_I UINT32_C(0x00000004)
311 #define CP0_WATCHHI_R UINT32_C(0x00000002)
312 #define CP0_WATCHHI_W UINT32_C(0x00000001)
313
314 /* XContext Register */
315
316 #define CP0_XCONTEXT_PTEBASE UINT64_C(0xfffffc0000000000)
317 #define CP0_XCONTEXT_R UINT64_C(0x0000030000000000)
318 #define CP0_XCONTEXT_BADVPN2 UINT64_C(0x000000fffffffff0)
319 #define CP0_XCONTEXT_XXX_3_0 UINT64_C(0x000000000000000f)
320
321 /* Debug Register */
322
323 #define CP0_DEBUG_DBD UINT32_C(0x80000000)
324 #define CP0_DEBUG_DM UINT32_C(0x40000000)
325 #define CP0_DEBUG_NODCR UINT32_C(0x20000000)
326 #define CP0_DEBUG_LSNM UINT32_C(0x10000000)
327 #define CP0_DEBUG_DOZE UINT32_C(0x08000000)
328 #define CP0_DEBUG_HALT UINT32_C(0x04000000)
329 #define CP0_DEBUG_COUNTDM UINT32_C(0x02000000)
330 #define CP0_DEBUG_IBUSEP UINT32_C(0x01000000)
331 #define CP0_DEBUG_MCHECKP UINT32_C(0x00800000)
332 #define CP0_DEBUG_CACHEEP UINT32_C(0x00400000)
333 #define CP0_DEBUG_DBUSEP UINT32_C(0x00200000)
334 #define CP0_DEBUG_IEXI UINT32_C(0x00100000)
335 #define CP0_DEBUG_DDBSIMPR UINT32_C(0x00080000)
336 #define CP0_DEBUG_DDBLIMPR UINT32_C(0x00040000)
337 #define CP0_DEBUG_EJTAG 0x00038000
338 #define CP0_DEBUG_DEXCCODE 0x00007c00
339 #define CP0_DEBUG_NOSST UINT32_C(0x00000200)
340 #define CP0_DEBUG_SST UINT32_C(0x00000100)
341 #define CP0_DEBUG_XXX_7_6 0x000000c0
342 #define CP0_DEBUG_DINT UINT32_C(0x00000020)
343 #define CP0_DEBUG_DIB UINT32_C(0x00000010)
344 #define CP0_DEBUG_DDBS UINT32_C(0x00000008)
345 #define CP0_DEBUG_DDBL UINT32_C(0x00000004)
346 #define CP0_DEBUG_DBP UINT32_C(0x00000002)
347 #define CP0_DEBUG_DSS UINT32_C(0x00000001)
348
349 /* Debug Exception Program Counter Register */
350
351 /* Performance Counter Control Register */
352
353 #define CP0_PCCTL_M UINT32_C(0x80000000)
354 #define CP0_PCCTL_W UINT32_C(0x40000000)
355 #define CP0_PCCTL_XXX_29_11 0x3ffff800
356 #define CP0_PCCTL_EVENT 0x000007e0
357 #define CP0_PCCTL_IE UINT32_C(0x00000010)
358 #define CP0_PCCTL_U UINT32_C(0x00000008)
359 #define CP0_PCCTL_S UINT32_C(0x00000004)
360 #define CP0_PCCTL_K UINT32_C(0x00000002)
361 #define CP0_PCCTL_EXL UINT32_C(0x00000001)
362
363 /* Performance Counter Counter Register */
364
365 /* ErrorEPC */
366
367 /* DESAVE Register */
368
369 /*
370 * Cavium Networks-Specific Coprocessor 0 Register
371 */
372
373 /* CacheErr (Icache) */
374
375 #define CP0_CACHEERRI_XXX_63_55 UINT64_C(0xff80000000000000)
376 #define CP0_CACHEERRI_BADCOLF UINT64_C(0x007f000000000000)
377 #define CP0_CACHEERRI_XXX_47 UINT64_C(0x0000800000000000)
378 #define CP0_CACHEERRI_BADCOL UINT64_C(0x00007f0000000000)
379 #define CP0_CACHEERRI_XXX_39_37 UINT64_C(0x000000e000000000)
380 #define CP0_CACHEERRI_LRUFAIL UINT64_C(0x0000001000000000)
381 #define CP0_CACHEERRI_AESFAIL UINT64_C(0x0000000800000000)
382 #define CP0_CACHEERRI_HSHFAIL UINT64_C(0x0000000400000000)
383 #define CP0_CACHEERRI_BHTBROKE UINT64_C(0x0000000200000000)
384 #define CP0_CACHEERRI_ICBROKE UINT64_C(0x0000000100000000)
385 #define CP0_CACHEERRI_XXX_31_15 UINT64_C(0x00000000ffff8000)
386 #define CP0_CACHEERRI_QW UINT64_C(0x0000000000006000)
387 #define CP0_CACHEERRI_ROW UINT64_C(0x0000000000001800)
388 #define CP0_CACHEERRI_SET UINT64_C(0x00000000000007e0)
389 #define CP0_CACHEERRI_WAY UINT64_C(0x0000000000000018)
390 #define CP0_CACHEERRI_XXX_2_1 UINT64_C(0x0000000000000006)
391 #define CP0_CACHEERRI_DPERR UINT64_C(0x0000000000000001)
392
393 /* CacheErr (Dcache) */
394
395 #define CP0_CACHEERRD_XXX_63_13 UINT64_C(0xffffffffffffe000)
396 #define CP0_CACHEERRD_SET UINT64_C(0x0000000000001f80)
397 #define CP0_CACHEERRD_VA63 UINT64_C(0x0000000000000078)
398 #define CP0_CACHEERRD_XXX_2_1 UINT64_C(0x0000000000000006)
399 #define CP0_CACHEERRD_PERR UINT64_C(0x0000000000000001)
400
401 /* TagLo Register (Icache) */
402
403 #define CP0_TAGLOI_R UINT64_C(0xc000000000000000)
404 #define CP0_TAGLOI_XXX_61_60 UINT64_C(0x3000000000000000)
405 #define CP0_TAGLOI_ASID UINT64_C(0x0f00000000000000)
406 #define CP0_TAGLOI_XXX_51_49 UINT64_C(0x00f0000000000000)
407 #define CP0_TAGLOI_TAG UINT64_C(0x000fffffffffe000)
408 #define CP0_TAGLOI_INDEX UINT64_C(0x0000000000001f80)
409 #define CP0_TAGLOI_XXX_6_2 UINT64_C(0x000000000000007c)
410 #define CP0_TAGLOI_G UINT64_C(0x0000000000000002)
411 #define CP0_TAGLOI_VALID UINT64_C(0x0000000000000001)
412
413 /* TagLo Register (Dcache) */
414
415 #define CP0_TAGLOD_R UINT64_C(0xc000000000000000)
416 #define CP0_TAGLOD_XXX_61_60 UINT64_C(0x3000000000000000)
417 #define CP0_TAGLOD_ASID UINT64_C(0x0f00000000000000)
418 #define CP0_TAGLOD_XXX_51_49 UINT64_C(0x00f0000000000000)
419 #define CP0_TAGLOD_TAG UINT64_C(0x000fffffffffff80)
420 #define CP0_TAGLOD_XXX_6_2 UINT64_C(0x000000000000007c)
421 #define CP0_TAGLOD_G UINT64_C(0x0000000000000002)
422 #define CP0_TAGLOD_VALID UINT64_C(0x0000000000000001)
423
424 /* DataLo Register (Icache) */
425
426 /* DataLo Register (Dcache) */
427
428 /* TagHi Register */
429
430 #define CP0_TAGHI_XXX_63_36 UINT64_C(0xfffffff000000000)
431 #define CP0_TAGHI_PTAG UINT64_C(0x0000000fffffff80)
432 #define CP0_TAGHI_XXX_6_1 UINT64_C(0x000000000000007e)
433 #define CP0_TAGHI_VALID UINT64_C(0x0000000000000001)
434
435 /* DataHi Register (Icache) */
436
437 #define CP0_DATAHII_XXX_63_8 UINT64_C(0xffffffffffffff00)
438 #define CP0_DATAHII_PAR UINT64_C(0x00000000000000ff)
439
440 /* DataHi Register (Dcache) */
441
442 #define CP0_DATAHID_XXX_63_8 UINT64_C(0xffffffffffffff00)
443 #define CP0_DATAHID_PAR UINT64_C(0x00000000000000ff)
444
445 /* CvmCtl Register */
446
447 #define CP0_CVMCTL_XXX_63_32 UINT64_C(0xffffffff00000000)
448 #define CP0_CVMCTL_FUSE_STARTBIT UINT64_C(0x0000000080000000)
449 #define CP0_CVMCTL_XXX_30_29 UINT64_C(0x0000000060000000)
450 #define CP0_CVMCTL_NODFA_CP21 UINT64_C(0x0000000010000000)
451 #define CP0_CVMCTL_NOMUL UINT64_C(0x0000000008000000)
452 #define CP0_CVMCTL_NOCRYPTO UINT64_C(0x0000000004000000)
453 #define CP0_CVMCTL_RST_SHT UINT64_C(0x0000000002000000)
454 #define CP0_CVMCTL_BIST_DIS UINT64_C(0x0000000001000000)
455 #define CP0_CVMCTL_DISSETPRED UINT64_C(0x0000000000800000)
456 #define CP0_CVMCTL_DISJRPRED UINT64_C(0x0000000000400000)
457 #define CP0_CVMCTL_DISICACHE UINT64_C(0x0000000000200000)
458 #define CP0_CVMCTL_DISWAIT UINT64_C(0x0000000000100000)
459 #define CP0_CVMCTL_DEFET UINT64_C(0x0000000000080000)
460 #define CP0_CVMCTL_DISCO UINT64_C(0x0000000000040000)
461 #define CP0_CVMCTL_DISCE UINT64_C(0x0000000000020000)
462 #define CP0_CVMCTL_DDCLK UINT64_C(0x0000000000010000)
463 #define CP0_CVMCTL_DCICLK UINT64_C(0x0000000000008000)
464 #define CP0_CVMCTL_REPUN UINT64_C(0x0000000000004000)
465 #define CP0_CVMCTL_IPREF UINT64_C(0x0000000000002000)
466 #define CP0_CVMCTL_USEUN UINT64_C(0x0000000000001000)
467 #define CP0_CVMCTL_DISIOCACHE UINT64_C(0x0000000000000800)
468 #define CP0_CVMCTL_IRAND UINT64_C(0x0000000000000400)
469 #define CP0_CVMCTL_IPPCI UINT64_C(0x0000000000000380)
470 #define CP0_CVMCTL_IPTI UINT64_C(0x0000000000000070)
471 #define CP0_CVMCTL_XXX_3_2 UINT64_C(0x000000000000000c)
472 #define CP0_CVMCTL_LE UINT64_C(0x0000000000000002)
473 #define CP0_CVMCTL_USELY UINT64_C(0x0000000000000001)
474
475 #define CP0_CVMCTL_BITS \
476 "\177" /* new format */ \
477 "\020" /* hex display */ \
478 "\020" /* %016x format */ \
479 "b\x1f" "FUSE_STARTBIT\0" \
480 "b\x1c" "NODFA_CP21\0" \
481 "b\x1b" "NOMUL\0" \
482 "b\x1a" "NOCRYPTO\0" \
483 "b\x19" "RST_SHT\0" \
484 "b\x18" "BIST_DIS\0" \
485 "b\x17" "DISSETPRED\0" \
486 "b\x16" "DISJRPRED\0" \
487 "b\x15" "DISICACHE\0" \
488 "b\x14" "DISWAIT\0" \
489 "b\x13" "DEFET\0" \
490 "b\x12" "DISCO\0" \
491 "b\x11" "DISCE\0" \
492 "b\x10" "DDCLK\0" \
493 "b\x0f" "DCICLK\0" \
494 "b\x0e" "REPUN\0" \
495 "b\x0d" "IPREF\0" \
496 "b\x0c" "USEUN\0" \
497 "b\x0b" "DISIOCACHE\0" \
498 "b\x0a" "IRAND\0" \
499 "f\x07\x03" "IPPCI\0" \
500 "f\x04\x03" "IPTI\0" \
501 "b\x01" "LE\0" \
502 "b\x00" "USELY\0"
503
504 /* CvmMemCtl Register */
505
506 #define CP0_CVMMEMCTL_TLBBIST UINT64_C(0x8000000000000000)
507 #define CP0_CVMMEMCTL_L1CBIST UINT64_C(0x4000000000000000)
508 #define CP0_CVMMEMCTL_L1DBIST UINT64_C(0x2000000000000000)
509 #define CP0_CVMMEMCTL_DCMBIST UINT64_C(0x1000000000000000)
510 #define CP0_CVMMEMCTL_PTGBIST UINT64_C(0x0800000000000000)
511 #define CP0_CVMMEMCTL_WBFBIST UINT64_C(0x0400000000000000)
512 #define CP0_CVMMEMCTL_XXX_57_36 UINT64_C(0x03fffff000000000)
513 #define CP0_CVMMEMCTL_DISMARKWBLONGTO UINT64_C(0x0000000800000000)
514 #define CP0_CVMMEMCTL_DISMRGCLRWBTO UINT64_C(0x0000000400000000)
515 #define CP0_CVMMEMCTL_IOBDMASCRMSB UINT64_C(0x0000000300000000)
516 #define CP0_CVMMEMCTL_SYNCWSMARKED UINT64_C(0x0000000080000000)
517 #define CP0_CVMMEMCTL_DISSYNCWS UINT64_C(0x0000000040000000)
518 #define CP0_CVMMEMCTL_DISWBFST UINT64_C(0x0000000020000000)
519 #define CP0_CVMMEMCTL_XKMEMENAS UINT64_C(0x0000000010000000)
520 #define CP0_CVMMEMCTL_XKMEMENAU UINT64_C(0x0000000008000000)
521 #define CP0_CVMMEMCTL_XKIOENAS UINT64_C(0x0000000004000000)
522 #define CP0_CVMMEMCTL_XKIOENAU UINT64_C(0x0000000002000000)
523 #define CP0_CVMMEMCTL_ALLSYNCW UINT64_C(0x0000000001000000)
524 #define CP0_CVMMEMCTL_NOMERGE UINT64_C(0x0000000000800000)
525 #define CP0_CVMMEMCTL_DIDTTO UINT64_C(0x0000000000600000)
526 #define CP0_CVMMEMCTL_CSRCLKALWYS UINT64_C(0x0000000000100000)
527 #define CP0_CVMMEMCTL_MCLKALWYS UINT64_C(0x0000000000080000)
528 #define CP0_CVMMEMCTL_WBFLTIME UINT64_C(0x0000000000070000)
529 #define CP0_CVMMEMCTL_ISTRNOL2 UINT64_C(0x0000000000008000)
530 #define CP0_CVMMEMCTL_WBTHRESH UINT64_C(0x0000000000007800)
531 #define CP0_CVMMEMCTL_XXX_10_9 UINT64_C(0x0000000000000600)
532 #define CP0_CVMMEMCTL_CVMSEGENAK UINT64_C(0x0000000000000100)
533 #define CP0_CVMMEMCTL_CVMSEGENAS UINT64_C(0x0000000000000080)
534 #define CP0_CVMMEMCTL_CVMSEGENAU UINT64_C(0x0000000000000040)
535 #define CP0_CVMMEMCTL_LMEMSZ UINT64_C(0x000000000000003f)
536
537 #define CP0_CVMMEMCTL_BITS \
538 "\177" /* new format */ \
539 "\020" /* hex display */ \
540 "\020" /* %016x format */ \
541 "b\x3f" "TLBBIST\0" \
542 "b\x3e" "L1CBIST\0" \
543 "b\x3d" "L1DBIST\0" \
544 "b\x3c" "DCMBIST\0" \
545 "b\x3b" "PTGBIST\0" \
546 "b\x3a" "WBFBIST\0" \
547 "b\x23" "DISMARKWBLONGTO\0" \
548 "b\x22" "DISMRGCLRWBTO\0" \
549 "f\x20\x02" "IOBDMASCRMSB\0" \
550 "b\x1f" "SYNCWSMARKED\0" \
551 "b\x1e" "DISSYNCWS\0" \
552 "b\x1d" "DISWBFST\0" \
553 "b\x1c" "XKMEMENAS\0" \
554 "b\x1b" "XKMEMENAU\0" \
555 "b\x1a" "XKIOENAS\0" \
556 "b\x19" "XKIOENAU\0" \
557 "b\x18" "ALLSYNCW\0" \
558 "b\x17" "NOMERGE\0" \
559 "f\x15\x02" "DIDTTO\0" \
560 "b\x14" "CSRCLKALWYS\0" \
561 "b\x13" "MCLKALWYS\0" \
562 "f\x10\x03" "WBFLTIME\0" \
563 "b\x0f" "ISTRNOL2\0" \
564 "f\x0b\x04" "WBTHRESH\0" \
565 "b\x08" "CVMSEGENAK\0" \
566 "b\x07" "CVMSEGENAS\0" \
567 "b\x06" "CVMSEGENAU\0" \
568 "f\x00\x06" "LMEMSZ\0"
569
570 /* CvmCount Register */
571
572 /* Multi-Core Debug Register */
573
574 #define CP0_MCD_XXX_63_17 UINT64_C(0xfffffffffffe0000)
575 #define CP0_MCD_DEXCC UINT64_C(0x0000000000010000)
576 #define CP0_MCD_CGSTP UINT64_C(0x0000000000008000)
577 #define CP0_MCD_CVGSTP UINT64_C(0x0000000000004000)
578 #define CP0_MCD_CVDM UINT64_C(0x0000000000002000)
579 #define CP0_MCD_GSDB UINT64_C(0x0000000000001000)
580 #define CP0_MCD_XXX_11 UINT64_C(0x0000000000000800)
581 #define CP0_MCD_MSKM2 UINT64_C(0x0000000000000400)
582 #define CP0_MCD_MSKM1 UINT64_C(0x0000000000000200)
583 #define CP0_MCD_MMC0 UINT64_C(0x0000000000000100)
584 #define CP0_MCD_XXX_7 UINT64_C(0x0000000000000080)
585 #define CP0_MCD_PLS2 UINT64_C(0x0000000000000040)
586 #define CP0_MCD_PLS1 UINT64_C(0x0000000000000020)
587 #define CP0_MCD_PLS0 UINT64_C(0x0000000000000010)
588 #define CP0_MCD_XXX_3 UINT64_C(0x0000000000000008)
589 #define CP0_MCD_MCD2 UINT64_C(0x0000000000000004)
590 #define CP0_MCD_MCD1 UINT64_C(0x0000000000000002)
591 #define CP0_MCD_MCD0 UINT64_C(0x0000000000000001)
592
593 /*
594 * Core EJTAG DRSEG Registers
595 */
596
597 /* XXX */
598
599 /*
600 * Core EJTAG TAP Registers
601 */
602
603 /* XXX */
604
605 /* ---- operations */
606
607 /* XXX */
608
609 /*
610 * OCTEON Configuration and Status Registers (CSRs)
611 */
612
613 #define CSR_COP0 /* Core coprosessor 0 registers */
614 #define CSR_COP2 /* Core coprosessor 2 registers */
615 #define CSR_COREEJTAG /* Core EJTAG registers */
616 #define CSR_COREEJTAGTAP /* Core EJTAG TAP registers */
617 #define CSR_NCB /* NCB registers */
618 #define CSR_RSL /* RSL registers */
619 #define CSR_PCICONFIG /* PCICONFIG registers */
620 #define CSR_PCI /* PCI registers */
621 #define CSR_PCINCB /* PCI_NCB registers */
622 #define CSR_JTAGTAP /* JTAG TAP registers */
623 #define CSR_TWSICORE /* TWSI Core registers */
624
625 /* XXX */
626
627 #endif /* _OCTEON_COREREG_H_ */
628