hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
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
/** @file
  RISC-V package definitions.
 
  Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#ifndef RISCV_INDUSTRY_STANDARD_H_
#define RISCV_INDUSTRY_STANDARD_H_
 
#if defined (MDE_CPU_RISCV64)
#define RISC_V_XLEN_BITS 64
#else
#endif
 
#define RISC_V_ISA_ATOMIC_EXTENSION                 (0x00000001 << 0)
#define RISC_V_ISA_BIT_OPERATION_EXTENSION          (0x00000001 << 1)
#define RISC_V_ISA_COMPRESSED_EXTENSION             (0x00000001 << 2)
#define RISC_V_ISA_DOUBLE_PRECISION_FP_EXTENSION    (0x00000001 << 3)
#define RISC_V_ISA_RV32E_ISA                        (0x00000001 << 4)
#define RISC_V_ISA_SINGLE_PRECISION_FP_EXTENSION    (0x00000001 << 5)
#define RISC_V_ISA_ADDITIONAL_STANDARD_EXTENSION    (0x00000001 << 6)
#define RISC_V_ISA_RESERVED_1                       (0x00000001 << 7)
#define RISC_V_ISA_INTEGER_ISA_EXTENSION            (0x00000001 << 8)
#define RISC_V_ISA_DYNAMICALLY_TRANSLATED_LANGUAGE_EXTENSION    (0x00000001 << 9)
#define RISC_V_ISA_RESERVED_2                       (0x00000001 << 10)
#define RISC_V_ISA_DECIMAL_FP_EXTENSION             (0x00000001 << 11)
#define RISC_V_ISA_INTEGER_MUL_DIV_EXTENSION        (0x00000001 << 12)
#define RISC_V_ISA_USER_LEVEL_INTERRUPT_SUPPORTED   (0x00000001 << 13)
#define RISC_V_ISA_RESERVED_3                       (0x00000001 << 14)
#define RISC_V_ISA_PACKED_SIMD_EXTENSION            (0x00000001 << 15)
#define RISC_V_ISA_QUAD_PRECISION_FP_EXTENSION      (0x00000001 << 16)
#define RISC_V_ISA_RESERVED_4                       (0x00000001 << 17)
#define RISC_V_ISA_SUPERVISOR_MODE_IMPLEMENTED      (0x00000001 << 18)
#define RISC_V_ISA_TRANSATIONAL_MEMORY_EXTENSION    (0x00000001 << 19)
#define RISC_V_ISA_USER_MODE_IMPLEMENTED            (0x00000001 << 20)
#define RISC_V_ISA_VECTOR_EXTENSION                 (0x00000001 << 21)
#define RISC_V_ISA_RESERVED_5                       (0x00000001 << 22)
#define RISC_V_ISA_NON_STANDARD_EXTENSION           (0x00000001 << 23)
#define RISC_V_ISA_RESERVED_6                       (0x00000001 << 24)
#define RISC_V_ISA_RESERVED_7                       (0x00000001 << 25)
 
//
// RISC-V CSR definitions.
//
//
// Machine information
//
#define RISCV_CSR_MACHINE_MVENDORID     0xF11
#define RISCV_CSR_MACHINE_MARCHID       0xF12
#define RISCV_CSR_MACHINE_MIMPID        0xF13
#define RISCV_CSR_MACHINE_HARRID        0xF14
//
// Machine Trap Setup.
//
#define RISCV_CSR_MACHINE_MSTATUS       0x300
#define RISCV_CSR_MACHINE_MISA          0x301
#define RISCV_CSR_MACHINE_MEDELEG       0x302
#define RISCV_CSR_MACHINE_MIDELEG       0x303
#define RISCV_CSR_MACHINE_MIE           0x304
#define RISCV_CSR_MACHINE_MTVEC         0x305
 
#define RISCV_TIMER_COMPARE_BITS      32
//
// Machine Timer and Counter.
//
//#define RISCV_CSR_MACHINE_MTIME         0x701
//#define RISCV_CSR_MACHINE_MTIMEH        0x741
//
// Machine Trap Handling.
//
#define RISCV_CSR_MACHINE_MSCRATCH      0x340
#define RISCV_CSR_MACHINE_MEPC          0x341
#define RISCV_CSR_MACHINE_MCAUSE        0x342
  #define MACHINE_MCAUSE_EXCEPTION_ MASK 0x0f
  #define MACHINE_MCAUSE_INTERRUPT      (RISC_V_XLEN_BITS - 1)
#define RISCV_CSR_MACHINE_MBADADDR      0x343
#define RISCV_CSR_MACHINE_MIP           0x344
 
//
// Machine Protection and Translation.
//
#define RISCV_CSR_MACHINE_MBASE         0x380
#define RISCV_CSR_MACHINE_MBOUND        0x381
#define RISCV_CSR_MACHINE_MIBASE        0x382
#define RISCV_CSR_MACHINE_MIBOUND       0x383
#define RISCV_CSR_MACHINE_MDBASE        0x384
#define RISCV_CSR_MACHINE_MDBOUND       0x385
 
//
// Supervisor mode CSR.
//
#define RISCV_CSR_SUPERVISOR_SSTATUS    0x100
  #define SSTATUS_SIE_BIT_POSITION      1
  #define SSTATUS_SPP_BIT_POSITION      8
#define RISCV_CSR_SUPERVISOR_SIE        0x104
#define RISCV_CSR_SUPERVISOR_SSCRATCH   0x140
#define RISCV_CSR_SUPERVISOR_SEPC       0x141
#define RISCV_CSR_SUPERVISOR_SCAUSE     0x142
  #define SCAUSE_USER_SOFTWARE_INT        0
  #define SCAUSE_SUPERVISOR_SOFTWARE_INT  1
  #define SCAUSE_USER_TIMER_INT           4
  #define SCAUSE_SUPERVISOR_TIMER_INT     5
  #define SCAUSE_USER_EXTERNAL_INT        8
  #define SCAUSE_SUPERVISOR_EXTERNAL_INT  9
#define RISCV_CSR_SUPERVISOR_STVAL      0x143
#define RISCV_CSR_SUPERVISOR_SIP        0x144
#define RISCV_CSR_SUPERVISOR_SATP       0x180
 
#if defined (MDE_CPU_RISCV64)
  #define RISCV_SATP_MODE_MASK          0xF000000000000000
  #define RISCV_SATP_MODE_BIT_POSITION  60
#endif
    #define RISCV_SATP_MODE_OFF         0
    #define RISCV_SATP_MODE_SV32        1
    #define RISCV_SATP_MODE_SV39        8
    #define RISCV_SATP_MODE_SV48        9
    #define RISCV_SATP_MODE_SV57        10
    #define RISCV_SATP_MODE_SV64        11
 
  #define SATP64_ASID_MASK              0x0FFFF00000000000
  #define SATP64_PPN_MASK               0x00000FFFFFFFFFFF
 
#define RISCV_CAUSE_MISALIGNED_FETCH        0x0
#define RISCV_CAUSE_FETCH_ACCESS            0x1
#define RISCV_CAUSE_ILLEGAL_INSTRUCTION     0x2
#define RISCV_CAUSE_BREAKPOINT              0x3
#define RISCV_CAUSE_MISALIGNED_LOAD         0x4
#define RISCV_CAUSE_LOAD_ACCESS             0x5
#define RISCV_CAUSE_MISALIGNED_STORE        0x6
#define RISCV_CAUSE_STORE_ACCESS            0x7
#define RISCV_CAUSE_USER_ECALL              0x8
#define RISCV_CAUSE_HYPERVISOR_ECALL        0x9
#define RISCV_CAUSE_SUPERVISOR_ECALL        0xa
#define RISCV_CAUSE_MACHINE_ECALL           0xb
#define RISCV_CAUSE_FETCH_PAGE_FAULT        0xc
#define RISCV_CAUSE_LOAD_PAGE_FAULT         0xd
#define RISCV_CAUSE_STORE_PAGE_FAULT        0xf
#define RISCV_CAUSE_FETCH_GUEST_PAGE_FAULT  0x14
#define RISCV_CAUSE_LOAD_GUEST_PAGE_FAULT   0x15
#define RISCV_CAUSE_STORE_GUEST_PAGE_FAULT  0x17
 
//
// Machine Read-Write Shadow of Hypervisor Read-Only Registers
//
#define RISCV_CSR_HTIMEW                0xB01
#define RISCV_CSR_HTIMEHW               0xB81
//
// Machine Host-Target Interface (Non-Standard Berkeley Extension)
//
#define RISCV_CSR_MTOHOST               0x780
#define RISCV_CSR_MFROMHOST             0x781
 
#endif