Commit c9e53a4c authored by Richard Henderson's avatar Richard Henderson Committed by Aurelien Jarno
Browse files

tcg-arm: Use movi32 in exit_tb



Avoid the mini constant pool for armv7, and avoid replicating
the test for pre-v7.

Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
Signed-off-by: default avatarAurelien Jarno <aurelien@aurel32.net>
parent 8ddaeb1b
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -1611,18 +1611,16 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,

    switch (opc) {
    case INDEX_op_exit_tb:
        {
        if (use_armv7_instructions || check_fit_imm(args[0])) {
            tcg_out_movi32(s, COND_AL, TCG_REG_R0, args[0]);
            tcg_out_goto(s, COND_AL, (tcg_target_ulong) tb_ret_addr);
        } else {
            uint8_t *ld_ptr = s->code_ptr;
            if (args[0] >> 8)
            tcg_out_ld32_12(s, COND_AL, TCG_REG_R0, TCG_REG_PC, 0);
            else
                tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R0, 0, args[0]);
            tcg_out_goto(s, COND_AL, (tcg_target_ulong) tb_ret_addr);
            if (args[0] >> 8) {
            *ld_ptr = (uint8_t) (s->code_ptr - ld_ptr) - 8;
            tcg_out32(s, args[0]);
        }
        }
        break;
    case INDEX_op_goto_tb:
        if (s->tb_jmp_offset) {