From 497e3d830d91ca43d297708a486d84aa41ddee85 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Sat, 27 Dec 2025 00:21:45 -0800 Subject: [PATCH] DRY in logging code --- riscv/mmu.cc | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/riscv/mmu.cc b/riscv/mmu.cc index 81c2ab79..050550f9 100644 --- a/riscv/mmu.cc +++ b/riscv/mmu.cc @@ -427,16 +427,11 @@ void mmu_t::store_slow_path(reg_t original_addr, std::size_t len, } if (actually_store && proc && unlikely(proc->get_log_commits_enabled())) { - // amocas.q sends len == 16, reg_from_bytes only supports up to 8 - // bytes per conversion. Make multiple entries in the log - reg_t offset = 0; - const auto reg_size = sizeof(reg_t); - while (unlikely(len > reg_size)) { - proc->state.log_mem_write.push_back(std::make_tuple(original_addr + offset, reg_from_bytes(reg_size, bytes + offset), reg_size)); - offset += reg_size; - len -= reg_size; + for (size_t offset = 0; offset < len; offset += sizeof(reg_t)) { + auto this_size = std::min(len - offset, sizeof(reg_t)); + auto this_data = reg_from_bytes(this_size, bytes + offset); + proc->state.log_mem_write.push_back(std::make_tuple(original_addr + offset, this_data, this_size)); } - proc->state.log_mem_write.push_back(std::make_tuple(original_addr + offset, reg_from_bytes(len, bytes + offset), len)); } }