Browse Source

Mask medeleg correctly

pull/151/head
Andrew Waterman 9 years ago
parent
commit
95fafa8f05
  1. 10
      riscv/processor.cc

10
riscv/processor.cc

@ -360,9 +360,13 @@ void processor_t::set_csr(int which, reg_t val)
state.mideleg = (state.mideleg & ~delegable_ints) | (val & delegable_ints);
break;
case CSR_MEDELEG: {
reg_t mask = CAUSE_MISALIGNED_FETCH | CAUSE_BREAKPOINT
| CAUSE_USER_ECALL | CAUSE_FETCH_PAGE_FAULT
| CAUSE_LOAD_PAGE_FAULT | CAUSE_STORE_PAGE_FAULT;
reg_t mask =
(1 << CAUSE_MISALIGNED_FETCH) |
(1 << CAUSE_BREAKPOINT) |
(1 << CAUSE_USER_ECALL) |
(1 << CAUSE_FETCH_PAGE_FAULT) |
(1 << CAUSE_LOAD_PAGE_FAULT) |
(1 << CAUSE_STORE_PAGE_FAULT);
state.medeleg = (state.medeleg & ~mask) | (val & mask);
break;
}

Loading…
Cancel
Save