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 ...
csrrc(CSR Read and Clear)读取 CSR 寄存器的值,并将给定的值按位 "与"(AND)到 CSR 寄存器中(即清除 CSR 寄存器中某些位的值)。 csrrwi(CSR Read and Write Immediate)将 CSR 寄存器的值读取到一个通用寄存器中,并将立即数(常数值)写入 CSR 寄存器。 csrrsi(CSR Read and Set Immediate)读取 CSR 寄存器...
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 位置 ...
CSR是控制状态寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令进行访问。 M模式和S模式都有自己的CSR寄存器,但是大体上相同。下面列举一些常用的CSR。 M模式CSR寄存器 登录后复制mstatus 状态寄存器,保存了全局中断使能状态和其他状态,例如切换模式前,保存当前模式。 登录后复制mtvec 异常入口基地址寄...
CSR是控制状态寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令进行访问。 M模式和S模式都有自己的CSR寄存器,但是大体上相同。下面列举一些常用的CSR。 M模式CSR寄存器 mstatus 状态寄存器,保存了全局中断使能状态和其他状态,例如切换模式前,保存当前模式。
xnxti寄存器的全称是:Next Interrupt Handler Address and Interrupt-Enable,从这个命名中可以看到该寄存器涉及两个功能点:中断使能以及中断服务程序入口,它们分别对应的是xnxti寄存器的写入行为以及读取行为。目前协议规定使用CSRR/CSRRSI/CSRRCI指令访问xnxti寄存器,其它形式的CSR指令被保留。
如果条件分支没 有发生(not taken),那么将不会产生一个取指不对齐异常。 在所有格式中,RISC-V将源寄存器(rs1和rs2)和... 被编码为CSRRWIx0,csr, zimm。RISC-V指令集描述RISC-V被设计成可以支持丰富的定制化和特殊化。基本整数ISA 可被一个或者多个可选指令集扩展进行增强,但是基本...
# 异常处理程序 handle_exception: csrr t0, mcause # 获取异常原因 csrr t1, mepc # 获取异常发生时的PC值 # 根据异常原因进行处理 # 这里只是一个简单的示例,实际处理可能会更加复杂 beq t0, zero, handle_interrupt # 如果是中断(mcause最高位为1),则跳转到中断处理代码 # 非法指令异常处理代码 # .....
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 寄存器并写入新值 ...
csrr a0, 0xF14 //把0xF14的值读入到a0中 andi a1, a0, 0x1f //把a0 和0x1F按位与运算后存储到a1中 srli a0, a0, 5 //将高位移动到低位,覆盖a0 (SLLI是逻辑左移(0被移入低位); SRLI是逻辑右移(0被移入高位);SRAI是算术右移(原来的符号位被复制到空出的高位中)) li a2, ARCHI_FC_CID ...