begin
read_0 = insn[19:16]; /* Rn */
read_1 = insn[3:0]; /* Rm */
+ read_2 = insn[15:12];
op0_out = regs0;
if(insn[25]) begin
op1_out = shift_res;
carry_out = shift_cflag_out;
end
+ op2_out = regs2;
end
`DECODE_LDMSTM: /* Block data transfer */
begin
input [31:0] insn,
input [31:0] op0,
input [31:0] op1,
+ input [31:0] op2,
input write_reg,
input [3:0] write_num,
input [31:0] write_data,
align_rddata = insn[22] ? {24'b0, align_s2[7:0]} : align_s2;
if(!insn[20]) begin
- st_read = insn[15:12];
- wr_data = insn[22] ? {4{st_data[7:0]}} : st_data; /* XXX need to actually store just a byte */
+ wr_data = insn[22] ? {4{op2[7:0]}} : op2; /* XXX need to actually store just a byte */
end
else if(!inc_next) begin
next_write_reg = 1'b1;