@@ -89,3 +89,91 @@ uint32_t uip; /* User interrupt pending */
8989// ====================================================== //
9090uint32_t fflags ; /* Floating-Point Accrued Exceptions*/
9191uint32_t frm ; /* Floating-Point Dynamic Rounding Mode*/
92+ uint32_t fcsr ; /* Floating-Point Control and Status Register (frm + fflags )*/
93+ // ====================================================== //
94+ // ================ User Counter / TImers =============== //
95+ // ====================================================== //
96+ uint32_t cycle ; /* Cycle counter for RDCYCLE instruction */
97+ uint32_t time ; /* Timer for RDTIME instruction */
98+ uint32_t instret ; /* Instructions-retired counter for RDINSTRET instructions*/
99+ uint32_t cycleh ; /* Upper 32 bits of cycle, RV32I only. */
100+ uint32_t timeh ; /* Upper 32 bits of time, RV32I only. */
101+
102+
103+ // ====================================================== //
104+ // ================ Supervior Trap Setup ================ //
105+ // ====================================================== //
106+ uint32_t sstatus ; /* Supervisor status register */
107+ uint32_t sedeleg ; /* Supervisor exception delegation register */
108+ uint32_t sideleg ; /* Supervisor interrupt delegation register */
109+ uint32_t sie ; /* Supervisor interrupt-enable register*/
110+ uint32_t stvec ; /* Supervisor trap handler base address */
111+ // ====================================================== //
112+ // ============== Supervisor Trap Handling ============== //
113+ // ====================================================== //
114+ uint32_t sscratch ; /* Scratch register for supervisor trap handlers */
115+ uint32_t sepc ; /* Supervisor exception program counter */
116+ uint32_t scause ; /* Supervisor trap cause */
117+ uint32_t sbadaddr ; /* Supervisor bad address */
118+ uint32_t sip ; /* Supervisor interrupt pending */
119+ // ====================================================== //
120+ // ======== Supervisor Protection and Translation ======= //
121+ // ====================================================== //
122+ uint32_t sptbr ; /* Page-table base register */
123+
124+
125+ // ====================================================== //
126+ // ================ Hypervisor Trap Setup =============== //
127+ // ====================================================== //
128+ uint32_t hstatus ; /* Hypervisor status register */
129+ uint32_t hedeleg ; /* Hypervisor exception delegation register */
130+ uint32_t hideleg ; /* Hyperbisor interrupt delegation register */
131+ uint32_t hie ; /* Hypervisor interrupt-enable register */
132+ uint32_t htvec ; /* Hypervisor trap handler base address */
133+ // ====================================================== //
134+ // ============== Hypervisor Trap Handling ============== //
135+ // ====================================================== //
136+ uint32_t hscratch ; /* Scratch register for hypervisor trap handlers */
137+ uint32_t hepc ; /* Hypervisor exception program counter */
138+ uint32_t hcause ; /* Hypervisor trap cause */
139+ uint32_t hbadaddr ; /* Hypervisor bad address */
140+ uint32_t hip ; /* Hypervisor interrupt pending */
141+ // ====================================================== //
142+ // ======== Hypervisor Protection and Translation ======= //
143+ // ====================================================== //
144+ // uint32_t TBD; /* TBD */
145+
146+
147+ // ====================================================== //
148+ // ============ Machine Information Register ============ //
149+ // ====================================================== //
150+ uint32_t mvendorid ; /* Vendor ID*/
151+ uint32_t marchid ; /* Architecture ID */
152+ uint32_t mimpid ; /* Implementation ID */
153+ uint32_t mhartid ; /* Hardware thread ID */
154+ // ====================================================== //
155+ // ================= Machine Trap Setup ================= //
156+ // ====================================================== //
157+ uint32_t mstatus ; /* Machine status register */
158+ uint32_t misa ; /* ISA and extensions */
159+ uint32_t medeleg ; /* Machine exception delegation register */
160+ uint32_t mideleg ; /* Machine interrupt delegation register */
161+ uint32_t mie ; /* Machine interrupt-enable register */
162+ uint32_t mtvec ; /* Machine trap-handler base address */
163+ // ====================================================== //
164+ // ================ Machine Trap Handling =============== //
165+ // ====================================================== //
166+ uint32_t mscratch ; /* Scratch register for machine trap handlers */
167+ uint32_t mepc ; /* Machine exception program counter */
168+ uint32_t mcause ; /* Machine trap cause */
169+ uint32_t mbadaddr ; /* Machine bad address */
170+ uint32_t mip ; /* Machine interrupt pending */
171+ // ====================================================== //
172+ // ========= Machine Protextion and Translation ========= //
173+ // ====================================================== //
174+ uint32_t mbase ; /* Base regsiter */
175+ uint32_t mbound ; /* Bound register */
176+ uint32_t mibase ; /* Instruction base register */
177+ uint32_t mibound ; /* Instruction bound register */
178+ uint32_t mdbase ; /* Data base register */
179+ uint32_t mdbound ; /* Data bound register */
0 commit comments