Browse Source

don't set badvaddr for instruction access faults

eos18-bringup
Andrew Waterman 15 years ago
parent
commit
ace6db857d
  1. 7
      riscv/mmu.cc

7
riscv/mmu.cc

@ -42,10 +42,11 @@ void* mmu_t::refill(reg_t addr, bool store, bool fetch)
reg_t perm = (fetch ? PTE_UX : store ? PTE_UW : PTE_UR) | PTE_E;
if(unlikely((pte_perm & perm) != perm))
{
if (fetch)
throw trap_instruction_access_fault;
badvaddr = addr;
throw store ? trap_store_access_fault
: fetch ? trap_instruction_access_fault
: trap_load_access_fault;
throw store ? trap_store_access_fault : trap_load_access_fault;
}
tlb_load_tag[idx] = (pte_perm & PTE_UR) ? expected_tag : -1;

Loading…
Cancel
Save