mirror of
https://github.com/openhwgroup/cva6.git
synced 2025-04-20 12:17:19 -04:00
csr_file: Fix propper setting of sd
flag
This commit is contained in:
parent
3d09828552
commit
93e27812c7
3 changed files with 4 additions and 6 deletions
|
@ -40,7 +40,7 @@ package riscv;
|
|||
} xs_t;
|
||||
|
||||
typedef struct packed {
|
||||
logic sd; // signal dirty - read-only - hardwired zero
|
||||
logic sd; // signal dirty state - read-only
|
||||
logic [62:36] wpri4; // writes preserved reads ignored
|
||||
xlen_t sxl; // variable supervisor mode xlen - hardwired to zero
|
||||
xlen_t uxl; // variable user mode xlen - hardwired to zero
|
||||
|
|
|
@ -77,7 +77,7 @@ module commit_stage #(
|
|||
always_comb begin : dirty_fp_state
|
||||
dirty_fp_state_o = 1'b0;
|
||||
for (int i = 0; i < NR_COMMIT_PORTS; i++) begin
|
||||
dirty_fp_state_o |= commit_ack_o[i] & (commit_instr_i[i].fu inside {FPU, FPU_VEC} || is_rd_fpr(commit_instr_i[0].op));
|
||||
dirty_fp_state_o |= commit_ack_o[i] & (commit_instr_i[i].fu inside {FPU, FPU_VEC} || is_rd_fpr(commit_instr_i[i].op));
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -423,8 +423,6 @@ module csr_regfile #(
|
|||
if (!FP_PRESENT) begin
|
||||
mstatus_d.fs = riscv::Off;
|
||||
end
|
||||
// hardwired extension registers
|
||||
mstatus_d.sd = (&mstatus_q.xs) | (&mstatus_q.fs);
|
||||
// this instruction has side-effects
|
||||
flush_o = 1'b1;
|
||||
end
|
||||
|
@ -466,8 +464,6 @@ module csr_regfile #(
|
|||
|
||||
riscv::CSR_MSTATUS: begin
|
||||
mstatus_d = csr_wdata;
|
||||
// hardwired zero registers
|
||||
mstatus_d.sd = (&mstatus_q.xs) | (&mstatus_q.fs);
|
||||
mstatus_d.xs = riscv::Off;
|
||||
if (!FP_PRESENT) begin
|
||||
mstatus_d.fs = riscv::Off;
|
||||
|
@ -567,6 +563,8 @@ module csr_regfile #(
|
|||
if (FP_PRESENT && (dirty_fp_state_csr || dirty_fp_state_i)) begin
|
||||
mstatus_d.fs = riscv::Dirty;
|
||||
end
|
||||
// hardwired extension registers
|
||||
mstatus_d.sd = (mstatus_q.xs == riscv::Dirty) | (mstatus_q.fs == riscv::Dirty);
|
||||
|
||||
// write the floating point status register
|
||||
if (csr_write_fflags_i) begin
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue