csrrw x5, mepc, x0 # 保存异常地址到 x5 csrr x6, mcause # 获取中断原因到 x6 ... csrrw x0, mepc, x5 # 恢复异常地址 mret # 返回原来的运行状态 操作系统调度 GPR:调度程序中临时存放上下文数据。 CSR:存储当前运行模式(mstatus)或设置时间片中断(mtimecmp)。 总结 GPR 是处理器核心的数据工作...
wfi: wait for interrupt csrr,读取一个 CSR 的值到通用寄存器。如:csrr t0, mstatus,读取mstatus的值到t0中。 csrw,把一个通用寄存器中的值写入 CSR 中。如:csrw mstatus, t0,将t0的值写入mstatus。 csrs,把 CSR 中指定的 bit 置 1。如:csrsi mstatus, (1 << 2),将mstatus的右起第 3 位置 ...
csrrc s1, CSR_STATUS, t0 csrr s2, CSR_EPC csrr s3, CSR_TVAL csrr s4, CSR_CAUSE csrr s5, CSR_SCRATCH REG_S s0, PT_SP(sp) REG_S s1, PT_STATUS(sp) REG_S s2, PT_EPC(sp) REG_S s3, PT_BADADDR(sp) REG_S s4, PT_CAUSE(sp) REG_S s5, PT_TP(sp)/** Set the scratch ...
如果条件分支没 有发生(not taken),那么将不会产生一个取指不对齐异常。 在所有格式中,RISC-V将源寄存器(rs1和rs2)和... 被编码为CSRRWIx0,csr, zimm。RISC-V指令集描述RISC-V被设计成可以支持丰富的定制化和特殊化。基本整数ISA 可被一个或者多个可选指令集扩展进行增强,但是基本...
csrrwi(CSR Read and Write Immediate)将 CSR 寄存器的值读取到一个通用寄存器中,并将立即数(常数值)写入 CSR 寄存器。 csrrsi(CSR Read and Set Immediate)读取 CSR 寄存器的值,并将给定的立即数按位 "或"(OR)到 CSR 寄存器中(即设置 CSR 寄存器的特定位)。
xnxti寄存器的全称是:Next Interrupt Handler Address and Interrupt-Enable,从这个命名中可以看到该寄存器涉及两个功能点:中断使能以及中断服务程序入口,它们分别对应的是xnxti寄存器的写入行为以及读取行为。目前协议规定使用CSRR/CSRRSI/CSRRCI指令访问xnxti寄存器,其它形式的CSR指令被保留。
CSR是控制状态寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令进行访问。 M模式和S模式都有自己的CSR寄存器,但是大体上相同。下面列举一些常用的CSR。 M模式CSR寄存器 登录后复制mstatus 状态寄存器,保存了全局中断使能状态和其他状态,例如切换模式前,保存当前模式。
CSRRWI(CSR Read and Write Immediate) funct3:101 opcode:1110011(0x73) CSRRSI(CSR Read and Set Immediate) funct3:110 opcode:1110011(0x73) CSRRCI(CSR Read and Clear Immediate) funct3:111 opcode:1110011(0x73) 读取mstatus 寄存器并写入新值 ...
伪指令csrw csr,rs(实际为csrrw x0,csr,rs)可以向CSR寄存器中写入新值。下图中的csrrs指令可以读取CSR寄存器的值,并设置相应位为1,伪指令csrr rd,csr(实际为csrrs rd,csr,x0)可用来读取CSR寄存器的值。 20..ld文件是链接脚本文件,用于指导链接器如何将编译后的代码和数据链接成最终的可执行文件,可以在gcc...
A是CSR指令,在A的操作码中,csr被设置为R。如果A是CSRRW或CSRRWI,需要rd不是x0; R是CSR,且是指令A的隐式源寄存器; R是CSR,它是A的另一个源寄存器别名; 目的寄存器定义:一般来说,如果满足下列任何条件之一,寄存器R(除x0)就是指令A的目的寄存器: ...