WebThe purpose of the supervisor binary interface is to act as an interface between the machine and the operating system. Example Execution Environment Layering. The SBI protects certain memory locations, which requires the operating system to go through the SBI to communicate. Generally, the operating system is given access to most hardware, … http://csg.csail.mit.edu/6.175/lectures/L09-RISC-V%20ISA.pdf
Handling Interrupts and Traps: RISCV OS in Rust - Stephen Marz
WebI am trying to write a reuseable macro to configure some CSR's in assembly. E.g.macro initTrap entry, status, enable la t0, entry csrw mtvec, t0 csrwi mstatus, status csrwi mie, enable .endm Then to use it (at least to test): initTrap trap_entry, 0x0, 0x0 WebDec 27, 2024 · The address of supervisor is now in t0, and we can see that the next instruction will use the csrw pseudoinstruction to write the address to mepc, the Machine Exception Program Counter. This CSR is used to instruct the processor where execution should continue when returning from a trap in M mode (using the mret instruction we saw … fishersci.com fisher
opensbi/fw_base.S at master · riscv-software-src/opensbi
WebOct 17, 2024 · #define CSR_MTVEC 0x305 #define CSR_MSCRATCH 0x340 ... + csrw sscratch, 0 + +#ifdef CONFIG_FPU + csrr t0, CSR_MISA + andi t0, t0, (COMPAT_HWCAP_ISA_F COMPAT_HWCAP_ISA_D) + bnez t0, .Lreset_regs_done + + li t1, SR_FS + csrs CSR_XSTATUS, t1 + fmv.s.x f0, zero WebOn Thu, Dec 19, 2024 at 12:15 PM Greentime Hu wrote: > > This patch fixes that the sscratch register clearing in M-mode. It cleared > sscratch register in M-mode, but it should clear mscratch register. That will > cause kernel trap if the CPU core doesn't support S-mode when trying to access > sscratch. > Fixes: 9e80635619b5 … WebNov 5, 2024 · csrw mepc, a0 # Now load the trap frame back into t6 csrr t6, mscratch # Restore all GP registers .set i, 1 .rept 31 load_gp %i .set i, i+1 .endr # Since we ran this loop 31 times starting with i = 1, # the last one loaded t6 back to its original value. mret You can see we use what are known as directives and macros, such as .set and store_gp ... fishersci.com quotes