From fdb7abec067db7de3d0f800d6f47a1d541adbdbc Mon Sep 17 00:00:00 2001 From: harshinisrinath Date: Sun, 20 Aug 2023 15:40:02 -0700 Subject: [PATCH 1/2] tried to improve testing of csri in privileged module --- testbench/tests.vh | 2 +- tests/coverage/priv.S | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/testbench/tests.vh b/testbench/tests.vh index 116d39424..06c7e5f62 100644 --- a/testbench/tests.vh +++ b/testbench/tests.vh @@ -44,10 +44,10 @@ string tvpaths[] = '{ string coverage64gc[] = '{ `COVERAGE, + "priv", "ieu", "ebu", "csrwrites", - "priv", "ifu", "fpu", "lsu", diff --git a/tests/coverage/priv.S b/tests/coverage/priv.S index 0dff00f37..a8eacb9cc 100644 --- a/tests/coverage/priv.S +++ b/tests/coverage/priv.S @@ -59,11 +59,23 @@ sretdone: # 1st is when MENVCFG_STCE is cleared li a0, 3 ecall # starts in M-mode + li t1, -3 + csrw stimecmp, t1 # sets stimecmp to large value to prevent it from interrupting immediately + li t0, 2 + csrs mstatus, t0 # enables sie + li t0, 32 + csrs sie, t0 # enables sie.stie csrw menvcfg, x0 li a0, 1 ecall # enter S-mode csrw stimecmp, zero li a0, 3 + ecall # in M-mode + li t0, 32 + csrs sip, t0 + li a0, 1 + ecall # in S-mode and expects stimer interrupt to occur + li a0, 3 ecall # return to M-mode csrsi mcounteren, 2 # mcounteren_tm = 1 li a0, 1 From 3d3d15077bb542a1d06cf32887e7e88c8515ae07 Mon Sep 17 00:00:00 2001 From: harshinisrinath Date: Sun, 20 Aug 2023 15:42:27 -0700 Subject: [PATCH 2/2] cleared stimer interrupt --- tests/coverage/WALLY-init-lib.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/coverage/WALLY-init-lib.h b/tests/coverage/WALLY-init-lib.h index ec179a0dd..b0f5a9654 100644 --- a/tests/coverage/WALLY-init-lib.h +++ b/tests/coverage/WALLY-init-lib.h @@ -64,8 +64,11 @@ trap_handler: interrupt: # must be a timer interrupt li t0, -1 # set mtimecmp to biggest number so it doesnt interrupt again - li t1, 0x02004000 # MTIMECMP in CLINT - sd t0, 0(t1) + li t1, 0x02004000 # MTIMECMP in CLIN + sd t0, 0(t1) + csrw stimecmp, t0 # sets stimecmp to big number so it doesnt interrupt + li t0, 32 + csrc sip, t0 # clears stimer interrupt j trap_return # clean up and return exception: