diff options
author | Anup Patel <anup.patel@wdc.com> | 2019-08-18 13:14:44 +0530 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2019-09-30 15:36:14 +0530 |
commit | 1e9f88889f8b7c66dd229299715eed87e734aafa (patch) | |
tree | 8c1619786e090dfc7cbb57223ac3edda86607ec5 /lib/sbi/sbi_illegal_insn.c | |
parent | 7d4420bd6929ef3f2c761c262dbc3f7f2ae150c2 (diff) |
lib: Emulate HTIMEDELTA CSR for platforms not having TIME CSR
For platforms not having TIME CSR, we trap-n-emulate TIME CSR
read/write in OpenSBI. Same rationale applies to HTIMEDELTA CSR
as well so we trap-n-emulate HTIMEDELTA CSR for platforms not
having TIME CSR.
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Diffstat (limited to 'lib/sbi/sbi_illegal_insn.c')
-rw-r--r-- | lib/sbi/sbi_illegal_insn.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/sbi/sbi_illegal_insn.c b/lib/sbi/sbi_illegal_insn.c index e75c13c..d15986a 100644 --- a/lib/sbi/sbi_illegal_insn.c +++ b/lib/sbi/sbi_illegal_insn.c @@ -49,8 +49,7 @@ static int system_opcode_insn(ulong insn, u32 hartid, ulong mcause, return sbi_trap_redirect(regs, scratch, regs->mepc, mcause, insn); - if (sbi_emulate_csr_read(csr_num, hartid, regs->mstatus, - scratch, &csr_val)) + if (sbi_emulate_csr_read(csr_num, hartid, regs, scratch, &csr_val)) return truly_illegal_insn(insn, hartid, mcause, regs, scratch); @@ -80,7 +79,7 @@ static int system_opcode_insn(ulong insn, u32 hartid, ulong mcause, return truly_illegal_insn(insn, hartid, mcause, regs, scratch); }; - if (do_write && sbi_emulate_csr_write(csr_num, hartid, regs->mstatus, + if (do_write && sbi_emulate_csr_write(csr_num, hartid, regs, scratch, new_csr_val)) return truly_illegal_insn(insn, hartid, mcause, regs, scratch); |