Revision a1fc6246 target-mips/translate.c

b/target-mips/translate.c
11061 11061
        }
11062 11062
        break;
11063 11063
#endif
11064
    case 0x2a:
11065
        switch (minor & 3) {
11066
        case MADD_ACC:
11067
            gen_muldiv(ctx, OPC_MADD, (ctx->opcode >> 14) & 3, rs, rt);
11068
            break;
11069
        case MADDU_ACC:
11070
            gen_muldiv(ctx, OPC_MADDU, (ctx->opcode >> 14) & 3, rs, rt);
11071
            break;
11072
        case MSUB_ACC:
11073
            gen_muldiv(ctx, OPC_MSUB, (ctx->opcode >> 14) & 3, rs, rt);
11074
            break;
11075
        case MSUBU_ACC:
11076
            gen_muldiv(ctx, OPC_MSUBU, (ctx->opcode >> 14) & 3, rs, rt);
11077
            break;
11078
        default:
11079
            goto pool32axf_invalid;
11080
        }
11081
        break;
11082
    case 0x32:
11083
        switch (minor & 3) {
11084
        case MULT_ACC:
11085
            gen_muldiv(ctx, OPC_MULT, (ctx->opcode >> 14) & 3, rs, rt);
11086
            break;
11087
        case MULTU_ACC:
11088
            gen_muldiv(ctx, OPC_MULTU, (ctx->opcode >> 14) & 3, rs, rt);
11089
            break;
11090
        default:
11091
            goto pool32axf_invalid;
11092
        }
11093
        break;
11064 11094
    case 0x2c:
11065 11095
        switch (minor) {
11066 11096
        case SEB:
......
11113 11143
            mips32_op = OPC_MSUBU;
11114 11144
        do_mul:
11115 11145
            check_insn(ctx, ISA_MIPS32);
11116
            gen_muldiv(ctx, mips32_op, (ctx->opcode >> 14) & 3, rs, rt);
11146
            gen_muldiv(ctx, mips32_op, 0, rs, rt);
11117 11147
            break;
11118 11148
        default:
11119 11149
            goto pool32axf_invalid;
......
11247 11277
            goto pool32axf_invalid;
11248 11278
        }
11249 11279
        break;
11250
    case 0x35:
11280
    case 0x01:
11251 11281
        switch (minor & 3) {
11252
        case MFHI32:
11282
        case MFHI_ACC:
11253 11283
            gen_HILO(ctx, OPC_MFHI, minor >> 2, rs);
11254 11284
            break;
11255
        case MFLO32:
11285
        case MFLO_ACC:
11256 11286
            gen_HILO(ctx, OPC_MFLO, minor >> 2, rs);
11257 11287
            break;
11258
        case MTHI32:
11288
        case MTHI_ACC:
11259 11289
            gen_HILO(ctx, OPC_MTHI, minor >> 2, rs);
11260 11290
            break;
11261
        case MTLO32:
11291
        case MTLO_ACC:
11262 11292
            gen_HILO(ctx, OPC_MTLO, minor >> 2, rs);
11263 11293
            break;
11264 11294
        default:
11265 11295
            goto pool32axf_invalid;
11266 11296
        }
11267 11297
        break;
11298
    case 0x35:
11299
        switch (minor) {
11300
        case MFHI32:
11301
            gen_HILO(ctx, OPC_MFHI, 0, rs);
11302
            break;
11303
        case MFLO32:
11304
            gen_HILO(ctx, OPC_MFLO, 0, rs);
11305
            break;
11306
        case MTHI32:
11307
            gen_HILO(ctx, OPC_MTHI, 0, rs);
11308
            break;
11309
        case MTLO32:
11310
            gen_HILO(ctx, OPC_MTLO, 0, rs);
11311
            break;
11312
        default:
11313
            goto pool32axf_invalid;
11314
        }
11315
        break;
11268 11316
    default:
11269 11317
    pool32axf_invalid:
11270 11318
        MIPS_INVAL("pool32axf");

Also available in: Unified diff