From 502f3e8df9f4c44e79bb1b6fd8c2ec8e42c8de94 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Fri, 14 Mar 2025 12:42:11 +0100 Subject: [PATCH] fixes htif behavior and instrumentation interface --- src/iss/arch/riscv_hart_common.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/iss/arch/riscv_hart_common.h b/src/iss/arch/riscv_hart_common.h index 40ec5d5..59c034a 100644 --- a/src/iss/arch/riscv_hart_common.h +++ b/src/iss/arch/riscv_hart_common.h @@ -728,9 +728,9 @@ template struct riscv_hart_co iss::status execute_htif(uint8_t const* data) { reg_t cur_data = *reinterpret_cast(data); // Extract Device (bits 63:56) - uint8_t device = traits::XLEN == 32 ? *reinterpret_cast(data) >> 24 : (cur_data >> 56) & 0xFF; + uint8_t device = traits::XLEN == 32 ? 0 : (cur_data >> 56) & 0xFF; // Extract Command (bits 55:48) - uint8_t command = traits::XLEN == 32 ? *reinterpret_cast(data) >> 16 : (cur_data >> 48) & 0xFF; + uint8_t command = traits::XLEN == 32 ? 0 : (cur_data >> 48) & 0xFF; // Extract payload (bits 47:0) uint64_t payload_addr = cur_data & 0xFFFFFFFFFFFFULL; if(payload_addr & 1) { @@ -828,6 +828,8 @@ protected: friend struct riscv_instrumentation_if; riscv_instrumentation_if instr_if; + instrumentation_if* get_instrumentation_if() override { return &instr_if; }; + using csr_type = util::sparse_array::reg_t, 1ULL << 12, 12>; using csr_page_type = typename csr_type::page_type; csr_type csr;