Browse Source

Report triggers on CBOs using effective address, not block address

pull/2297/head
Andrew Waterman 1 day ago
parent
commit
1494468abe
Failed to extract signature
  1. 5
      riscv/mmu.h

5
riscv/mmu.h

@ -228,7 +228,7 @@ public:
reg_t transformed_addr = access_info.transformed_vaddr; reg_t transformed_addr = access_info.transformed_vaddr;
auto base = transformed_addr & ~(blocksz - 1); auto base = transformed_addr & ~(blocksz - 1);
check_triggers(triggers::OPERATION_STORE, base, false, blocksz); check_triggers(triggers::OPERATION_STORE, transformed_addr, false, blocksz);
for (size_t offset = 0; offset < blocksz; offset += 1) for (size_t offset = 0; offset < blocksz; offset += 1)
store<uint8_t>(base + offset, 0); store<uint8_t>(base + offset, 0);
} }
@ -237,8 +237,7 @@ public:
auto access_info = generate_access_info(addr, LOAD, {.clean_inval = true}); auto access_info = generate_access_info(addr, LOAD, {.clean_inval = true});
reg_t transformed_addr = access_info.transformed_vaddr; reg_t transformed_addr = access_info.transformed_vaddr;
auto base = transformed_addr & ~(blocksz - 1); check_triggers(triggers::OPERATION_STORE, transformed_addr, false, blocksz);
check_triggers(triggers::OPERATION_STORE, base, false, blocksz);
convert_load_traps_to_store_traps({ convert_load_traps_to_store_traps({
const reg_t paddr = translate(access_info, 1); const reg_t paddr = translate(access_info, 1);
if (sim->reservable(paddr)) { if (sim->reservable(paddr)) {

Loading…
Cancel
Save