tcg/ia64: fix prologue/epilogue
Prologue and epilogue code has been broken in cea5f9a28.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
			
			
This commit is contained in:
		
							parent
							
								
									9716ef3b1b
								
							
						
					
					
						commit
						18d445b443
					
				| 
						 | 
					@ -107,7 +107,7 @@ enum {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const int tcg_target_reg_alloc_order[] = {
 | 
					static const int tcg_target_reg_alloc_order[] = {
 | 
				
			||||||
    TCG_REG_R34,
 | 
					    TCG_REG_R33,
 | 
				
			||||||
    TCG_REG_R35,
 | 
					    TCG_REG_R35,
 | 
				
			||||||
    TCG_REG_R36,
 | 
					    TCG_REG_R36,
 | 
				
			||||||
    TCG_REG_R37,
 | 
					    TCG_REG_R37,
 | 
				
			||||||
| 
						 | 
					@ -2314,13 +2314,13 @@ static void tcg_target_qemu_prologue(TCGContext *s)
 | 
				
			||||||
    s->code_ptr += 16; /* skip GP */
 | 
					    s->code_ptr += 16; /* skip GP */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* prologue */
 | 
					    /* prologue */
 | 
				
			||||||
    tcg_out_bundle(s, mII,
 | 
					    tcg_out_bundle(s, miI,
 | 
				
			||||||
                   tcg_opc_m34(TCG_REG_P0, OPC_ALLOC_M34,
 | 
					                   tcg_opc_m34(TCG_REG_P0, OPC_ALLOC_M34,
 | 
				
			||||||
                               TCG_REG_R33, 32, 24, 0),
 | 
					                               TCG_REG_R34, 32, 24, 0),
 | 
				
			||||||
 | 
					                   tcg_opc_a4 (TCG_REG_P0, OPC_ADDS_A4,
 | 
				
			||||||
 | 
					                               TCG_AREG0, 0, TCG_REG_R32),
 | 
				
			||||||
                   tcg_opc_i21(TCG_REG_P0, OPC_MOV_I21,
 | 
					                   tcg_opc_i21(TCG_REG_P0, OPC_MOV_I21,
 | 
				
			||||||
                               TCG_REG_B6, TCG_REG_R33, 0),
 | 
					                               TCG_REG_B6, TCG_REG_R33, 0));
 | 
				
			||||||
                   tcg_opc_i22(TCG_REG_P0, OPC_MOV_I22,
 | 
					 | 
				
			||||||
                               TCG_REG_R32, TCG_REG_B0));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* ??? If GUEST_BASE < 0x200000, we could load the register via
 | 
					    /* ??? If GUEST_BASE < 0x200000, we could load the register via
 | 
				
			||||||
       an ADDL in the M slot of the next bundle.  */
 | 
					       an ADDL in the M slot of the next bundle.  */
 | 
				
			||||||
| 
						 | 
					@ -2334,10 +2334,10 @@ static void tcg_target_qemu_prologue(TCGContext *s)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tcg_out_bundle(s, miB,
 | 
					    tcg_out_bundle(s, miB,
 | 
				
			||||||
                   tcg_opc_a4 (TCG_REG_P0, OPC_ADDS_A4,
 | 
					 | 
				
			||||||
                               TCG_AREG0, 0, TCG_REG_R32),
 | 
					 | 
				
			||||||
                   tcg_opc_a4 (TCG_REG_P0, OPC_ADDS_A4,
 | 
					                   tcg_opc_a4 (TCG_REG_P0, OPC_ADDS_A4,
 | 
				
			||||||
                               TCG_REG_R12, -frame_size, TCG_REG_R12),
 | 
					                               TCG_REG_R12, -frame_size, TCG_REG_R12),
 | 
				
			||||||
 | 
					                   tcg_opc_i22(TCG_REG_P0, OPC_MOV_I22,
 | 
				
			||||||
 | 
					                               TCG_REG_R32, TCG_REG_B0),
 | 
				
			||||||
                   tcg_opc_b4 (TCG_REG_P0, OPC_BR_SPTK_MANY_B4, TCG_REG_B6));
 | 
					                   tcg_opc_b4 (TCG_REG_P0, OPC_BR_SPTK_MANY_B4, TCG_REG_B6));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* epilogue */
 | 
					    /* epilogue */
 | 
				
			||||||
| 
						 | 
					@ -2351,7 +2351,7 @@ static void tcg_target_qemu_prologue(TCGContext *s)
 | 
				
			||||||
    tcg_out_bundle(s, miB,
 | 
					    tcg_out_bundle(s, miB,
 | 
				
			||||||
                   tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0),
 | 
					                   tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0),
 | 
				
			||||||
                   tcg_opc_i26(TCG_REG_P0, OPC_MOV_I_I26,
 | 
					                   tcg_opc_i26(TCG_REG_P0, OPC_MOV_I_I26,
 | 
				
			||||||
                               TCG_REG_PFS, TCG_REG_R33),
 | 
					                               TCG_REG_PFS, TCG_REG_R34),
 | 
				
			||||||
                   tcg_opc_b4 (TCG_REG_P0, OPC_BR_RET_SPTK_MANY_B4,
 | 
					                   tcg_opc_b4 (TCG_REG_P0, OPC_BR_RET_SPTK_MANY_B4,
 | 
				
			||||||
                               TCG_REG_B0));
 | 
					                               TCG_REG_B0));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2403,7 +2403,7 @@ static void tcg_target_init(TCGContext *s)
 | 
				
			||||||
    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R12);  /* stack pointer */
 | 
					    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R12);  /* stack pointer */
 | 
				
			||||||
    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R13);  /* thread pointer */
 | 
					    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R13);  /* thread pointer */
 | 
				
			||||||
    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R32);  /* return address */
 | 
					    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R32);  /* return address */
 | 
				
			||||||
    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R33);  /* PFS */
 | 
					    tcg_regset_set_reg(s->reserved_regs, TCG_REG_R34);  /* PFS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* The following 3 are not in use, are call-saved, but *not* saved
 | 
					    /* The following 3 are not in use, are call-saved, but *not* saved
 | 
				
			||||||
       by the prologue.  Therefore we cannot use them without modifying
 | 
					       by the prologue.  Therefore we cannot use them without modifying
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue