projects
/
riscv-isa-sim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement Hauser misa.C misalignment proposal (#187)
[riscv-isa-sim.git]
/
riscv
/
processor.h
diff --git
a/riscv/processor.h
b/riscv/processor.h
index ace86f963959145e3e8a7227f4fa2e91f0395e71..3e67215b46df9e29493b050c2d59e5cd586507cf 100644
(file)
--- a/
riscv/processor.h
+++ b/
riscv/processor.h
@@
-188,8
+188,11
@@
public:
if (ext >= 'a' && ext <= 'z') ext += 'A' - 'a';
return ext >= 'A' && ext <= 'Z' && ((state.misa >> (ext - 'A')) & 1);
}
if (ext >= 'a' && ext <= 'z') ext += 'A' - 'a';
return ext >= 'A' && ext <= 'Z' && ((state.misa >> (ext - 'A')) & 1);
}
+ reg_t pc_alignment_mask() {
+ return ~(reg_t)(supports_extension('C') ? 0 : 2);
+ }
void check_pc_alignment(reg_t pc) {
void check_pc_alignment(reg_t pc) {
- if (unlikely(pc &
2) && !supports_extension('C'
))
+ if (unlikely(pc &
~pc_alignment_mask()
))
throw trap_instruction_address_misaligned(pc);
}
reg_t legalize_privilege(reg_t);
throw trap_instruction_address_misaligned(pc);
}
reg_t legalize_privilege(reg_t);