blob: 30bb3206659a505c62f683f743abde8e75787c82 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
`include "core/uarch.sv"
module core_psr
(
input logic clk,
update_flags,
alu_v_valid,
input psr_flags alu_flags,
output psr_flags flags
);
psr_flags cpsr_flags;
always_comb begin
flags = cpsr_flags;
if(update_flags) begin
flags = alu_flags;
if(~alu_v_valid)
flags.v = cpsr_flags.v;
end
end
always_ff @(posedge clk)
cpsr_flags <= flags;
initial cpsr_flags = 4'b0000;
endmodule
|