projects
/
riscv-isa-sim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
dfa7a56
)
Enforce 2-byte alignment of mepc/sepc/dpc
author
Andrew Waterman
<andrew@sifive.com>
Thu, 22 Feb 2018 00:09:31 +0000
(16:09 -0800)
committer
Andrew Waterman
<aswaterman@gmail.com>
Sat, 3 Mar 2018 19:47:54 +0000
(13:47 -0600)
riscv/processor.cc
patch
|
blob
|
history
diff --git
a/riscv/processor.cc
b/riscv/processor.cc
index 8cca49030e16ac878bcbd23e08ad3e0848a94f72..943951b322def34cc8bd079d2ec74e704a419b13 100644
(file)
--- a/
riscv/processor.cc
+++ b/
riscv/processor.cc
@@
-435,12
+435,12
@@
void processor_t::set_csr(int which, reg_t val)
state.satp = val & (SATP64_PPN | SATP64_MODE);
break;
}
state.satp = val & (SATP64_PPN | SATP64_MODE);
break;
}
- case CSR_SEPC: state.sepc = val; break;
+ case CSR_SEPC: state.sepc = val
& ~(reg_t)1
; break;
case CSR_STVEC: state.stvec = val >> 2 << 2; break;
case CSR_SSCRATCH: state.sscratch = val; break;
case CSR_SCAUSE: state.scause = val; break;
case CSR_STVAL: state.stval = val; break;
case CSR_STVEC: state.stvec = val >> 2 << 2; break;
case CSR_SSCRATCH: state.sscratch = val; break;
case CSR_SCAUSE: state.scause = val; break;
case CSR_STVAL: state.stval = val; break;
- case CSR_MEPC: state.mepc = val; break;
+ case CSR_MEPC: state.mepc = val
& ~(reg_t)1
; break;
case CSR_MTVEC: state.mtvec = val & ~(reg_t)2; break;
case CSR_MSCRATCH: state.mscratch = val; break;
case CSR_MCAUSE: state.mcause = val; break;
case CSR_MTVEC: state.mtvec = val & ~(reg_t)2; break;
case CSR_MSCRATCH: state.mscratch = val; break;
case CSR_MCAUSE: state.mcause = val; break;
@@
-510,7
+510,7
@@
void processor_t::set_csr(int which, reg_t val)
state.dcsr.halt = get_field(val, DCSR_HALT);
break;
case CSR_DPC:
state.dcsr.halt = get_field(val, DCSR_HALT);
break;
case CSR_DPC:
- state.dpc = val;
+ state.dpc = val
& ~(reg_t)1
;
break;
case CSR_DSCRATCH:
state.dscratch = val;
break;
case CSR_DSCRATCH:
state.dscratch = val;