blob: d286a67cab3d3bfd264cb6af33263f711f105fd8 (
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;
reg_list regs;
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 && regs[`R15]);
assign decode.regs = regs;
assign s = insn `FIELD_LDST_MULT_S;
assign l = insn `FIELD_LDST_LD;
assign regs = insn `FIELD_LDST_MULT_LIST;
assign restore_spsr = s && l && regs[`R15];
endmodule
|