diff --git a/include/memory/paddr.h b/include/memory/paddr.h index 079775b44..d29d0362f 100644 --- a/include/memory/paddr.h +++ b/include/memory/paddr.h @@ -140,14 +140,18 @@ static inline word_t golden_pmem_read(paddr_t addr, int len, int type, int mode, #ifdef CONFIG_USE_SPARSEMM return sparse_mem_wread((void *)golden_pmem, addr, len) #else + + word_t tmp = 0; void *p = &golden_pmem[addr - 0x80000000]; switch (len) { - case 1: return *(uint8_t *)p; - case 2: return *(uint16_t *)p; - case 4: return *(uint32_t *)p; - case 8: return *(uint64_t *)p; - default: assert(0); + case 1: tmp = *(uint8_t *)p; break; + case 2: tmp = *(uint16_t *)p; break; + case 4: tmp = *(uint32_t *)p; break; + case 8: tmp = *(uint64_t *)p; break; + default: tmp = 0; assert(0); break; } + Logm("GM read: addr: 0x%lx, data: 0x%lx", addr, tmp); + return tmp; #endif } #endif diff --git a/src/isa/riscv64/instr/rvv/vldst_impl.c b/src/isa/riscv64/instr/rvv/vldst_impl.c index d40604afe..b770a991d 100644 --- a/src/isa/riscv64/instr/rvv/vldst_impl.c +++ b/src/isa/riscv64/instr/rvv/vldst_impl.c @@ -248,7 +248,8 @@ void vld(Decode *s, int mode, int mmu_mode) { vl_val = mode == MODE_MASK ? (vl->val + 7) / 8 : vl->val; base_addr = tmp_reg[0]; vd = id_dest->reg; - if(base_addr == 0xffffaf80048c6000 && !debug_flag) { + bool tri = (base_addr >= 0xffffaf8003ee2000) && (base_addr <= 0xffffaf8003ee2100); + if(tri && !debug_flag) { printf("[NEMU] test base addr: 0x%lx\n", base_addr); debug_flag = true; } diff --git a/src/isa/riscv64/system/mmu.c b/src/isa/riscv64/system/mmu.c index 0c7ab57a8..9b783deea 100644 --- a/src/isa/riscv64/system/mmu.c +++ b/src/isa/riscv64/system/mmu.c @@ -726,6 +726,7 @@ void isa_amo_misalign_data_addr_check(vaddr_t vaddr, int len, int type) { paddr_t isa_mmu_translate(vaddr_t vaddr, int len, int type) { paddr_t ptw_result = ptw(vaddr, type); + Logm("PTW finish: 0x%lx", ptw_result); #ifdef FORCE_RAISE_PF #ifdef CONFIG_RVH if(ptw_result != MEM_RET_FAIL && (force_raise_pf(vaddr, type) != MEM_RET_OK || force_raise_gpf(vaddr, type) != MEM_RET_OK)) diff --git a/src/memory/paddr.c b/src/memory/paddr.c index 7af366fe0..f1260ed7a 100644 --- a/src/memory/paddr.c +++ b/src/memory/paddr.c @@ -79,6 +79,7 @@ static inline word_t pmem_read(paddr_t addr, int len) { #ifdef CONFIG_USE_SPARSEMM return sparse_mem_wread(sparse_mm, addr, len); #else + Logm("pmem read: " FMT_PADDR, addr); return host_read(guest_to_host(addr), len); #endif }