【问题标题】:How to clear an exception in handler in risc-v?如何清除 risc-v 处理程序中的异常?
【发布时间】:2021-07-04 00:46:01
【问题描述】:

以下是我在 FE310 Sifive-Hifive1-Rev B 板上的陷阱例程。

my_trap_routine:

    // read mcause
    csrr t0, mcause;

    // read mepc
    csrr t1, mepc;

mret;

现在,我生成了一个加载访问错误异常,并且执行跳转到了陷阱例程中。现在如何清除处理程序内部的异常,使其不会一次又一次地跳入陷阱例程?

【问题讨论】:

    标签: exception riscv riscv32


    【解决方案1】:

    你必须提前异常程序计数器,以便在用户/中断代码之后返回下一条指令。

    这在 RISC V 中相当简单,除非正在使用压缩指令集,在这种情况下,您必须对异常指令进行解码以确定 PC 前进多远。

    幸运的是,这是一个非常简单的解码,但您需要注意 RISC V 允许以 2 个字节为增量的大小变化指令长度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多