comparison packages/hal/mips/arch/current/include/mips-regs.h @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents 3111d98ba7b3
children 4741a3c3496a
comparison
equal deleted inserted replaced
1:72f549f0d891 2:443894e2e912
1 /* mips-regs.h - register defines for MIPS processors 1 /* mips-regs.h - register defines for MIPS processors
2 * 2 *
3 * Copyright (c) 1998 Cygnus Support 3 * Copyright (c) 1998 Cygnus Solutions
4 * 4 *
5 * The authors hereby grant permission to use, copy, modify, distribute, 5 * The authors hereby grant permission to use, copy, modify, distribute,
6 * and license this software and its documentation for any purpose, provided 6 * and license this software and its documentation for any purpose, provided
7 * that existing copyright notices are retained in all copies and that this 7 * that existing copyright notices are retained in all copies and that this
8 * notice is included verbatim in any distributions. No written agreement, 8 * notice is included verbatim in any distributions. No written agreement,
11 * and need not follow the licensing terms described here, provided that 11 * and need not follow the licensing terms described here, provided that
12 * the new terms are clearly indicated on the first page of each file where 12 * the new terms are clearly indicated on the first page of each file where
13 * they apply. 13 * they apply.
14 */ 14 */
15 15
16 #include <pkgconf/hal.h>
17
18 #ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
16 19
17 /* This value must agree with NUMREGS in mips-stub.h. */ 20 /* This value must agree with NUMREGS in mips-stub.h. */
18 21
19 #define NUM_REGS 90 22 #define NUM_REGS 90
20 23
24 #define REG_SIZE 4 27 #define REG_SIZE 4
25 #endif 28 #endif
26 29
27 /* General register names for assembly code. */ 30 /* General register names for assembly code. */
28 31
29 #define zero $0 32 #define zero $0
30 #define at $1 /* assembler temporary */ 33 #define at $1 /* assembler temporary */
31 #define v0 $2 /* value holders */ 34 #define v0 $2 /* value holders */
32 #define v1 $3 35 #define v1 $3
33 #define a0 $4 /* arguments */ 36 #define a0 $4 /* arguments */
34 #define a1 $5 37 #define a1 $5
35 #define a2 $6 38 #define a2 $6
36 #define a3 $7 39 #define a3 $7
37 #define t0 $8 /* temporaries */ 40 #define t0 $8 /* temporaries */
38 #define t1 $9 41 #define t1 $9
39 #define t2 $10 42 #define t2 $10
40 #define t3 $11 43 #define t3 $11
41 #define t4 $12 44 #define t4 $12
42 #define t5 $13 45 #define t5 $13
43 #define t6 $14 46 #define t6 $14
44 #define t7 $15 47 #define t7 $15
45 #define s0 $16 /* saved registers */ 48 #define s0 $16 /* saved registers */
46 #define s1 $17 49 #define s1 $17
47 #define s2 $18 50 #define s2 $18
48 #define s3 $19 51 #define s3 $19
49 #define s4 $20 52 #define s4 $20
50 #define s5 $21 53 #define s5 $21
51 #define s6 $22 54 #define s6 $22
52 #define s7 $23 55 #define s7 $23
53 #define t8 $24 /* temporaries */ 56 #define t8 $24 /* temporaries */
54 #define t9 $25 57 #define t9 $25
55 #define k0 $26 /* kernel registers */ 58 #define k0 $26 /* kernel registers */
56 #define k1 $27 59 #define k1 $27
57 #define gp $28 /* global pointer */ 60 #define gp $28 /* global pointer */
58 #define sp $29 /* stack pointer */ 61 #define sp $29 /* stack pointer */
59 #define s8 $30 /* saved register */ 62 #define s8 $30 /* saved register */
60 #define fp $30 /* frame pointer (obsolete usage) */ 63 #define fp $30 /* frame pointer (obsolete usage) */
61 #define ra $31 /* return address */ 64 #define ra $31 /* return address */
62 65
63 /* MIPS registers, numbered in the order in which gdb expects to see them. */ 66 /* MIPS registers, numbered in the order in which gdb expects to see them. */
64 #define ZERO 0 67 #define ZERO 0
65 #define AT 1 68 #define AT 1
66 #define V0 2 69 #define V0 2
67 #define V1 3 70 #define V1 3
68 #define A0 4 71 #define A0 4
69 #define A1 5 72 #define A1 5
70 #define A2 6 73 #define A2 6
71 #define A3 7 74 #define A3 7
72 75
73 #define T0 8 76 #define T0 8
74 #define T1 9 77 #define T1 9
75 #define T2 10 78 #define T2 10
76 #define T3 11 79 #define T3 11
77 #define T4 12 80 #define T4 12
78 #define T5 13 81 #define T5 13
79 #define T6 14 82 #define T6 14
80 #define T7 15 83 #define T7 15
81 84
82 #define S0 16 85 #define S0 16
83 #define S1 17 86 #define S1 17
84 #define S2 18 87 #define S2 18
85 #define S3 19 88 #define S3 19
86 #define S4 20 89 #define S4 20
87 #define S5 21 90 #define S5 21
88 #define S6 22 91 #define S6 22
89 #define S7 23 92 #define S7 23
90 93
91 #define T8 24 94 #define T8 24
92 #define T9 25 95 #define T9 25
93 #define K0 26 96 #define K0 26
94 #define K1 27 97 #define K1 27
95 #define GP 28 98 #define GP 28
96 #define SP 29 99 #define SP 29
97 #define S8 30 100 #define S8 30
98 #define RA 31 101 #define RA 31
99 102
100 #define SR 32 103 #define SR 32
101 #define LO 33 104 #define LO 33
102 #define HI 34 105 #define HI 34
103 #define BAD_VA 35 106 #define BAD_VA 35
104 #define CAUSE 36 107 #define CAUSE 36
105 #define PC 37 108 #define PC 37
106 109
107 /* System Control Coprocessor (CP0) exception processing registers */ 110 /* System Control Coprocessor (CP0) exception processing registers */
108 #define C0_CONTEXT $4 /* Context */ 111 #define C0_CONTEXT $4 /* Context */
109 #define C0_BADVADDR $8 /* Bad Virtual Address */ 112 #define C0_BADVADDR $8 /* Bad Virtual Address */
110 #define C0_COUNT $9 /* Count */ 113 #define C0_COUNT $9 /* Count */
111 #define C0_COMPARE $11 /* Compare */ 114 #define C0_COMPARE $11 /* Compare */
112 #define C0_STATUS $12 /* Processor Status */ 115 #define C0_STATUS $12 /* Processor Status */
113 #define C0_CAUSE $13 /* Exception Cause */ 116 #define C0_CAUSE $13 /* Exception Cause */
114 #define C0_EPC $14 /* Exception PC */ 117 #define C0_EPC $14 /* Exception PC */
115 #define C0_XCONTEXT $20 /* XContext */ 118 #define C0_XCONTEXT $20 /* XContext */
116 #define C0_ECC $26 /* ECC */ 119 #define C0_ECC $26 /* ECC */
117 #define C0_CACHEERR $27 /* CacheErr */ 120 #define C0_CACHEERR $27 /* CacheErr */
118 #define C0_ERROREPC $30 /* ErrorEPC */ 121 #define C0_ERROREPC $30 /* ErrorEPC */
119 122
120 /* Status register fields */ 123 /* Status register fields */
121 #define SR_CUMASK 0xf0000000 /* Coprocessor usable bits */ 124 #define SR_CUMASK 0xf0000000 /* Coprocessor usable bits */
122 #define SR_CU3 0x80000000 /* Coprocessor 3 usable */ 125 #define SR_CU3 0x80000000 /* Coprocessor 3 usable */
123 #define SR_CU2 0x40000000 /* coprocessor 2 usable */ 126 #define SR_CU2 0x40000000 /* coprocessor 2 usable */
124 #define SR_CU1 0x20000000 /* Coprocessor 1 usable */ 127 #define SR_CU1 0x20000000 /* Coprocessor 1 usable */
125 #define SR_CU0 0x10000000 /* Coprocessor 0 usable */ 128 #define SR_CU0 0x10000000 /* Coprocessor 0 usable */
126 129
127 #define SR_FR 0x04000000 /* Enable 32 floating-point registers */ 130 #define SR_FR 0x04000000 /* Enable 32 floating-point registers */
128 #define SR_RE 0x02000000 /* Reverse Endian in user mode */ 131 #define SR_RE 0x02000000 /* Reverse Endian in user mode */
129 132
130 #define SR_BEV 0x00400000 /* Bootstrap Exception Vector */ 133 #define SR_BEV 0x00400000 /* Bootstrap Exception Vector */
131 #define SR_TS 0x00200000 /* TLB shutdown (reserved on R4600) */ 134 #define SR_TS 0x00200000 /* TLB shutdown (reserved on R4600) */
132 #define SR_SR 0x00100000 /* Soft Reset */ 135 #define SR_SR 0x00100000 /* Soft Reset */
133 136
134 #define SR_CH 0x00040000 /* Cache Hit */ 137 #define SR_CH 0x00040000 /* Cache Hit */
135 #define SR_CE 0x00020000 /* ECC register modifies check bits */ 138 #define SR_CE 0x00020000 /* ECC register modifies check bits */
136 #define SR_DE 0x00010000 /* Disable cache errors */ 139 #define SR_DE 0x00010000 /* Disable cache errors */
137 140
138 #define SR_IMASK 0x0000ff00 /* Interrupt Mask */ 141 #define SR_IMASK 0x0000ff00 /* Interrupt Mask */
139 #define SR_IMASK8 0x00000000 /* Interrupt Mask level=8 */ 142 #define SR_IMASK8 0x00000000 /* Interrupt Mask level=8 */
140 #define SR_IMASK7 0x00008000 /* Interrupt Mask level=7 */ 143 #define SR_IMASK7 0x00008000 /* Interrupt Mask level=7 */
141 #define SR_IMASK6 0x0000c000 /* Interrupt Mask level=6 */ 144 #define SR_IMASK6 0x0000c000 /* Interrupt Mask level=6 */
142 #define SR_IMASK5 0x0000e000 /* Interrupt Mask level=5 */ 145 #define SR_IMASK5 0x0000e000 /* Interrupt Mask level=5 */
143 #define SR_IMASK4 0x0000f000 /* Interrupt Mask level=4 */ 146 #define SR_IMASK4 0x0000f000 /* Interrupt Mask level=4 */
144 #define SR_IMASK3 0x0000f800 /* Interrupt Mask level=3 */ 147 #define SR_IMASK3 0x0000f800 /* Interrupt Mask level=3 */
145 #define SR_IMASK2 0x0000fc00 /* Interrupt Mask level=2 */ 148 #define SR_IMASK2 0x0000fc00 /* Interrupt Mask level=2 */
146 #define SR_IMASK1 0x0000fe00 /* Interrupt Mask level=1 */ 149 #define SR_IMASK1 0x0000fe00 /* Interrupt Mask level=1 */
147 #define SR_IMASK0 0x0000ff00 /* Interrupt Mask level=0 */ 150 #define SR_IMASK0 0x0000ff00 /* Interrupt Mask level=0 */
148 151
149 #define SR_IBIT8 0x00008000 /* (Intr5) */ 152 #define SR_IBIT8 0x00008000 /* (Intr5) */
150 #define SR_IBIT7 0x00004000 /* (Intr4) */ 153 #define SR_IBIT7 0x00004000 /* (Intr4) */
151 #define SR_IBIT6 0x00002000 /* (Intr3) */ 154 #define SR_IBIT6 0x00002000 /* (Intr3) */
152 #define SR_IBIT5 0x00001000 /* (Intr2) */ 155 #define SR_IBIT5 0x00001000 /* (Intr2) */
153 #define SR_IBIT4 0x00000800 /* (Intr1) */ 156 #define SR_IBIT4 0x00000800 /* (Intr1) */
154 #define SR_IBIT3 0x00000400 /* (Intr0) */ 157 #define SR_IBIT3 0x00000400 /* (Intr0) */
155 #define SR_IBIT2 0x00000200 /* (Software Interrupt 1) */ 158 #define SR_IBIT2 0x00000200 /* (Software Interrupt 1) */
156 #define SR_IBIT1 0x00000100 /* (Software Interrupt 0) */ 159 #define SR_IBIT1 0x00000100 /* (Software Interrupt 0) */
157 160
158 #define SR_KX 0x00000080 /* xtlb in kernel mode */ 161 #define SR_KX 0x00000080 /* xtlb in kernel mode */
159 #define SR_SX 0x00000040 /* mips3 & xtlb in supervisor mode */ 162 #define SR_SX 0x00000040 /* mips3 & xtlb in supervisor mode */
160 #define SR_UX 0x00000020 /* mips3 & xtlb in user mode */ 163 #define SR_UX 0x00000020 /* mips3 & xtlb in user mode */
161 164
162 #define SR_KSU_MASK 0x00000018 /* ksu mode mask */ 165 #define SR_KSU_MASK 0x00000018 /* ksu mode mask */
163 #define SR_KSU_USER 0x00000010 /* user mode */ 166 #define SR_KSU_USER 0x00000010 /* user mode */
164 #define SR_KSU_SUPV 0x00000008 /* supervisor mode */ 167 #define SR_KSU_SUPV 0x00000008 /* supervisor mode */
165 #define SR_KSU_KERN 0x00000000 /* kernel mode */ 168 #define SR_KSU_KERN 0x00000000 /* kernel mode */
166 169
167 #define SR_ERL 0x00000004 /* error level */ 170 #define SR_ERL 0x00000004 /* error level */
168 #define SR_EXL 0x00000002 /* exception level */ 171 #define SR_EXL 0x00000002 /* exception level */
169 #define SR_IE 0x00000001 /* interrupt enable */ 172 #define SR_IE 0x00000001 /* interrupt enable */
170 173
171 /* Cause register fields */ 174 /* Cause register fields */
172 #define CAUSE_BD 0x80000000 /* Branch Delay */ 175 #define CAUSE_BD 0x80000000 /* Branch Delay */
173 #define CAUSE_CEMASK 0x30000000 /* Coprocessor Error */ 176 #define CAUSE_CEMASK 0x30000000 /* Coprocessor Error */
174 #define CAUSE_CESHIFT 28 /* Right justify CE */ 177 #define CAUSE_CESHIFT 28 /* Right justify CE */
175 #define CAUSE_IPMASK 0x0000ff00 /* Interrupt Pending */ 178 #define CAUSE_IPMASK 0x0000ff00 /* Interrupt Pending */
176 #define CAUSE_IPSHIFT 8 /* Right justify IP */ 179 #define CAUSE_IPSHIFT 8 /* Right justify IP */
177 #define CAUSE_IP8 0x00008000 /* (Intr5) */ 180 #define CAUSE_IP8 0x00008000 /* (Intr5) */
178 #define CAUSE_IP7 0x00004000 /* (Intr4) */ 181 #define CAUSE_IP7 0x00004000 /* (Intr4) */
179 #define CAUSE_IP6 0x00002000 /* (Intr3) */ 182 #define CAUSE_IP6 0x00002000 /* (Intr3) */
180 #define CAUSE_IP5 0x00001000 /* (Intr2) */ 183 #define CAUSE_IP5 0x00001000 /* (Intr2) */
181 #define CAUSE_IP4 0x00000800 /* (Intr1) */ 184 #define CAUSE_IP4 0x00000800 /* (Intr1) */
182 #define CAUSE_IP3 0x00000400 /* (Intr0) */ 185 #define CAUSE_IP3 0x00000400 /* (Intr0) */
183 #define CAUSE_SW2 0x00000200 /* (Software Interrupt 1) */ 186 #define CAUSE_SW2 0x00000200 /* (Software Interrupt 1) */
184 #define CAUSE_SW1 0x00000100 /* (Software Interrupt 0) */ 187 #define CAUSE_SW1 0x00000100 /* (Software Interrupt 0) */
185 #define CAUSE_EXCMASK 0x0000007c /* Exception Code */ 188 #define CAUSE_EXCMASK 0x0000007c /* Exception Code */
186 #define CAUSE_EXCSHIFT 2 /* Right justify EXC */ 189 #define CAUSE_EXCSHIFT 2 /* Right justify EXC */
187 190
188 /* Exception Codes */ 191 /* Exception Codes */
189 #define EXC_INT 0 /* External interrupt */ 192 #define EXC_INT 0 /* External interrupt */
190 #define EXC_MOD 1 /* TLB modification exception */ 193 #define EXC_MOD 1 /* TLB modification exception */
191 #define EXC_TLBL 2 /* TLB miss (Load or Ifetch) */ 194 #define EXC_TLBL 2 /* TLB miss (Load or Ifetch) */
192 #define EXC_TLBS 3 /* TLB miss (Store) */ 195 #define EXC_TLBS 3 /* TLB miss (Store) */
193 #define EXC_ADEL 4 /* Address error (Load or Ifetch) */ 196 #define EXC_ADEL 4 /* Address error (Load or Ifetch) */
194 #define EXC_ADES 5 /* Address error (Store) */ 197 #define EXC_ADES 5 /* Address error (Store) */
195 #define EXC_IBE 6 /* Bus error (Ifetch) */ 198 #define EXC_IBE 6 /* Bus error (Ifetch) */
196 #define EXC_DBE 7 /* Bus error (data load or store) */ 199 #define EXC_DBE 7 /* Bus error (data load or store) */
197 #define EXC_SYS 8 /* System call */ 200 #define EXC_SYS 8 /* System call */
198 #define EXC_BP 9 /* Break point */ 201 #define EXC_BP 9 /* Break point */
199 #define EXC_RI 10 /* Reserved instruction */ 202 #define EXC_RI 10 /* Reserved instruction */
200 #define EXC_CPU 11 /* Coprocessor unusable */ 203 #define EXC_CPU 11 /* Coprocessor unusable */
201 #define EXC_OVF 12 /* Arithmetic overflow */ 204 #define EXC_OVF 12 /* Arithmetic overflow */
202 #define EXC_TRAP 13 /* Trap exception */ 205 #define EXC_TRAP 13 /* Trap exception */
203 #define EXC_FPE 15 /* Floating Point Exception */ 206 #define EXC_FPE 15 /* Floating Point Exception */
204 207
205 208 #endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS