@@ -67,16 +67,46 @@ def lookupSysRegByName : SearchIndex {
67
67
// Volume II: Privileged Architecture.
68
68
69
69
//===----------------------------------------------------------------------===//
70
- // User Floating-Point CSRs
70
+ // Unprivileged Floating-Point CSRs
71
71
//===----------------------------------------------------------------------===//
72
72
73
73
def SysRegFFLAGS : SysReg<"fflags", 0x001>;
74
74
def SysRegFRM : SysReg<"frm", 0x002>;
75
75
def SysRegFCSR : SysReg<"fcsr", 0x003>;
76
76
77
77
//===----------------------------------------------------------------------===//
78
- // User Counter/Timers
78
+ // Unprivileged Vector CSRs
79
79
//===----------------------------------------------------------------------===//
80
+ def : SysReg<"vstart", 0x008>;
81
+ def : SysReg<"vxsat", 0x009>;
82
+ def SysRegVXRM : SysReg<"vxrm", 0x00A>;
83
+ def : SysReg<"vcsr", 0x00F>;
84
+ def SysRegVL : SysReg<"vl", 0xC20>;
85
+ def : SysReg<"vtype", 0xC21>;
86
+ def SysRegVLENB: SysReg<"vlenb", 0xC22>;
87
+
88
+ //===----------------------------------------------------------------------===//
89
+ // Unprivileged Zicfiss extension CSR
90
+ //===----------------------------------------------------------------------===//
91
+
92
+ def : SysReg<"ssp", 0x011>;
93
+
94
+ //===-----------------------------------------------
95
+ // Unprivileged Entropy Source Extension CSR
96
+ //===-----------------------------------------------
97
+
98
+ def SEED : SysReg<"seed", 0x015>;
99
+
100
+ //===-----------------------------------------------
101
+ // Unprivileged Zcmt Extension CSR
102
+ //===-----------------------------------------------
103
+
104
+ def : SysReg<"jvt", 0x017>;
105
+
106
+ //===----------------------------------------------------------------------===//
107
+ // Unprivileged Counter/Timers
108
+ //===----------------------------------------------------------------------===//
109
+
80
110
def CYCLE : SysReg<"cycle", 0xC00>;
81
111
def TIME : SysReg<"time", 0xC01>;
82
112
def INSTRET : SysReg<"instret", 0xC02>;
@@ -98,42 +128,52 @@ foreach i = 3...31 in
98
128
//===----------------------------------------------------------------------===//
99
129
// Supervisor Trap Setup
100
130
//===----------------------------------------------------------------------===//
131
+
101
132
def : SysReg<"sstatus", 0x100>;
102
133
def : SysReg<"sie", 0x104>;
103
134
def : SysReg<"stvec", 0x105>;
104
135
def : SysReg<"scounteren", 0x106>;
105
- def : SysReg<"stimecmp", 0x14D>;
106
- let isRV32Only = 1 in
107
- def : SysReg<"stimecmph", 0x15D>;
108
136
109
137
//===----------------------------------------------------------------------===//
110
138
// Supervisor Configuration
111
139
//===----------------------------------------------------------------------===//
112
140
113
141
def : SysReg<"senvcfg", 0x10A>;
114
142
143
+ //===----------------------------------------------------------------------===//
144
+ // Supervisor Counter Setup
145
+ //===----------------------------------------------------------------------===//
146
+
147
+ def : SysReg<"scountinhibit", 0x120>;
148
+
115
149
//===----------------------------------------------------------------------===//
116
150
// Supervisor Trap Handling
117
151
//===----------------------------------------------------------------------===//
152
+
118
153
def : SysReg<"sscratch", 0x140>;
119
154
def : SysReg<"sepc", 0x141>;
120
155
def : SysReg<"scause", 0x142>;
121
156
def : SysReg<"stval", 0x143>;
122
157
let isDeprecatedName = 1 in
123
158
def : SysReg<"sbadaddr", 0x143>;
124
159
def : SysReg<"sip", 0x144>;
160
+ def : SysReg<"scountovf", 0xDA0>;
125
161
126
162
//===----------------------------------------------------------------------===//
127
163
// Supervisor Protection and Translation
128
164
//===----------------------------------------------------------------------===//
165
+
129
166
def : SysReg<"satp", 0x180>;
130
167
let isDeprecatedName = 1 in
131
168
def : SysReg<"sptbr", 0x180>;
132
169
133
170
//===----------------------------------------------------------------------===//
134
- // Quality-of-Service(QoS) Identifiers (Ssqosid)
171
+ // Supervisor Timer Compare
135
172
//===----------------------------------------------------------------------===//
136
- def : SysReg<"srmcfg", 0x181>;
173
+
174
+ def : SysReg<"stimecmp", 0x14D>;
175
+ let isRV32Only = 1 in
176
+ def : SysReg<"stimecmph", 0x15D>;
137
177
138
178
//===----------------------------------------------------------------------===//
139
179
// Debug/Trace Registers
@@ -142,10 +182,18 @@ def : SysReg<"srmcfg", 0x181>;
142
182
def : SysReg<"scontext", 0x5A8>;
143
183
144
184
//===----------------------------------------------------------------------===//
145
- // Supervisor Count Overflow (defined in Sscofpmf)
185
+ // Supervisor Resource Management Configuration
146
186
//===----------------------------------------------------------------------===//
147
187
148
- def : SysReg<"scountovf", 0xDA0>;
188
+ def : SysReg<"srmcfg", 0x181>;
189
+
190
+ //===----------------------------------------------------------------------===//
191
+ // Supervisor State Enable
192
+ //===----------------------------------------------------------------------===//
193
+
194
+ foreach i = 0...3 in {
195
+ def : SysReg<"sstateen"#i, !add(0x10C, i)>;
196
+ }
149
197
150
198
//===----------------------------------------------------------------------===//
151
199
// Hypervisor Trap Setup
@@ -198,6 +246,16 @@ def : SysReg<"htimedelta", 0x605>;
198
246
let isRV32Only = 1 in
199
247
def : SysReg<"htimedeltah", 0x615>;
200
248
249
+ //===----------------------------------------------------------------------===//
250
+ // Hypervisor State Enable Registers
251
+ //===----------------------------------------------------------------------===//
252
+
253
+ foreach i = 0...3 in {
254
+ def : SysReg<"hstateen"#i, !add(0x60C, i)>;
255
+ let isRV32Only = 1 in
256
+ def : SysReg<"hstateen"#i#"h", !add(0x61C, i)>;
257
+ }
258
+
201
259
//===----------------------------------------------------------------------===//
202
260
// Virtual Supervisor Registers
203
261
//===----------------------------------------------------------------------===//
@@ -210,10 +268,15 @@ def : SysReg<"vsepc", 0x241>;
210
268
def : SysReg<"vscause", 0x242>;
211
269
def : SysReg<"vstval", 0x243>;
212
270
def : SysReg<"vsip", 0x244>;
271
+ def : SysReg<"vsatp", 0x280>;
272
+
273
+ //===----------------------------------------------------------------------===//
274
+ // Virtual Supervisor Timer Compare
275
+ //===----------------------------------------------------------------------===//
276
+
213
277
def : SysReg<"vstimecmp", 0x24D>;
214
278
let isRV32Only = 1 in
215
279
def : SysReg<"vstimecmph", 0x25D>;
216
- def : SysReg<"vsatp", 0x280>;
217
280
218
281
//===----------------------------------------------------------------------===//
219
282
// Machine Information Registers
@@ -228,6 +291,7 @@ def : SysReg<"mconfigptr", 0xF15>;
228
291
//===----------------------------------------------------------------------===//
229
292
// Machine Trap Setup
230
293
//===----------------------------------------------------------------------===//
294
+
231
295
def : SysReg<"mstatus", 0x300>;
232
296
def : SysReg<"misa", 0x301>;
233
297
def : SysReg<"medeleg", 0x302>;
@@ -278,9 +342,28 @@ foreach i = 0...15 in {
278
342
foreach i = 0...63 in
279
343
def : SysReg<"pmpaddr"#i, !add(0x3B0, i)>;
280
344
345
+ //===----------------------------------------------------------------------===//
346
+ // Machine State Enable Registers
347
+ //===----------------------------------------------------------------------===//
348
+
349
+ foreach i = 0...3 in {
350
+ def : SysReg<"mstateen"#i, !add(0x30C, i)>;
351
+ let isRV32Only = 1 in
352
+ def : SysReg<"mstateen"#i#"h", !add(0x31C, i)>;
353
+ }
354
+
355
+ //===-----------------------------------------------
356
+ // Resumable Non-Maskable Interrupts(Smrnmi) CSRs
357
+ //===-----------------------------------------------
358
+ def : SysReg<"mnscratch", 0x740>;
359
+ def : SysReg<"mnepc", 0x741>;
360
+ def : SysReg<"mncause", 0x742>;
361
+ def : SysReg<"mnstatus", 0x744>;
362
+
281
363
//===----------------------------------------------------------------------===//
282
364
// Machine Counter and Timers
283
365
//===----------------------------------------------------------------------===//
366
+
284
367
def : SysReg<"mcycle", 0xB00>;
285
368
def : SysReg<"minstret", 0xB02>;
286
369
@@ -300,6 +383,7 @@ foreach i = 3...31 in
300
383
//===----------------------------------------------------------------------===//
301
384
// Machine Counter Setup
302
385
//===----------------------------------------------------------------------===//
386
+
303
387
def : SysReg<"mcountinhibit", 0x320>;
304
388
305
389
// mhpmevent3-mhpmevent31 at 0x323-0x33F.
@@ -312,14 +396,10 @@ foreach i = 3...31 in {
312
396
def : SysReg<"mhpmevent"#i#"h", !add(0x723, !sub(i, 3))>;
313
397
}
314
398
315
- //===----------------------------------------------------------------------===//
316
- // Supervisor Counter Setup
317
- //===----------------------------------------------------------------------===//
318
- def : SysReg<"scountinhibit", 0x120>;
319
-
320
399
//===----------------------------------------------------------------------===//
321
400
// Debug/ Trace Registers (shared with Debug Mode)
322
401
//===----------------------------------------------------------------------===//
402
+
323
403
def : SysReg<"tselect", 0x7A0>;
324
404
def : SysReg<"tdata1", 0x7A1>;
325
405
let isAltName = 1 in {
@@ -344,6 +424,7 @@ def : SysReg<"mscontext", 0x7AA>;
344
424
//===----------------------------------------------------------------------===//
345
425
// Debug Mode Registers
346
426
//===----------------------------------------------------------------------===//
427
+
347
428
def : SysReg<"dcsr", 0x7B0>;
348
429
def : SysReg<"dpc", 0x7B1>;
349
430
@@ -354,45 +435,6 @@ let isAltName = 1 in
354
435
def : SysReg<"dscratch", 0x7B2>;
355
436
def : SysReg<"dscratch1", 0x7B3>;
356
437
357
- //===----------------------------------------------------------------------===//
358
- // User Vector CSRs
359
- //===----------------------------------------------------------------------===//
360
- def : SysReg<"vstart", 0x008>;
361
- def : SysReg<"vxsat", 0x009>;
362
- def SysRegVXRM : SysReg<"vxrm", 0x00A>;
363
- def : SysReg<"vcsr", 0x00F>;
364
- def SysRegVL : SysReg<"vl", 0xC20>;
365
- def : SysReg<"vtype", 0xC21>;
366
- def SysRegVLENB: SysReg<"vlenb", 0xC22>;
367
-
368
- //===----------------------------------------------------------------------===//
369
- // Shadow Stack CSR
370
- //===----------------------------------------------------------------------===//
371
- def : SysReg<"ssp", 0x011>;
372
-
373
- //===----------------------------------------------------------------------===//
374
- // State Enable Extension (Smstateen)
375
- //===----------------------------------------------------------------------===//
376
-
377
- // sstateen0-sstateen3 at 0x10C-0x10F, mstateen0-mstateen3 at 0x30C-0x30F,
378
- // mstateen0h-mstateen3h at 0x31C-0x31F, hstateen0-hstateen3 at 0x60C-0x60F,
379
- // and hstateen0h-hstateen3h at 0x61C-0x61F.
380
- foreach i = 0...3 in {
381
- def : SysReg<"sstateen"#i, !add(0x10C, i)>;
382
- def : SysReg<"mstateen"#i, !add(0x30C, i)>;
383
- let isRV32Only = 1 in
384
- def : SysReg<"mstateen"#i#"h", !add(0x31C, i)>;
385
- def : SysReg<"hstateen"#i, !add(0x60C, i)>;
386
- let isRV32Only = 1 in
387
- def : SysReg<"hstateen"#i#"h", !add(0x61C, i)>;
388
- }
389
-
390
- //===-----------------------------------------------
391
- // Entropy Source CSR
392
- //===-----------------------------------------------
393
-
394
- def SEED : SysReg<"seed", 0x015>;
395
-
396
438
//===-----------------------------------------------
397
439
// Advanced Interrupt Architecture
398
440
//===-----------------------------------------------
@@ -459,20 +501,6 @@ def : SysReg<"vsieh", 0x214>;
459
501
def : SysReg<"vsiph", 0x254>;
460
502
} // isRV32Only
461
503
462
- //===-----------------------------------------------
463
- // Jump Vector Table CSR
464
- //===-----------------------------------------------
465
-
466
- def : SysReg<"jvt", 0x017>;
467
-
468
- //===-----------------------------------------------
469
- // Resumable Non-Maskable Interrupts(Smrnmi) CSRs
470
- //===-----------------------------------------------
471
- def : SysReg<"mnscratch", 0x740>;
472
- def : SysReg<"mnepc", 0x741>;
473
- def : SysReg<"mncause", 0x742>;
474
- def : SysReg<"mnstatus", 0x744>;
475
-
476
504
//===-----------------------------------------------
477
505
// Control Transfer Records CSRs
478
506
//===-----------------------------------------------
0 commit comments