Fix incorrect register order within stack frame for push/pop

This commit is contained in:
Luke Wren 2023-03-20 06:32:20 +00:00
parent 8b73b1b927
commit 7607dacfc4
1 changed files with 5 additions and 5 deletions

View File

@ -125,15 +125,15 @@ wire [3:0] zcmp_rlist = instr_in[7:4];
wire [3:0] zcmp_n_regs = zcmp_rlist == 4'hf ? 4'hd : zcmp_rlist - 4'h3;
wire [11:0] zcmp_stack_adj_base =
zcmp_rlist[3] == 1'b0 ? 12'h010 :
zcmp_rlist[3:2] == 2'h2 ? 12'h020 :
zcmp_rlist[3:0] == 4'hf ? 12'h040 : 12'h030;
zcmp_rlist == 4'hf ? 12'h040 :
zcmp_rlist >= 4'hc ? 12'h030 :
zcmp_rlist >= 4'h8 ? 12'h020 : 12'h010;
wire [11:0] zcmp_stack_adj = zcmp_stack_adj_base + {6'h00, instr_in[3:2], 4'h0};
// Note we perform all load/stores before moving the stack pointer.
wire [11:0] zcmp_stack_lw_offset = -{6'h00, {uop_ctr + 4'h1}, 2'h0} + zcmp_stack_adj;
wire [11:0] zcmp_stack_sw_offset = -{6'h00, {uop_ctr + 4'h1}, 2'h0};
wire [11:0] zcmp_stack_lw_offset = -{6'h00, {zcmp_n_regs - uop_ctr}, 2'h0} + zcmp_stack_adj;
wire [11:0] zcmp_stack_sw_offset = -{6'h00, {zcmp_n_regs - uop_ctr}, 2'h0};
wire [4:0] zcmp_ls_reg =
uop_ctr == 4'h0 ? 5'd01 : // ra