Index: sys/riscv/riscv/timer.c =================================================================== --- sys/riscv/riscv/timer.c +++ sys/riscv/riscv/timer.c @@ -143,7 +143,10 @@ sc = (struct riscv_timer_softc *)arg; - csr_clear(sip, SIP_STIP); + if (has_sstc) + csr_write(stimecmp, -1UL); + else + csr_clear(sip, SIP_STIP); if (sc->et.et_active) sc->et.et_event_cb(&sc->et, sc->et.et_arg);