1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
|
/* spr-regs.h: special-purpose registers on the FRV
*
* Copyright (C) 2003, 2004 Red Hat, Inc. All Rights Reserved.
* Written by David Howells (dhowells@redhat.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#ifndef _ASM_SPR_REGS_H
#define _ASM_SPR_REGS_H
/*
* PSR - Processor Status Register
*/
#define PSR_ET 0x00000001 /* enable interrupts/exceptions flag */
#define PSR_PS 0x00000002 /* previous supervisor mode flag */
#define PSR_S 0x00000004 /* supervisor mode flag */
#define PSR_PIL 0x00000078 /* processor external interrupt level */
#define PSR_PIL_0 0x00000000 /* - no interrupt in progress */
#define PSR_PIL_13 0x00000068 /* - debugging only */
#define PSR_PIL_14 0x00000070 /* - debugging in progress */
#define PSR_PIL_15 0x00000078 /* - NMI in progress */
#define PSR_EM 0x00000080 /* enable media operation */
#define PSR_EF 0x00000100 /* enable FPU operation */
#define PSR_BE 0x00001000 /* endianness mode */
#define PSR_BE_LE 0x00000000 /* - little endian mode */
#define PSR_BE_BE 0x00001000 /* - big endian mode */
#define PSR_CM 0x00002000 /* conditional mode */
#define PSR_NEM 0x00004000 /* non-excepting mode */
#define PSR_ICE 0x00010000 /* in-circuit emulation mode */
#define PSR_VERSION_SHIFT 24 /* CPU silicon ID */
#define PSR_IMPLE_SHIFT 28 /* CPU core ID */
#define PSR_VERSION(psr) (((psr) >> PSR_VERSION_SHIFT) & 0xf)
#define PSR_IMPLE(psr) (((psr) >> PSR_IMPLE_SHIFT) & 0xf)
#define PSR_IMPLE_FR401 0x2
#define PSR_VERSION_FR401_MB93401 0x0
#define PSR_VERSION_FR401_MB93401A 0x1
#define PSR_VERSION_FR401_MB93403 0x2
#define PSR_IMPLE_FR405 0x4
#define PSR_VERSION_FR405_MB93405 0x0
#define PSR_IMPLE_FR451 0x5
#define PSR_VERSION_FR451_MB93451 0x0
#define PSR_IMPLE_FR501 0x1
#define PSR_VERSION_FR501_MB93501 0x1
#define PSR_VERSION_FR501_MB93501A 0x2
#define PSR_IMPLE_FR551 0x3
#define PSR_VERSION_FR551_MB93555 0x1
#define __get_PSR() ({ unsigned long x; asm volatile("movsg psr,%0" : "=r"(x)); x; })
#define __set_PSR(V) do { asm volatile("movgs %0,psr" : : "r"(V)); } while(0)
/*
* TBR - Trap Base Register
*/
#define TBR_TT 0x00000ff0
#define TBR_TT_INSTR_MMU_MISS (0x01 << 4)
#define TBR_TT_INSTR_ACC_ERROR (0x02 << 4)
#define TBR_TT_INSTR_ACC_EXCEP (0x03 << 4)
#define TBR_TT_PRIV_INSTR (0x06 << 4)
#define TBR_TT_ILLEGAL_INSTR (0x07 << 4)
#define TBR_TT_FP_EXCEPTION (0x0d << 4)
#define TBR_TT_MP_EXCEPTION (0x0e << 4)
#define TBR_TT_DATA_ACC_ERROR (0x11 << 4)
#define TBR_TT_DATA_MMU_MISS (0x12 << 4)
#define TBR_TT_DATA_ACC_EXCEP (0x13 << 4)
#define TBR_TT_DATA_STR_ERROR (0x14 << 4)
#define TBR_TT_DIVISION_EXCEP (0x17 << 4)
#define TBR_TT_COMMIT_EXCEP (0x19 << 4)
#define TBR_TT_INSTR_TLB_MISS (0x1a << 4)
#define TBR_TT_DATA_TLB_MISS (0x1b << 4)
#define TBR_TT_DATA_DAT_EXCEP (0x1d << 4)
#define TBR_TT_DECREMENT_TIMER (0x1f << 4)
#define TBR_TT_COMPOUND_EXCEP (0x20 << 4)
#define TBR_TT_INTERRUPT_1 (0x21 << 4)
#define TBR_TT_INTERRUPT_2 (0x22 << 4)
#define TBR_TT_INTERRUPT_3 (0x23 << 4)
#define TBR_TT_INTERRUPT_4 (0x24 << 4)
#define TBR_TT_INTERRUPT_5 (0x25 << 4)
#define TBR_TT_INTERRUPT_6 (0x26 << 4)
#define TBR_TT_INTERRUPT_7 (0x27 << 4)
#define TBR_TT_INTERRUPT_8 (0x28 << 4)
#define TBR_TT_INTERRUPT_9 (0x29 << 4)
#define TBR_TT_INTERRUPT_10 (0x2a << 4)
#define TBR_TT_INTERRUPT_11 (0x2b << 4)
#define TBR_TT_INTERRUPT_12 (0x2c << 4)
#define TBR_TT_INTERRUPT_13 (0x2d << 4)
#define TBR_TT_INTERRUPT_14 (0x2e << 4)
#define TBR_TT_INTERRUPT_15 (0x2f << 4)
#define TBR_TT_TRAP0 (0x80 << 4)
#define TBR_TT_TRAP1 (0x81 << 4)
#define TBR_TT_TRAP2 (0x82 << 4)
#define TBR_TT_TRAP3 (0x83 << 4)
#define TBR_TT_TRAP120 (0xf8 << 4)
#define TBR_TT_TRAP121 (0xf9 << 4)
#define TBR_TT_TRAP122 (0xfa << 4)
#define TBR_TT_TRAP123 (0xfb << 4)
#define TBR_TT_TRAP124 (0xfc << 4)
#define TBR_TT_TRAP125 (0xfd << 4)
#define TBR_TT_TRAP126 (0xfe << 4)
#define TBR_TT_BREAK (0xff << 4)
#define TBR_TT_ATOMIC_CMPXCHG32 TBR_TT_TRAP120
#define TBR_TT_ATOMIC_XCHG32 TBR_TT_TRAP121
#define TBR_TT_ATOMIC_XOR TBR_TT_TRAP122
#define TBR_TT_ATOMIC_OR TBR_TT_TRAP123
#define TBR_TT_ATOMIC_AND TBR_TT_TRAP124
#define TBR_TT_ATOMIC_SUB TBR_TT_TRAP125
#define TBR_TT_ATOMIC_ADD TBR_TT_TRAP126
#define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; })
/*
* HSR0 - Hardware Status Register 0
*/
#define HSR0_PDM 0x00000007 /* power down mode */
#define HSR0_PDM_NORMAL 0x00000000 /* - normal mode */
#define HSR0_PDM_CORE_SLEEP 0x00000001 /* - CPU core sleep mode */
#define HSR0_PDM_BUS_SLEEP 0x00000003 /* - bus sleep mode */
#define HSR0_PDM_PLL_RUN 0x00000005 /* - PLL run */
#define HSR0_PDM_PLL_STOP 0x00000007 /* - PLL stop */
#define HSR0_GRLE 0x00000040 /* GR lower register set enable */
#define HSR0_GRHE 0x00000080 /* GR higher register set enable */
#define HSR0_FRLE 0x00000100 /* FR lower register set enable */
#define HSR0_FRHE 0x00000200 /* FR higher register set enable */
#define HSR0_GRN 0x00000400 /* GR quantity */
#define HSR0_GRN_64 0x00000000 /* - 64 GR registers */
#define HSR0_GRN_32 0x00000400 /* - 32 GR registers */
#define HSR0_FRN 0x00000800 /* FR quantity */
#define HSR0_FRN_64 0x00000000 /* - 64 FR registers */
#define HSR0_FRN_32 0x00000800 /* - 32 FR registers */
#define HSR0_SA 0x00001000 /* start address (RAMBOOT#) */
#define HSR0_ETMI 0x00008000 /* enable TIMERI (64-bit up timer) */
#define HSR0_ETMD 0x00004000 /* enable TIMERD (32-bit down timer) */
#define HSR0_PEDAT 0x00010000 /* previous DAT mode */
#define HSR0_XEDAT 0x00020000 /* exception DAT mode */
#define HSR0_EDAT 0x00080000 /* enable DAT mode */
#define HSR0_RME 0x00400000 /* enable RAM mode */
#define HSR0_EMEM 0x00800000 /* enable MMU_Miss mask */
#define HSR0_EXMMU 0x01000000 /* enable extended MMU mode */
#define HSR0_EDMMU 0x02000000 /* enable data MMU */
#define HSR0_EIMMU 0x04000000 /* enable instruction MMU */
#define HSR0_CBM 0x08000000 /* copy back mode */
#define HSR0_CBM_WRITE_THRU 0x00000000 /* - write through */
#define HSR0_CBM_COPY_BACK 0x08000000 /* - copy back */
#define HSR0_NWA 0x10000000 /* no write allocate */
#define HSR0_DCE 0x40000000 /* data cache enable */
#define HSR0_ICE 0x80000000 /* instruction cache enable */
#define __get_HSR(R) ({ unsigned long x; asm volatile("movsg hsr"#R",%0" : "=r"(x)); x; })
#define __set_HSR(R,V) do { asm volatile("movgs %0,hsr"#R : : "r"(V)); } while(0)
/*
* CCR - Condition Codes Register
*/
#define CCR_FCC0 0x0000000f /* FP/Media condition 0 (fcc0 reg) */
#define CCR_FCC1 0x000000f0 /* FP/Media condition 1 (fcc1 reg) */
#define CCR_FCC2 0x00000f00 /* FP/Media condition 2 (fcc2 reg) */
#define CCR_FCC3 0x0000f000 /* FP/Media condition 3 (fcc3 reg) */
#define CCR_ICC0 0x000f0000 /* Integer condition 0 (icc0 reg) */
#define CCR_ICC0_C 0x00010000 /* - Carry flag */
#define CCR_ICC0_V 0x00020000 /* - Overflow flag */
#define CCR_ICC0_Z 0x00040000 /* - Zero flag */
#define CCR_ICC0_N 0x00080000 /* - Negative flag */
#define CCR_ICC1 0x00f00000 /* Integer condition 1 (icc1 reg) */
#define CCR_ICC2 0x0f000000 /* Integer condition 2 (icc2 reg) */
#define CCR_ICC3 0xf0000000 /* Integer condition 3 (icc3 reg) */
/*
* CCCR - Condition Codes for Conditional Instructions Register
*/
#define CCCR_CC0 0x00000003 /* condition 0 (cc0 reg) */
#define CCCR_CC0_FALSE 0x00000002 /* - condition is false */
#define CCCR_CC0_TRUE 0x00000003 /* - condition is true */
#define CCCR_CC1 0x0000000c /* condition 1 (cc1 reg) */
#define CCCR_CC2 0x00000030 /* condition 2 (cc2 reg) */
#define CCCR_CC3 0x000000c0 /* condition 3 (cc3 reg) */
#define CCCR_CC4 0x00000300 /* condition 4 (cc4 reg) */
#define CCCR_CC5 0x00000c00 /* condition 5 (cc5 reg) */
#define CCCR_CC6 0x00003000 /* condition 6 (cc6 reg) */
#define CCCR_CC7 0x0000c000 /* condition 7 (cc7 reg) */
/*
* ISR - Integer Status Register
*/
#define ISR_EMAM 0x00000001 /* memory misaligned access handling */
#define ISR_EMAM_EXCEPTION 0x00000000 /* - generate exception */
#define ISR_EMAM_FUDGE 0x00000001 /* - mask out invalid address bits */
#define ISR_AEXC 0x00000004 /* accrued [overflow] exception */
#define ISR_DTT 0x00000018 /* division type trap */
#define ISR_DTT_IGNORE 0x00000000 /* - ignore division error */
#define ISR_DTT_DIVBYZERO 0x00000008 /* - generate exception */
#define ISR_DTT_OVERFLOW 0x00000010 /* - record overflow */
#define ISR_EDE 0x00000020 /* enable division exception */
#define ISR_PLI 0x20000000 /* pre-load instruction information */
#define ISR_QI 0x80000000 /* quad data implementation information */
/*
* EPCR0 - Exception PC Register
*/
#define EPCR0_V 0x00000001 /* register content validity indicator */
#define EPCR0_PC 0xfffffffc /* faulting instruction address */
/*
* ESR0/14/15 - Exception Status Register
*/
#define ESRx_VALID 0x00000001 /* register content validity indicator */
#define ESRx_EC 0x0000003e /* exception type */
#define ESRx_EC_DATA_STORE 0x00000000 /* - data_store_error */
#define ESRx_EC_INSN_ACCESS 0x00000006 /* - instruction_access_error */
#define ESRx_EC_PRIV_INSN 0x00000008 /* - privileged_instruction */
#define ESRx_EC_ILL_INSN 0x0000000a /* - illegal_instruction */
#define ESRx_EC_MP_EXCEP 0x0000001c /* - mp_exception */
#define ESRx_EC_DATA_ACCESS 0x00000020 /* - data_access_error */
#define ESRx_EC_DIVISION 0x00000026 /* - division_exception */
#define ESRx_EC_ITLB_MISS 0x00000034 /* - instruction_access_TLB_miss */
#define ESRx_EC_DTLB_MISS 0x00000036 /* - data_access_TLB_miss */
#define ESRx_EC_DATA_ACCESS_DAT 0x0000003a /* - data_access_DAT_exception */
#define ESR0_IAEC 0x00000100 /* info for instruction-access-exception */
#define ESR0_IAEC_RESV 0x00000000 /* - reserved */
#define ESR0_IAEC_PROT_VIOL 0x00000100 /* - protection violation */
#define ESR0_ATXC 0x00f00000 /* address translation exception code */
#define ESR0_ATXC_MMU_MISS 0x00000000 /* - MMU miss exception and more (?) */
#define ESR0_ATXC_MULTI_DAT 0x00800000 /* - multiple DAT entry hit */
#define ESR0_ATXC_MULTI_SAT 0x00900000 /* - multiple SAT entry hit */
#define ESR0_ATXC_AMRTLB_MISS 0x00a00000 /* - MMU/TLB miss exception */
#define ESR0_ATXC_PRIV_EXCEP 0x00c00000 /* - privilege protection fault */
#define ESR0_ATXC_WP_EXCEP 0x00d00000 /* - write protection fault */
#define ESR0_EAV 0x00000800 /* true if EAR0 register valid */
#define ESR15_EAV 0x00000800 /* true if EAR15 register valid */
/*
* ESFR1 - Exception Status Valid Flag Register
*/
#define ESFR1_ESR0 0x00000001 /* true if ESR0 is valid */
#define ESFR1_ESR14 0x00004000 /* true if ESR14 is valid */
#define ESFR1_ESR15 0x00008000 /* true if ESR15 is valid */
/*
* MSR - Media Status Register
*/
#define MSR0_AOVF 0x00000001 /* overflow exception accrued */
#define MSRx_OVF 0x00000002 /* overflow exception detected */
#define MSRx_SIE 0x0000003c /* last SIMD instruction exception detected */
#define MSRx_SIE_NONE 0x00000000 /* - none detected */
#define MSRx_SIE_FRkHI_ACCk 0x00000020 /* - exception at FRkHI or ACCk */
#define MSRx_SIE_FRkLO_ACCk1 0x00000010 /* - exception at FRkLO or ACCk+1 */
#define MSRx_SIE_FRk1HI_ACCk2 0x00000008 /* - exception at FRk+1HI or ACCk+2 */
#define MSRx_SIE_FRk1LO_ACCk3 0x00000004 /* - exception at FRk+1LO or ACCk+3 */
#define MSR0_MTT 0x00007000 /* type of last media trap detected */
#define MSR0_MTT_NONE 0x00000000 /* - none detected */
#define MSR0_MTT_OVERFLOW 0x00001000 /* - overflow detected */
#define MSR0_HI 0x00c00000 /* hardware implementation */
#define MSR0_HI_ROUNDING 0x00000000 /* - rounding mode */
#define MSR0_HI_NONROUNDING 0x00c00000 /* - non-rounding mode */
#define MSR0_EMCI 0x01000000 /* enable media custom instructions */
#define MSR0_SRDAV 0x10000000 /* select rounding mode of MAVEH */
#define MSR0_SRDAV_RDAV 0x00000000 /* - controlled by MSR.RDAV */
#define MSR0_SRDAV_RD 0x10000000 /* - controlled by MSR.RD */
#define MSR0_RDAV 0x20000000 /* rounding mode of MAVEH */
#define MSR0_RDAV_NEAREST_MI 0x00000000 /* - round to nearest minus */
#define MSR0_RDAV_NEAREST_PL 0x20000000 /* - round to nearest plus */
#define MSR0_RD 0xc0000000 /* rounding mode */
#define MSR0_RD_NEAREST 0x00000000 /* - nearest */
#define MSR0_RD_ZERO 0x40000000 /* - zero */
#define MSR0_RD_POS_INF 0x80000000 /* - positive infinity */
#define MSR0_RD_NEG_INF 0xc0000000 /* - negative infinity */
/*
* IAMPR0-7 - Instruction Address Mapping Register
* DAMPR0-7 - Data Address Mapping Register
*/
#define xAMPRx_V 0x00000001 /* register content validity indicator */
#define DAMPRx_WP 0x00000002 /* write protect */
#define DAMPRx_WP_RW 0x00000000 /* - read/write */
#define DAMPRx_WP_RO 0x00000002 /* - read-only */
#define xAMPRx_C 0x00000004 /* cached/uncached */
#define xAMPRx_C_CACHED 0x00000000 /* - cached */
#define xAMPRx_C_UNCACHED 0x00000004 /* - uncached */
#define xAMPRx_S 0x00000008 /* supervisor only */
#define xAMPRx_S_USER 0x00000000 /* - userspace can access */
#define xAMPRx_S_KERNEL 0x00000008 /* - kernel only */
#define xAMPRx_SS 0x000000f0 /* segment size */
#define xAMPRx_SS_16Kb 0x00000000 /* - 16 kilobytes */
#define xAMPRx_SS_64Kb 0x00000010 /* - 64 kilobytes */
#define xAMPRx_SS_256Kb 0x00000020 /* - 256 kilobytes */
#define xAMPRx_SS_1Mb 0x00000030 /* - 1 megabyte */
#define xAMPRx_SS_2Mb 0x00000040 /* - 2 megabytes */
#define xAMPRx_SS_4Mb 0x00000050 /* - 4 megabytes */
#define xAMPRx_SS_8Mb 0x00000060 /* - 8 megabytes */
#define xAMPRx_SS_16Mb 0x00000070 /* - 16 megabytes */
#define xAMPRx_SS_32Mb 0x00000080 /* - 32 megabytes */
#define xAMPRx_SS_64Mb 0x00000090 /* - 64 megabytes */
#define xAMPRx_SS_128Mb 0x000000a0 /* - 128 megabytes */
#define xAMPRx_SS_256Mb 0x000000b0 /* - 256 megabytes */
#define xAMPRx_SS_512Mb 0x000000c0 /* - 512 megabytes */
#define xAMPRx_RESERVED8 0x00000100 /* reserved bit */
#define xAMPRx_NG 0x00000200 /* non-global */
#define xAMPRx_L 0x00000400 /* locked */
#define xAMPRx_M 0x00000800 /* modified */
#define xAMPRx_D 0x00001000 /* DAT entry */
#define xAMPRx_RESERVED13 0x00002000 /* reserved bit */
#define xAMPRx_PPFN 0xfff00000 /* physical page frame number */
#define xAMPRx_V_BIT 0
#define DAMPRx_WP_BIT 1
#define xAMPRx_C_BIT 2
#define xAMPRx_S_BIT 3
#define xAMPRx_RESERVED8_BIT 8
#define xAMPRx_NG_BIT 9
#define xAMPRx_L_BIT 10
#define xAMPRx_M_BIT 11
#define xAMPRx_D_BIT 12
#define xAMPRx_RESERVED13_BIT 13
#define __get_IAMPR(R) ({ unsigned long x; asm volatile("movsg iampr"#R",%0" : "=r"(x)); x; })
#define __get_DAMPR(R) ({ unsigned long x; asm volatile("movsg dampr"#R",%0" : "=r"(x)); x; })
#define __get_IAMLR(R) ({ unsigned long x; asm volatile("movsg iamlr"#R",%0" : "=r"(x)); x; })
#define __get_DAMLR(R) ({ unsigned long x; asm volatile("movsg damlr"#R",%0" : "=r"(x)); x; })
#define __set_IAMPR(R,V) do { asm volatile("movgs %0,iampr"#R : : "r"(V)); } while(0)
#define __set_DAMPR(R,V) do { asm volatile("movgs %0,dampr"#R : : "r"(V)); } while(0)
#define __set_IAMLR(R,V) do { asm volatile("movgs %0,iamlr"#R : : "r"(V)); } while(0)
#define __set_DAMLR(R,V) do { asm volatile("movgs %0,damlr"#R : : "r"(V)); } while(0)
#define save_dampr(R, _dampr) \
do { \
asm volatile("movsg dampr"R",%0" : "=r"(_dampr)); \
} while(0)
#define restore_dampr(R, _dampr) \
do { \
asm volatile("movgs %0,dampr"R :: "r"(_dampr)); \
} while(0)
/*
* AMCR - Address Mapping Control Register
*/
#define AMCR_IAMRN 0x000000ff /* quantity of IAMPR registers */
#define AMCR_DAMRN 0x0000ff00 /* quantity of DAMPR registers */
/*
* TTBR - Address Translation Table Base Register
*/
#define __get_TTBR() ({ unsigned long x; asm volatile("movsg ttbr,%0" : "=r"(x)); x; })
/*
* TPXR - TLB Probe Extend Register
*/
#define TPXR_E 0x00000001
#define TPXR_LMAX_SHIFT 20
#define TPXR_LMAX_SMASK 0xf
#define TPXR_WMAX_SHIFT 24
#define TPXR_WMAX_SMASK 0xf
#define TPXR_WAY_SHIFT 28
#define TPXR_WAY_SMASK 0xf
/*
* DCR - Debug Control Register
*/
#define DCR_IBCE3 0x00000001 /* break on conditional insn pointed to by IBAR3 */
#define DCR_IBE3 0x00000002 /* break on insn pointed to by IBAR3 */
#define DCR_IBCE1 0x00000004 /* break on conditional insn pointed to by IBAR2 */
#define DCR_IBE1 0x00000008 /* break on insn pointed to by IBAR2 */
#define DCR_IBCE2 0x00000010 /* break on conditional insn pointed to by IBAR1 */
#define DCR_IBE2 0x00000020 /* break on insn pointed to by IBAR1 */
#define DCR_IBCE0 0x00000040 /* break on conditional insn pointed to by IBAR0 */
#define DCR_IBE0 0x00000080 /* break on insn pointed to by IBAR0 */
#define DCR_DDBE1 0x00004000 /* use DBDR1x when checking DBAR1 */
#define DCR_DWBE1 0x00008000 /* break on store to address in DBAR1/DBMR1x */
#define DCR_DRBE1 0x00010000 /* break on load from address in DBAR1/DBMR1x */
#define DCR_DDBE0 0x00020000 /* use DBDR0x when checking DBAR0 */
#define DCR_DWBE0 0x00040000 /* break on store to address in DBAR0/DBMR0x */
#define DCR_DRBE0 0x00080000 /* break on load from address in DBAR0/DBMR0x */
#define DCR_EIM 0x0c000000 /* external interrupt disable */
#define DCR_IBM 0x10000000 /* instruction break disable */
#define DCR_SE 0x20000000 /* single step enable */
#define DCR_EBE 0x40000000 /* exception break enable */
/*
* BRR - Break Interrupt Request Register
*/
#define BRR_ST 0x00000001 /* single-step detected */
#define BRR_SB 0x00000002 /* break instruction detected */
#define BRR_BB 0x00000004 /* branch with hint detected */
#define BRR_CBB 0x00000008 /* branch to LR detected */
#define BRR_IBx 0x000000f0 /* hardware breakpoint detected */
#define BRR_DBx 0x00000f00 /* hardware watchpoint detected */
#define BRR_DBNEx 0x0000f000 /* ? */
#define BRR_EBTT 0x00ff0000 /* trap type of exception break */
#define BRR_TB 0x10000000 /* external break request detected */
#define BRR_CB 0x20000000 /* ICE break command detected */
#define BRR_EB 0x40000000 /* exception break detected */
/*
* BPSR - Break PSR Save Register
*/
#define BPSR_BET 0x00000001 /* former PSR.ET */
#define BPSR_BS 0x00001000 /* former PSR.S */
#endif /* _ASM_SPR_REGS_H */
|