Skip to content

Commit edb9175

Browse files
author
Shao-Ce SUN
committed
[RISCV][llvm] Update CSRs
According the newest RISC-V Privileged Spec, updated CSRs. Reviewed By: asb Differential Revision: https://reviews.llvm.org/D116645
1 parent bf5f235 commit edb9175

File tree

8 files changed

+1938
-76
lines changed

8 files changed

+1938
-76
lines changed

llvm/lib/Target/RISCV/RISCVSystemOperands.td

Lines changed: 194 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===- RISCVSystemOperands.td ----------------------------*- tablegen -*-===//
1+
//===- RISCVSystemOperands.td ------------------------------*- tablegen -*-===//
22
//
33
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44
// See https://llvm.org/LICENSE.txt for license information.
@@ -70,34 +70,34 @@ def lookupSysRegByDeprecatedName : SearchIndex {
7070
// 2.3, 2.4 and 2.5 in the RISC-V Instruction Set Manual
7171
// Volume II: Privileged Architecture.
7272

73-
//===--------------------------
73+
//===----------------------------------------------------------------------===//
7474
// User Trap Setup
75-
//===--------------------------
75+
//===----------------------------------------------------------------------===//
7676
def : SysReg<"ustatus", 0x000>;
7777
def : SysReg<"uie", 0x004>;
7878
def : SysReg<"utvec", 0x005>;
7979

80-
//===--------------------------
80+
//===----------------------------------------------------------------------===//
8181
// User Trap Handling
82-
//===--------------------------
82+
//===----------------------------------------------------------------------===//
8383
def : SysReg<"uscratch", 0x040>;
8484
def : SysReg<"uepc", 0x041>;
8585
def : SysReg<"ucause", 0x042>;
8686
let DeprecatedName = "ubadaddr" in
8787
def : SysReg<"utval", 0x043>;
8888
def : SysReg<"uip", 0x044>;
8989

90-
//===--------------------------
90+
//===----------------------------------------------------------------------===//
9191
// User Floating-Point CSRs
92-
//===--------------------------
92+
//===----------------------------------------------------------------------===//
9393

9494
def SysRegFFLAGS : SysReg<"fflags", 0x001>;
9595
def SysRegFRM : SysReg<"frm", 0x002>;
9696
def SysRegFCSR : SysReg<"fcsr", 0x003>;
9797

98-
//===--------------------------
98+
//===----------------------------------------------------------------------===//
9999
// User Counter/Timers
100-
//===--------------------------
100+
//===----------------------------------------------------------------------===//
101101
def CYCLE : SysReg<"cycle", 0xC00>;
102102
def TIME : SysReg<"time", 0xC01>;
103103
def INSTRET : SysReg<"instret", 0xC02>;
@@ -168,71 +168,180 @@ def: SysReg<"hpmcounter30h", 0xC9E>;
168168
def: SysReg<"hpmcounter31h", 0xC9F>;
169169
}
170170

171-
//===--------------------------
171+
//===----------------------------------------------------------------------===//
172172
// Supervisor Trap Setup
173-
//===--------------------------
173+
//===----------------------------------------------------------------------===//
174174
def : SysReg<"sstatus", 0x100>;
175175
def : SysReg<"sedeleg", 0x102>;
176176
def : SysReg<"sideleg", 0x103>;
177177
def : SysReg<"sie", 0x104>;
178178
def : SysReg<"stvec", 0x105>;
179179
def : SysReg<"scounteren", 0x106>;
180180

181-
//===--------------------------
181+
//===----------------------------------------------------------------------===//
182+
// Supervisor Configuration
183+
//===----------------------------------------------------------------------===//
184+
185+
def : SysReg<"senvcfg", 0x10A>;
186+
187+
//===----------------------------------------------------------------------===//
182188
// Supervisor Trap Handling
183-
//===--------------------------
189+
//===----------------------------------------------------------------------===//
184190
def : SysReg<"sscratch", 0x140>;
185191
def : SysReg<"sepc", 0x141>;
186192
def : SysReg<"scause", 0x142>;
187193
let DeprecatedName = "sbadaddr" in
188194
def : SysReg<"stval", 0x143>;
189195
def : SysReg<"sip", 0x144>;
190196

191-
//===-------------------------------------
197+
//===----------------------------------------------------------------------===//
192198
// Supervisor Protection and Translation
193-
//===-------------------------------------
199+
//===----------------------------------------------------------------------===//
194200
let DeprecatedName = "sptbr" in
195201
def : SysReg<"satp", 0x180>;
196202

197-
//===-----------------------------
203+
//===----------------------------------------------------------------------===//
204+
// Debug/Trace Registers
205+
//===----------------------------------------------------------------------===//
206+
207+
def : SysReg<"scontext", 0x5A8>;
208+
209+
//===----------------------------------------------------------------------===//
210+
// Hypervisor Trap Setup
211+
//===----------------------------------------------------------------------===//
212+
213+
def : SysReg<"hstatus", 0x600>;
214+
def : SysReg<"hedeleg", 0x602>;
215+
def : SysReg<"hideleg", 0x603>;
216+
def : SysReg<"hie", 0x604>;
217+
def : SysReg<"hcounteren", 0x606>;
218+
def : SysReg<"hgeie", 0x607>;
219+
220+
//===----------------------------------------------------------------------===//
221+
// Hypervisor Trap Handling
222+
//===----------------------------------------------------------------------===//
223+
224+
def : SysReg<"htval", 0x643>;
225+
def : SysReg<"hip", 0x644>;
226+
def : SysReg<"hvip", 0x645>;
227+
def : SysReg<"htinst", 0x64A>;
228+
def : SysReg<"hgeip", 0xE12>;
229+
230+
//===----------------------------------------------------------------------===//
231+
// Hypervisor Configuration
232+
//===----------------------------------------------------------------------===//
233+
234+
def : SysReg<"henvcfg", 0x60A>;
235+
let isRV32Only = 1 in
236+
def : SysReg<"henvcfgh", 0x61A>;
237+
238+
//===----------------------------------------------------------------------===//
239+
// Hypervisor Protection and Translation
240+
//===----------------------------------------------------------------------===//
241+
242+
def : SysReg<"hgatp", 0x680>;
243+
244+
//===----------------------------------------------------------------------===//
245+
// Debug/Trace Registers
246+
//===----------------------------------------------------------------------===//
247+
248+
def : SysReg<"hcontext", 0x6A8>;
249+
250+
//===----------------------------------------------------------------------===//
251+
// Hypervisor Counter/Timer Virtualization Registers
252+
//===----------------------------------------------------------------------===//
253+
254+
def : SysReg<"htimedelta", 0x605>;
255+
let isRV32Only = 1 in
256+
def : SysReg<"htimedeltah", 0x615>;
257+
258+
//===----------------------------------------------------------------------===//
259+
// Virtual Supervisor Registers
260+
//===----------------------------------------------------------------------===//
261+
262+
def : SysReg<"vsstatus", 0x200>;
263+
def : SysReg<"vsie", 0x204>;
264+
def : SysReg<"vstvec", 0x205>;
265+
def : SysReg<"vsscratch", 0x240>;
266+
def : SysReg<"vsepc", 0x241>;
267+
def : SysReg<"vscause", 0x242>;
268+
def : SysReg<"vstval", 0x243>;
269+
def : SysReg<"vsip", 0x244>;
270+
def : SysReg<"vsatp", 0x280>;
271+
272+
//===----------------------------------------------------------------------===//
198273
// Machine Information Registers
199-
//===-----------------------------
274+
//===----------------------------------------------------------------------===//
200275

201276
def : SysReg<"mvendorid", 0xF11>;
202277
def : SysReg<"marchid", 0xF12>;
203278
def : SysReg<"mimpid", 0xF13>;
204279
def : SysReg<"mhartid", 0xF14>;
280+
def : SysReg<"mconfigptr", 0xF15>;
205281

206-
//===-----------------------------
282+
//===----------------------------------------------------------------------===//
207283
// Machine Trap Setup
208-
//===-----------------------------
284+
//===----------------------------------------------------------------------===//
209285
def : SysReg<"mstatus", 0x300>;
210286
def : SysReg<"misa", 0x301>;
211287
def : SysReg<"medeleg", 0x302>;
212288
def : SysReg<"mideleg", 0x303>;
213289
def : SysReg<"mie", 0x304>;
214290
def : SysReg<"mtvec", 0x305>;
215291
def : SysReg<"mcounteren", 0x306>;
292+
let isRV32Only = 1 in
293+
def : SysReg<"mstatush", 0x310>;
216294

217-
//===-----------------------------
295+
//===----------------------------------------------------------------------===//
218296
// Machine Trap Handling
219-
//===-----------------------------
297+
//===----------------------------------------------------------------------===//
220298
def : SysReg<"mscratch", 0x340>;
221299
def : SysReg<"mepc", 0x341>;
222300
def : SysReg<"mcause", 0x342>;
223301
let DeprecatedName = "mbadaddr" in
224302
def : SysReg<"mtval", 0x343>;
225303
def : SysReg<"mip", 0x344>;
304+
def : SysReg<"mtinst", 0x34A>;
305+
def : SysReg<"mtval2", 0x34B>;
306+
307+
//===----------------------------------------------------------------------===//
308+
// Machine Configuration
309+
//===----------------------------------------------------------------------===//
310+
311+
def : SysReg<"menvcfg", 0x30A>;
312+
let isRV32Only = 1 in
313+
def : SysReg<"menvcfgh", 0x31A>;
314+
def : SysReg<"mseccfg", 0x747>;
315+
let isRV32Only = 1 in
316+
def : SysReg<"mseccfgh", 0x757>;
226317

227-
//===----------------------------------
318+
//===----------------------------------------------------------------------===//
228319
// Machine Protection and Translation
229-
//===----------------------------------
320+
//===----------------------------------------------------------------------===//
230321
def : SysReg<"pmpcfg0", 0x3A0>;
231-
def : SysReg<"pmpcfg2", 0x3A2>;
232-
let isRV32Only = 1 in {
322+
let isRV32Only = 1 in
233323
def : SysReg<"pmpcfg1", 0x3A1>;
324+
def : SysReg<"pmpcfg2", 0x3A2>;
325+
let isRV32Only = 1 in
234326
def : SysReg<"pmpcfg3", 0x3A3>;
235-
}
327+
def : SysReg<"pmpcfg4", 0x3A4>;
328+
let isRV32Only = 1 in
329+
def : SysReg<"pmpcfg5", 0x3A5>;
330+
def : SysReg<"pmpcfg6", 0x3A6>;
331+
let isRV32Only = 1 in
332+
def : SysReg<"pmpcfg7", 0x3A7>;
333+
def : SysReg<"pmpcfg8", 0x3A8>;
334+
let isRV32Only = 1 in
335+
def : SysReg<"pmpcfg9", 0x3A9>;
336+
def : SysReg<"pmpcfg10", 0x3AA>;
337+
let isRV32Only = 1 in
338+
def : SysReg<"pmpcfg11", 0x3AB>;
339+
def : SysReg<"pmpcfg12", 0x3AC>;
340+
let isRV32Only = 1 in
341+
def : SysReg<"pmpcfg13", 0x3AD>;
342+
def : SysReg<"pmpcfg14", 0x3AE>;
343+
let isRV32Only = 1 in
344+
def : SysReg<"pmpcfg15", 0x3AF>;
236345

237346
def : SysReg<"pmpaddr0", 0x3B0>;
238347
def : SysReg<"pmpaddr1", 0x3B1>;
@@ -250,11 +359,59 @@ def : SysReg<"pmpaddr12", 0x3BC>;
250359
def : SysReg<"pmpaddr13", 0x3BD>;
251360
def : SysReg<"pmpaddr14", 0x3BE>;
252361
def : SysReg<"pmpaddr15", 0x3BF>;
362+
def : SysReg<"pmpaddr16", 0x3C0>;
363+
def : SysReg<"pmpaddr17", 0x3C1>;
364+
def : SysReg<"pmpaddr18", 0x3C2>;
365+
def : SysReg<"pmpaddr19", 0x3C3>;
366+
def : SysReg<"pmpaddr20", 0x3C4>;
367+
def : SysReg<"pmpaddr21", 0x3C5>;
368+
def : SysReg<"pmpaddr22", 0x3C6>;
369+
def : SysReg<"pmpaddr23", 0x3C7>;
370+
def : SysReg<"pmpaddr24", 0x3C8>;
371+
def : SysReg<"pmpaddr25", 0x3C9>;
372+
def : SysReg<"pmpaddr26", 0x3CA>;
373+
def : SysReg<"pmpaddr27", 0x3CB>;
374+
def : SysReg<"pmpaddr28", 0x3CC>;
375+
def : SysReg<"pmpaddr29", 0x3CD>;
376+
def : SysReg<"pmpaddr30", 0x3CE>;
377+
def : SysReg<"pmpaddr31", 0x3CF>;
378+
def : SysReg<"pmpaddr32", 0x3D0>;
379+
def : SysReg<"pmpaddr33", 0x3D1>;
380+
def : SysReg<"pmpaddr34", 0x3D2>;
381+
def : SysReg<"pmpaddr35", 0x3D3>;
382+
def : SysReg<"pmpaddr36", 0x3D4>;
383+
def : SysReg<"pmpaddr37", 0x3D5>;
384+
def : SysReg<"pmpaddr38", 0x3D6>;
385+
def : SysReg<"pmpaddr39", 0x3D7>;
386+
def : SysReg<"pmpaddr40", 0x3D8>;
387+
def : SysReg<"pmpaddr41", 0x3D9>;
388+
def : SysReg<"pmpaddr42", 0x3DA>;
389+
def : SysReg<"pmpaddr43", 0x3DB>;
390+
def : SysReg<"pmpaddr44", 0x3DC>;
391+
def : SysReg<"pmpaddr45", 0x3DD>;
392+
def : SysReg<"pmpaddr46", 0x3DE>;
393+
def : SysReg<"pmpaddr47", 0x3DF>;
394+
def : SysReg<"pmpaddr48", 0x3E0>;
395+
def : SysReg<"pmpaddr49", 0x3E1>;
396+
def : SysReg<"pmpaddr50", 0x3E2>;
397+
def : SysReg<"pmpaddr51", 0x3E3>;
398+
def : SysReg<"pmpaddr52", 0x3E4>;
399+
def : SysReg<"pmpaddr53", 0x3E5>;
400+
def : SysReg<"pmpaddr54", 0x3E6>;
401+
def : SysReg<"pmpaddr55", 0x3E7>;
402+
def : SysReg<"pmpaddr56", 0x3E8>;
403+
def : SysReg<"pmpaddr57", 0x3E9>;
404+
def : SysReg<"pmpaddr58", 0x3EA>;
405+
def : SysReg<"pmpaddr59", 0x3EB>;
406+
def : SysReg<"pmpaddr60", 0x3EC>;
407+
def : SysReg<"pmpaddr61", 0x3ED>;
408+
def : SysReg<"pmpaddr62", 0x3EE>;
409+
def : SysReg<"pmpaddr63", 0x3EF>;
253410

254411

255-
//===--------------------------
412+
//===----------------------------------------------------------------------===//
256413
// Machine Counter and Timers
257-
//===--------------------------
414+
//===----------------------------------------------------------------------===//
258415
def : SysReg<"mcycle", 0xB00>;
259416
def : SysReg<"minstret", 0xB02>;
260417

@@ -323,9 +480,9 @@ def: SysReg<"mhpmcounter30h", 0xB9E>;
323480
def: SysReg<"mhpmcounter31h", 0xB9F>;
324481
}
325482

326-
//===--------------------------
483+
//===----------------------------------------------------------------------===//
327484
// Machine Counter Setup
328-
//===--------------------------
485+
//===----------------------------------------------------------------------===//
329486
let AltName = "mucounteren" in // Privileged spec v1.9.1 Name
330487
def : SysReg<"mcountinhibit", 0x320>;
331488

@@ -359,17 +516,18 @@ def : SysReg<"mhpmevent29", 0x33D>;
359516
def : SysReg<"mhpmevent30", 0x33E>;
360517
def : SysReg<"mhpmevent31", 0x33F>;
361518

362-
//===-----------------------------------------------
519+
//===----------------------------------------------------------------------===//
363520
// Debug/ Trace Registers (shared with Debug Mode)
364-
//===-----------------------------------------------
521+
//===----------------------------------------------------------------------===//
365522
def : SysReg<"tselect", 0x7A0>;
366523
def : SysReg<"tdata1", 0x7A1>;
367524
def : SysReg<"tdata2", 0x7A2>;
368525
def : SysReg<"tdata3", 0x7A3>;
526+
def : SysReg<"mcontext", 0x7A8>;
369527

370-
//===-----------------------------------------------
528+
//===----------------------------------------------------------------------===//
371529
// Debug Mode Registers
372-
//===-----------------------------------------------
530+
//===----------------------------------------------------------------------===//
373531
def : SysReg<"dcsr", 0x7B0>;
374532
def : SysReg<"dpc", 0x7B1>;
375533

@@ -379,9 +537,9 @@ let AltName = "dscratch" in
379537
def : SysReg<"dscratch0", 0x7B2>;
380538
def : SysReg<"dscratch1", 0x7B3>;
381539

382-
//===-----------------------------------------------
540+
//===----------------------------------------------------------------------===//
383541
// User Vector CSRs
384-
//===-----------------------------------------------
542+
//===----------------------------------------------------------------------===//
385543
def : SysReg<"vstart", 0x008>;
386544
def : SysReg<"vxsat", 0x009>;
387545
def : SysReg<"vxrm", 0x00A>;

0 commit comments

Comments
 (0)