aboutsummaryrefslogtreecommitdiff
path: root/machine/emulation.c
diff options
context:
space:
mode:
Diffstat (limited to 'machine/emulation.c')
-rw-r--r--machine/emulation.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/machine/emulation.c b/machine/emulation.c
index dad86f9..70169fd 100644
--- a/machine/emulation.c
+++ b/machine/emulation.c
@@ -91,7 +91,7 @@ static inline int emulate_read_csr(int num, uintptr_t mstatus, uintptr_t* result
switch (num)
{
case CSR_TIME:
- *result = read_csr(mtime) + HLS()->utime_delta;
+ *result = *mtime + HLS()->utime_delta;
return 0;
case CSR_CYCLE:
*result = read_csr(mcycle) + HLS()->ucycle_delta;
@@ -100,7 +100,7 @@ static inline int emulate_read_csr(int num, uintptr_t mstatus, uintptr_t* result
*result = read_csr(minstret) + HLS()->uinstret_delta;
return 0;
case CSR_STIME:
- *result = read_csr(mtime) + HLS()->stime_delta;
+ *result = *mtime + HLS()->stime_delta;
return 0;
case CSR_SCYCLE:
*result = read_csr(mcycle) + HLS()->scycle_delta;
@@ -110,8 +110,7 @@ static inline int emulate_read_csr(int num, uintptr_t mstatus, uintptr_t* result
return 0;
#ifdef __riscv32
case CSR_TIMEH:
- *result = (((uint64_t)read_csr(mtimeh) << 32) + read_csr(mtime)
- + HLS()->stime_delta) >> 32;
+ *result = (*mtime + HLS()->stime_delta) >> 32;
return 0;
case CSR_CYCLEH:
*result = (((uint64_t)read_csr(mcycleh) << 32) + read_csr(mcycle)