blob: 24e8e5bfcd7bab91e73a456e5ac3f055b99f5fca (
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
31
32
|
`include "core/isa.sv"
`include "core/uarch.sv"
module core_decode_ldst_multiple
(
input word insn,
output ldst_decode decode,
output logic restore_spsr
);
logic s, l;
logic[15:0] reg_list;
assign decode.rn = insn `FIELD_LDST_MULT_RN;
assign decode.size = LDST_WORD;
assign decode.load = l;
assign decode.increment = insn `FIELD_LDST_MULT_U;
assign decode.writeback = insn `FIELD_LDST_MULT_W;
assign decode.sign_extend = 0;
assign decode.pre_indexed = insn `FIELD_LDST_MULT_P;
assign decode.unprivileged = 0;
assign decode.user_regs = s && (!l || !reg_list[`R15]);
assign decode.reg_list = reg_list;
assign s = insn `FIELD_LDST_MULT_S;
assign l = insn `FIELD_LDST_LD;
assign reg_list = insn `FIELD_LDST_MULT_LIST;
assign restore_spsr = s && l && reg_list[`R15];
endmodule
|