diff options
-rw-r--r-- | lib/sbi/sbi_trap.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 5781fea..8d20e04 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -259,11 +259,10 @@ struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs) msg = "ecall handler failed"; break; case CAUSE_LOAD_ACCESS: - sbi_pmu_ctr_incr_fw(SBI_PMU_FW_ACCESS_LOAD); - break; case CAUSE_STORE_ACCESS: - sbi_pmu_ctr_incr_fw(SBI_PMU_FW_ACCESS_STORE); - break; + sbi_pmu_ctr_incr_fw(mcause == CAUSE_LOAD_ACCESS ? + SBI_PMU_FW_ACCESS_LOAD : SBI_PMU_FW_ACCESS_STORE); + /* fallthrough */ default: /* If the trap came from S or U mode, redirect it there */ trap.epc = regs->mepc; |