diff --git a/ipemu/csrc/vbridge_impl.cc b/ipemu/csrc/vbridge_impl.cc index 2c16f377f..b949fbc12 100644 --- a/ipemu/csrc/vbridge_impl.cc +++ b/ipemu/csrc/vbridge_impl.cc @@ -361,6 +361,7 @@ void VBridgeImpl::getCoverage() { return ctx->coveragep()->write(); } std::optional VBridgeImpl::spike_step() { auto state = proc.get_state(); + state->csrmap.at(CSR_MCYCLE)->write(get_t()); auto fetch = proc.get_mmu()->load_insn(state->pc); auto event = create_spike_event(fetch); diff --git a/tests/asm/smoke/smoke.asm b/tests/asm/smoke/smoke.asm index 7c458acf7..57e517f83 100644 --- a/tests/asm/smoke/smoke.asm +++ b/tests/asm/smoke/smoke.asm @@ -27,6 +27,9 @@ loop: addi a2, a2, -1 bnez a2, add_test + # read cycles + csrr t0, mcycle + ret will_not_be_executed: