summaryrefslogtreecommitdiff
path: root/rtl/core/psr.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-12-16 22:20:01 -0600
committerAlejandro Soto <alejandro@34project.org>2022-12-16 22:20:26 -0600
commit9ebb4b712e1d6c97a999652d0b9105847eabd134 (patch)
tree0526b6d473ccb1652033613477ad1e8cae034c24 /rtl/core/psr.sv
parent17366ce06afe0a611ba25a47523c81b01c64961c (diff)
Implement mode privilege checks in MMU
Diffstat (limited to 'rtl/core/psr.sv')
-rw-r--r--rtl/core/psr.sv4
1 files changed, 3 insertions, 1 deletions
diff --git a/rtl/core/psr.sv b/rtl/core/psr.sv
index c1fe0fd..41982c0 100644
--- a/rtl/core/psr.sv
+++ b/rtl/core/psr.sv
@@ -17,7 +17,8 @@ module core_psr
output psr_intmask mask,
output psr_mode mode,
output word cpsr_rd,
- spsr_rd
+ spsr_rd,
+ output logic privileged
);
typedef struct packed
@@ -54,6 +55,7 @@ module core_psr
assign wr_word = psr_wr;
assign cpsr_rd = cpsr_word;
assign spsr_rd = spsr_word;
+ assign privileged = |mode[3:0]; // Not user
assign {wr_state.flags, wr_state.mask, wr_state.mode} = {wr_word.nzcv, wr_word.if_, wr_word.m};
`ifdef VERILATOR