Revision d26968ec

b/target-mips/helper.h
251 251
DEF_HELPER(void, do_wait, (void))
252 252

  
253 253
/* Bitfield operations. */
254
DEF_HELPER(target_ulong, do_ext, (target_ulong t0, target_ulong t1, uint32_t pos, uint32_t size))
254
DEF_HELPER(target_ulong, do_ext, (target_ulong t1, uint32_t pos, uint32_t size))
255 255
DEF_HELPER(target_ulong, do_ins, (target_ulong t0, target_ulong t1, uint32_t pos, uint32_t size))
256
DEF_HELPER(target_ulong, do_wsbh, (target_ulong t0, target_ulong t1))
256
DEF_HELPER(target_ulong, do_wsbh, (target_ulong t1))
257 257
#ifdef TARGET_MIPS64
258
DEF_HELPER(target_ulong, do_dext, (target_ulong t0, target_ulong t1, uint32_t pos, uint32_t size))
258
DEF_HELPER(target_ulong, do_dext, (target_ulong t1, uint32_t pos, uint32_t size))
259 259
DEF_HELPER(target_ulong, do_dins, (target_ulong t0, target_ulong t1, uint32_t pos, uint32_t size))
260
DEF_HELPER(target_ulong, do_dsbh, (target_ulong t0, target_ulong t1))
261
DEF_HELPER(target_ulong, do_dshd, (target_ulong t0, target_ulong t1))
260
DEF_HELPER(target_ulong, do_dsbh, (target_ulong t1))
261
DEF_HELPER(target_ulong, do_dshd, (target_ulong t1))
262 262
#endif
b/target-mips/op_helper.c
1867 1867
}
1868 1868

  
1869 1869
/* Bitfield operations. */
1870
target_ulong do_ext(target_ulong t0, target_ulong t1, uint32_t pos, uint32_t size)
1870
target_ulong do_ext(target_ulong t1, uint32_t pos, uint32_t size)
1871 1871
{
1872 1872
    return (int32_t)((t1 >> pos) & ((size < 32) ? ((1 << size) - 1) : ~0));
1873 1873
}
......
1879 1879
    return (int32_t)((t0 & ~mask) | ((t1 << pos) & mask));
1880 1880
}
1881 1881

  
1882
target_ulong do_wsbh(target_ulong t0, target_ulong t1)
1882
target_ulong do_wsbh(target_ulong t1)
1883 1883
{
1884 1884
    return (int32_t)(((t1 << 8) & ~0x00FF00FF) | ((t1 >> 8) & 0x00FF00FF));
1885 1885
}
1886 1886

  
1887 1887
#if defined(TARGET_MIPS64)
1888
target_ulong do_dext(target_ulong t0, target_ulong t1, uint32_t pos, uint32_t size)
1888
target_ulong do_dext(target_ulong t1, uint32_t pos, uint32_t size)
1889 1889
{
1890 1890
    return (t1 >> pos) & ((size < 64) ? ((1ULL << size) - 1) : ~0ULL);
1891 1891
}
......
1897 1897
    return (t0 & ~mask) | ((t1 << pos) & mask);
1898 1898
}
1899 1899

  
1900
target_ulong do_dsbh(target_ulong t0, target_ulong t1)
1900
target_ulong do_dsbh(target_ulong t1)
1901 1901
{
1902 1902
    return ((t1 << 8) & ~0x00FF00FF00FF00FFULL) | ((t1 >> 8) & 0x00FF00FF00FF00FFULL);
1903 1903
}
1904 1904

  
1905
target_ulong do_dshd(target_ulong t0, target_ulong t1)
1905
target_ulong do_dshd(target_ulong t1)
1906 1906
{
1907 1907
    t1 = ((t1 << 16) & ~0x0000FFFF0000FFFFULL) | ((t1 >> 16) & 0x0000FFFF0000FFFFULL);
1908 1908
    return (t1 << 32) | (t1 >> 32);
b/target-mips/translate.c
464 464
    tcg_temp_free(tmp);
465 465
}
466 466

  
467
static inline void tcg_gen_helper_0_2ii(void *func, TCGv arg1, TCGv arg2, TCGv arg3, TCGv arg4)
467
static inline void tcg_gen_helper_0_1ii(void *func, TCGv arg1, TCGv arg2, TCGv arg3)
468 468
{
469
    TCGv tmp1 = tcg_const_i32(arg3);
469
    TCGv tmp1 = tcg_const_i32(arg2);
470 470
    TCGv tmp2 = tcg_const_i32(arg3);
471 471

  
472
    tcg_gen_helper_0_4(func, arg1, arg2, tmp1, tmp2);
472
    tcg_gen_helper_0_3(func, arg1, tmp1, tmp2);
473 473
    tcg_temp_free(tmp1);
474 474
    tcg_temp_free(tmp2);
475 475
}
......
490 490
    tcg_temp_free(tmp);
491 491
}
492 492

  
493
static inline void tcg_gen_helper_1_1ii(void *func, TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3)
494
{
495
    TCGv tmp1 = tcg_const_i32(arg2);
496
    TCGv tmp2 = tcg_const_i32(arg3);
497

  
498
    tcg_gen_helper_1_3(func, ret, arg1, tmp1, tmp2);
499
    tcg_temp_free(tmp1);
500
    tcg_temp_free(tmp2);
501
}
502

  
493 503
static inline void tcg_gen_helper_1_2i(void *func, TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3)
494 504
{
495 505
    TCGv tmp = tcg_const_i32(arg3);
......
501 511
static inline void tcg_gen_helper_1_2ii(void *func, TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3, TCGv arg4)
502 512
{
503 513
    TCGv tmp1 = tcg_const_i32(arg3);
504
    TCGv tmp2 = tcg_const_i32(arg3);
514
    TCGv tmp2 = tcg_const_i32(arg4);
505 515

  
506 516
    tcg_gen_helper_1_4(func, ret, arg1, arg2, tmp1, tmp2);
507 517
    tcg_temp_free(tmp1);
......
2748 2758
    case OPC_EXT:
2749 2759
        if (lsb + msb > 31)
2750 2760
            goto fail;
2751
        tcg_gen_helper_1_2ii(do_ext, t0, t0, t1, lsb, msb + 1);
2761
        tcg_gen_helper_1_1ii(do_ext, t0, t1, lsb, msb + 1);
2752 2762
        break;
2753 2763
#if defined(TARGET_MIPS64)
2754 2764
    case OPC_DEXTM:
2755 2765
        if (lsb + msb > 63)
2756 2766
            goto fail;
2757
        tcg_gen_helper_1_2ii(do_dext, t0, t0, t1, lsb, msb + 1 + 32);
2767
        tcg_gen_helper_1_1ii(do_dext, t0, t1, lsb, msb + 1 + 32);
2758 2768
        break;
2759 2769
    case OPC_DEXTU:
2760 2770
        if (lsb + msb > 63)
2761 2771
            goto fail;
2762
        tcg_gen_helper_1_2ii(do_dext, t0, t0, t1, lsb + 32, msb + 1);
2772
        tcg_gen_helper_1_1ii(do_dext, t0, t1, lsb + 32, msb + 1);
2763 2773
        break;
2764 2774
    case OPC_DEXT:
2765 2775
        if (lsb + msb > 63)
2766 2776
            goto fail;
2767
        tcg_gen_helper_1_2ii(do_dext, t0, t0, t1, lsb, msb + 1);
2777
        tcg_gen_helper_1_1ii(do_dext, t0, t1, lsb, msb + 1);
2768 2778
        break;
2769 2779
#endif
2770 2780
    case OPC_INS:
......
7388 7398
                switch (op2) {
7389 7399
                case OPC_WSBH:
7390 7400
                    gen_load_gpr(t1, rt);
7391
                    tcg_gen_helper_1_2(do_wsbh, t0, t0, t1);
7401
                    tcg_gen_helper_1_1(do_wsbh, t0, t1);
7392 7402
                    gen_store_gpr(t0, rd);
7393 7403
                    break;
7394 7404
                case OPC_SEB:
......
7490 7500
                switch (op2) {
7491 7501
                case OPC_DSBH:
7492 7502
                    gen_load_gpr(t1, rt);
7493
                    tcg_gen_helper_1_2(do_dsbh, t0, t0, t1);
7503
                    tcg_gen_helper_1_1(do_dsbh, t0, t1);
7494 7504
                    break;
7495 7505
                case OPC_DSHD:
7496 7506
                    gen_load_gpr(t1, rt);
7497
                    tcg_gen_helper_1_2(do_dshd, t0, t0, t1);
7507
                    tcg_gen_helper_1_1(do_dshd, t0, t1);
7498 7508
                    break;
7499 7509
                default:            /* Invalid */
7500 7510
                    MIPS_INVAL("dbshfl");

Also available in: Unified diff