riscv: Add CSR numbers
authorBin Meng <bmeng.cn@gmail.com>
Wed, 12 Dec 2018 14:12:36 +0000 (06:12 -0800)
committerAndes <uboot@andestech.com>
Tue, 18 Dec 2018 01:56:27 +0000 (09:56 +0800)
The standard RISC-V ISA sets aside a 12-bit encoding space for up
to 4096 CSRs. This adds all known CSR numbers as defined in the
RISC-V Privileged Architecture Version 1.10.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Reviewed-by: Anup Patel <anup@brainfault.org>
arch/riscv/include/asm/encoding.h

index 97cf906aa63b9ce5e4384a9b4b3e581d6d08d408..05e1ce352641be8b4718148ad6ebc2354b7c0077 100644 (file)
 #define RISCV_PGSHIFT 12
 #define RISCV_PGSIZE BIT(RISCV_PGSHIFT)
 
+/* CSR numbers */
+#define CSR_FFLAGS             0x1
+#define CSR_FRM                        0x2
+#define CSR_FCSR               0x3
+
+#define CSR_SSTATUS            0x100
+#define CSR_SEDELEG            0x102
+#define CSR_SIDELEG            0x103
+#define CSR_SIE                        0x104
+#define CSR_STVEC              0x105
+#define CSR_SCOUNTEREN         0x106
+#define CSR_SSCRATCH           0x140
+#define CSR_SEPC               0x141
+#define CSR_SCAUSE             0x142
+#define CSR_STVAL              0x143
+#define CSR_SIP                        0x144
+#define CSR_SATP               0x180
+
+#define CSR_MSTATUS            0x300
+#define CSR_MISA               0x301
+#define CSR_MEDELEG            0x302
+#define CSR_MIDELEG            0x303
+#define CSR_MIE                        0x304
+#define CSR_MTVEC              0x305
+#define CSR_MCOUNTEREN         0x306
+#define CSR_MHPMEVENT3         0x323
+#define CSR_MHPMEVENT4         0x324
+#define CSR_MHPMEVENT5         0x325
+#define CSR_MHPMEVENT6         0x326
+#define CSR_MHPMEVENT7         0x327
+#define CSR_MHPMEVENT8         0x328
+#define CSR_MHPMEVENT9         0x329
+#define CSR_MHPMEVENT10                0x32a
+#define CSR_MHPMEVENT11                0x32b
+#define CSR_MHPMEVENT12                0x32c
+#define CSR_MHPMEVENT13                0x32d
+#define CSR_MHPMEVENT14                0x32e
+#define CSR_MHPMEVENT15                0x32f
+#define CSR_MHPMEVENT16                0x330
+#define CSR_MHPMEVENT17                0x331
+#define CSR_MHPMEVENT18                0x332
+#define CSR_MHPMEVENT19                0x333
+#define CSR_MHPMEVENT20                0x334
+#define CSR_MHPMEVENT21                0x335
+#define CSR_MHPMEVENT22                0x336
+#define CSR_MHPMEVENT23                0x337
+#define CSR_MHPMEVENT24                0x338
+#define CSR_MHPMEVENT25                0x339
+#define CSR_MHPMEVENT26                0x33a
+#define CSR_MHPMEVENT27                0x33b
+#define CSR_MHPMEVENT28                0x33c
+#define CSR_MHPMEVENT29                0x33d
+#define CSR_MHPMEVENT30                0x33e
+#define CSR_MHPMEVENT31                0x33f
+#define CSR_MSCRATCH           0x340
+#define CSR_MEPC               0x341
+#define CSR_MCAUSE             0x342
+#define CSR_MTVAL              0x343
+#define CSR_MIP                        0x344
+#define CSR_PMPCFG0            0x3a0
+#define CSR_PMPCFG1            0x3a1
+#define CSR_PMPCFG2            0x3a2
+#define CSR_PMPCFG3            0x3a3
+#define CSR_PMPADDR0           0x3b0
+#define CSR_PMPADDR1           0x3b1
+#define CSR_PMPADDR2           0x3b2
+#define CSR_PMPADDR3           0x3b3
+#define CSR_PMPADDR4           0x3b4
+#define CSR_PMPADDR5           0x3b5
+#define CSR_PMPADDR6           0x3b6
+#define CSR_PMPADDR7           0x3b7
+#define CSR_PMPADDR8           0x3b8
+#define CSR_PMPADDR9           0x3b9
+#define CSR_PMPADDR10          0x3ba
+#define CSR_PMPADDR11          0x3bb
+#define CSR_PMPADDR12          0x3bc
+#define CSR_PMPADDR13          0x3bd
+#define CSR_PMPADDR14          0x3be
+#define CSR_PMPADDR15          0x3bf
+
+#define CSR_TSELECT            0x7a0
+#define CSR_TDATA1             0x7a1
+#define CSR_TDATA2             0x7a2
+#define CSR_TDATA3             0x7a3
+#define CSR_DCSR               0x7b0
+#define CSR_DPC                        0x7b1
+#define CSR_DSCRATCH           0x7b2
+
+#define CSR_MCYCLE             0xb00
+#define CSR_MINSTRET           0xb02
+#define CSR_MHPMCOUNTER3       0xb03
+#define CSR_MHPMCOUNTER4       0xb04
+#define CSR_MHPMCOUNTER5       0xb05
+#define CSR_MHPMCOUNTER6       0xb06
+#define CSR_MHPMCOUNTER7       0xb07
+#define CSR_MHPMCOUNTER8       0xb08
+#define CSR_MHPMCOUNTER9       0xb09
+#define CSR_MHPMCOUNTER10      0xb0a
+#define CSR_MHPMCOUNTER11      0xb0b
+#define CSR_MHPMCOUNTER12      0xb0c
+#define CSR_MHPMCOUNTER13      0xb0d
+#define CSR_MHPMCOUNTER14      0xb0e
+#define CSR_MHPMCOUNTER15      0xb0f
+#define CSR_MHPMCOUNTER16      0xb10
+#define CSR_MHPMCOUNTER17      0xb11
+#define CSR_MHPMCOUNTER18      0xb12
+#define CSR_MHPMCOUNTER19      0xb13
+#define CSR_MHPMCOUNTER20      0xb14
+#define CSR_MHPMCOUNTER21      0xb15
+#define CSR_MHPMCOUNTER22      0xb16
+#define CSR_MHPMCOUNTER23      0xb17
+#define CSR_MHPMCOUNTER24      0xb18
+#define CSR_MHPMCOUNTER25      0xb19
+#define CSR_MHPMCOUNTER26      0xb1a
+#define CSR_MHPMCOUNTER27      0xb1b
+#define CSR_MHPMCOUNTER28      0xb1c
+#define CSR_MHPMCOUNTER29      0xb1d
+#define CSR_MHPMCOUNTER30      0xb1e
+#define CSR_MHPMCOUNTER31      0xb1f
+#define CSR_MCYCLEH            0xb80
+#define CSR_MINSTRETH          0xb82
+#define CSR_MHPMCOUNTER3H      0xb83
+#define CSR_MHPMCOUNTER4H      0xb84
+#define CSR_MHPMCOUNTER5H      0xb85
+#define CSR_MHPMCOUNTER6H      0xb86
+#define CSR_MHPMCOUNTER7H      0xb87
+#define CSR_MHPMCOUNTER8H      0xb88
+#define CSR_MHPMCOUNTER9H      0xb89
+#define CSR_MHPMCOUNTER10H     0xb8a
+#define CSR_MHPMCOUNTER11H     0xb8b
+#define CSR_MHPMCOUNTER12H     0xb8c
+#define CSR_MHPMCOUNTER13H     0xb8d
+#define CSR_MHPMCOUNTER14H     0xb8e
+#define CSR_MHPMCOUNTER15H     0xb8f
+#define CSR_MHPMCOUNTER16H     0xb90
+#define CSR_MHPMCOUNTER17H     0xb91
+#define CSR_MHPMCOUNTER18H     0xb92
+#define CSR_MHPMCOUNTER19H     0xb93
+#define CSR_MHPMCOUNTER20H     0xb94
+#define CSR_MHPMCOUNTER21H     0xb95
+#define CSR_MHPMCOUNTER22H     0xb96
+#define CSR_MHPMCOUNTER23H     0xb97
+#define CSR_MHPMCOUNTER24H     0xb98
+#define CSR_MHPMCOUNTER25H     0xb99
+#define CSR_MHPMCOUNTER26H     0xb9a
+#define CSR_MHPMCOUNTER27H     0xb9b
+#define CSR_MHPMCOUNTER28H     0xb9c
+#define CSR_MHPMCOUNTER29H     0xb9d
+#define CSR_MHPMCOUNTER30H     0xb9e
+#define CSR_MHPMCOUNTER31H     0xb9f
+
+#define CSR_CYCLE              0xc00
+#define CSR_TIME               0xc01
+#define CSR_INSTRET            0xc02
+#define CSR_HPMCOUNTER3                0xc03
+#define CSR_HPMCOUNTER4                0xc04
+#define CSR_HPMCOUNTER5                0xc05
+#define CSR_HPMCOUNTER6                0xc06
+#define CSR_HPMCOUNTER7                0xc07
+#define CSR_HPMCOUNTER8                0xc08
+#define CSR_HPMCOUNTER9                0xc09
+#define CSR_HPMCOUNTER10       0xc0a
+#define CSR_HPMCOUNTER11       0xc0b
+#define CSR_HPMCOUNTER12       0xc0c
+#define CSR_HPMCOUNTER13       0xc0d
+#define CSR_HPMCOUNTER14       0xc0e
+#define CSR_HPMCOUNTER15       0xc0f
+#define CSR_HPMCOUNTER16       0xc10
+#define CSR_HPMCOUNTER17       0xc11
+#define CSR_HPMCOUNTER18       0xc12
+#define CSR_HPMCOUNTER19       0xc13
+#define CSR_HPMCOUNTER20       0xc14
+#define CSR_HPMCOUNTER21       0xc15
+#define CSR_HPMCOUNTER22       0xc16
+#define CSR_HPMCOUNTER23       0xc17
+#define CSR_HPMCOUNTER24       0xc18
+#define CSR_HPMCOUNTER25       0xc19
+#define CSR_HPMCOUNTER26       0xc1a
+#define CSR_HPMCOUNTER27       0xc1b
+#define CSR_HPMCOUNTER28       0xc1c
+#define CSR_HPMCOUNTER29       0xc1d
+#define CSR_HPMCOUNTER30       0xc1e
+#define CSR_HPMCOUNTER31       0xc1f
+#define CSR_CYCLEH             0xc80
+#define CSR_TIMEH              0xc81
+#define CSR_INSTRETH           0xc82
+#define CSR_HPMCOUNTER3H       0xc83
+#define CSR_HPMCOUNTER4H       0xc84
+#define CSR_HPMCOUNTER5H       0xc85
+#define CSR_HPMCOUNTER6H       0xc86
+#define CSR_HPMCOUNTER7H       0xc87
+#define CSR_HPMCOUNTER8H       0xc88
+#define CSR_HPMCOUNTER9H       0xc89
+#define CSR_HPMCOUNTER10H      0xc8a
+#define CSR_HPMCOUNTER11H      0xc8b
+#define CSR_HPMCOUNTER12H      0xc8c
+#define CSR_HPMCOUNTER13H      0xc8d
+#define CSR_HPMCOUNTER14H      0xc8e
+#define CSR_HPMCOUNTER15H      0xc8f
+#define CSR_HPMCOUNTER16H      0xc90
+#define CSR_HPMCOUNTER17H      0xc91
+#define CSR_HPMCOUNTER18H      0xc92
+#define CSR_HPMCOUNTER19H      0xc93
+#define CSR_HPMCOUNTER20H      0xc94
+#define CSR_HPMCOUNTER21H      0xc95
+#define CSR_HPMCOUNTER22H      0xc96
+#define CSR_HPMCOUNTER23H      0xc97
+#define CSR_HPMCOUNTER24H      0xc98
+#define CSR_HPMCOUNTER25H      0xc99
+#define CSR_HPMCOUNTER26H      0xc9a
+#define CSR_HPMCOUNTER27H      0xc9b
+#define CSR_HPMCOUNTER28H      0xc9c
+#define CSR_HPMCOUNTER29H      0xc9d
+#define CSR_HPMCOUNTER30H      0xc9e
+#define CSR_HPMCOUNTER31H      0xc9f
+
+#define CSR_MVENDORID          0xf11
+#define CSR_MARCHID            0xf12
+#define CSR_MIMPID             0xf13
+#define CSR_MHARTID            0xf14
+
 #endif /* __riscv */
 
 #endif /* RISCV_CSR_ENCODING_H */