From 50324729013612e733ad8c25d36c577ef4939c50 Mon Sep 17 00:00:00 2001 From: linzhida Date: Thu, 12 Dec 2024 17:50:40 +0800 Subject: [PATCH] feat(difftest): sync FS/VS dirty from DUT to REF. --- difftest/difftest.cc | 8 ++++++++ difftest/difftest.h | 1 + 2 files changed, 9 insertions(+) diff --git a/difftest/difftest.cc b/difftest/difftest.cc index 0e44cae59..20ed5d26c 100644 --- a/difftest/difftest.cc +++ b/difftest/difftest.cc @@ -400,6 +400,10 @@ bool DifftestRef::raise_critical_error() { return state->critical_error; } +void DifftestRef::dirty_fsvs(uint64_t dirties) { + state->sstatus->dirty(dirties); +} + void DifftestRef::update_mip(void *non_reg_interrupt_pending) { auto n = (DifftestNonRegInterruptPending *) non_reg_interrupt_pending; state->mip->backdoor_write_with_mask(MIP_MTIP, n->platform_irp_mtip ? MIP_MTIP : 0); @@ -574,6 +578,10 @@ void difftest_raise_intr(uint64_t NO) { ref->raise_intr(NO); } +void difftest_dirty_fsvs(uint64_t dirties) { + ref->dirty_fsvs(dirties); +} + bool difftest_raise_critical_error() { return ref->raise_critical_error(); } diff --git a/difftest/difftest.h b/difftest/difftest.h index 22ec17493..15d3eea11 100644 --- a/difftest/difftest.h +++ b/difftest/difftest.h @@ -143,6 +143,7 @@ class DifftestRef { int store_commit(uint64_t *addr, uint64_t *data, uint8_t *mask); void raise_intr(uint64_t no); bool raise_critical_error(); + void dirty_fsvs(uint64_t dirties); void display(); void update_mip(void *non_reg_interrupt_pending); void update_dynamic_config(void* config) {