Revision 636aa200 target-ppc/op_helper.c

b/target-ppc/op_helper.c
239 239
/*****************************************************************************/
240 240
/* Memory load and stores */
241 241

  
242
static always_inline target_ulong addr_add(target_ulong addr, target_long arg)
242
static inline target_ulong addr_add(target_ulong addr, target_long arg)
243 243
{
244 244
#if defined(TARGET_PPC64)
245 245
        if (!msr_sf)
......
532 532
    return f.l;
533 533
}
534 534

  
535
static always_inline int isden (float64 d)
535
static inline int isden(float64 d)
536 536
{
537 537
    CPU_DoubleU u;
538 538

  
......
594 594
}
595 595

  
596 596
/* Floating-point invalid operations exception */
597
static always_inline uint64_t fload_invalid_op_excp (int op)
597
static inline uint64_t fload_invalid_op_excp(int op)
598 598
{
599 599
    uint64_t ret = 0;
600 600
    int ve;
......
675 675
    return ret;
676 676
}
677 677

  
678
static always_inline void float_zero_divide_excp (void)
678
static inline void float_zero_divide_excp(void)
679 679
{
680 680
    env->fpscr |= 1 << FPSCR_ZX;
681 681
    env->fpscr &= ~((1 << FPSCR_FR) | (1 << FPSCR_FI));
......
691 691
    }
692 692
}
693 693

  
694
static always_inline void float_overflow_excp (void)
694
static inline void float_overflow_excp(void)
695 695
{
696 696
    env->fpscr |= 1 << FPSCR_OX;
697 697
    /* Update the floating-point exception summary */
......
709 709
    }
710 710
}
711 711

  
712
static always_inline void float_underflow_excp (void)
712
static inline void float_underflow_excp(void)
713 713
{
714 714
    env->fpscr |= 1 << FPSCR_UX;
715 715
    /* Update the floating-point exception summary */
......
724 724
    }
725 725
}
726 726

  
727
static always_inline void float_inexact_excp (void)
727
static inline void float_inexact_excp(void)
728 728
{
729 729
    env->fpscr |= 1 << FPSCR_XX;
730 730
    /* Update the floating-point exception summary */
......
738 738
    }
739 739
}
740 740

  
741
static always_inline void fpscr_set_rounding_mode (void)
741
static inline void fpscr_set_rounding_mode(void)
742 742
{
743 743
    int rnd_type;
744 744

  
......
1199 1199

  
1200 1200
#endif
1201 1201

  
1202
static always_inline uint64_t do_fri (uint64_t arg, int rounding_mode)
1202
static inline uint64_t do_fri(uint64_t arg, int rounding_mode)
1203 1203
{
1204 1204
    CPU_DoubleU farg;
1205 1205
    farg.ll = arg;
......
1614 1614
    }
1615 1615
}
1616 1616

  
1617
static always_inline void do_rfi (target_ulong nip, target_ulong msr,
1618
                                    target_ulong msrm, int keep_msrh)
1617
static inline void do_rfi(target_ulong nip, target_ulong msr,
1618
                          target_ulong msrm, int keep_msrh)
1619 1619
{
1620 1620
#if defined(TARGET_PPC64)
1621 1621
    if (msr & (1ULL << MSR_SF)) {
......
1956 1956

  
1957 1957
/* Saturating arithmetic helpers.  */
1958 1958
#define SATCVT(from, to, from_type, to_type, min, max, use_min, use_max) \
1959
    static always_inline to_type cvt##from##to (from_type x, int *sat)  \
1959
    static inline to_type cvt##from##to(from_type x, int *sat)          \
1960 1960
    {                                                                   \
1961 1961
        to_type r;                                                      \
1962 1962
        if (use_min && x < min) {                                       \
......
1975 1975
SATCVT(sd, sw, int64_t, int32_t, INT32_MIN, INT32_MAX, 1, 1)
1976 1976

  
1977 1977
/* Work around gcc problems with the macro version */
1978
static always_inline uint8_t cvtuhub(uint16_t x, int *sat)
1978
static inline uint8_t cvtuhub(uint16_t x, int *sat)
1979 1979
{
1980 1980
    uint8_t r;
1981 1981

  
......
2243 2243
#undef VCMPFP_DO
2244 2244
#undef VCMPFP
2245 2245

  
2246
static always_inline void vcmpbfp_internal (ppc_avr_t *r, ppc_avr_t *a,
2247
                                            ppc_avr_t *b, int record)
2246
static inline void vcmpbfp_internal(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b,
2247
                                    int record)
2248 2248
{
2249 2249
    int i;
2250 2250
    int all_in = 0;
......
3063 3063
    0x1, 0x9, 0x5, 0xD, 0x3, 0xB, 0x7, 0xF,
3064 3064
};
3065 3065

  
3066
static always_inline uint8_t byte_reverse (uint8_t val)
3066
static inline uint8_t byte_reverse(uint8_t val)
3067 3067
{
3068 3068
    return hbrev[val >> 4] | (hbrev[val & 0xF] << 4);
3069 3069
}
3070 3070

  
3071
static always_inline uint32_t word_reverse (uint32_t val)
3071
static inline uint32_t word_reverse(uint32_t val)
3072 3072
{
3073 3073
    return byte_reverse(val >> 24) | (byte_reverse(val >> 16) << 8) |
3074 3074
        (byte_reverse(val >> 8) << 16) | (byte_reverse(val) << 24);
......
3100 3100
}
3101 3101

  
3102 3102
/* Single-precision floating-point conversions */
3103
static always_inline uint32_t efscfsi (uint32_t val)
3103
static inline uint32_t efscfsi(uint32_t val)
3104 3104
{
3105 3105
    CPU_FloatU u;
3106 3106

  
......
3109 3109
    return u.l;
3110 3110
}
3111 3111

  
3112
static always_inline uint32_t efscfui (uint32_t val)
3112
static inline uint32_t efscfui(uint32_t val)
3113 3113
{
3114 3114
    CPU_FloatU u;
3115 3115

  
......
3118 3118
    return u.l;
3119 3119
}
3120 3120

  
3121
static always_inline int32_t efsctsi (uint32_t val)
3121
static inline int32_t efsctsi(uint32_t val)
3122 3122
{
3123 3123
    CPU_FloatU u;
3124 3124

  
......
3130 3130
    return float32_to_int32(u.f, &env->vec_status);
3131 3131
}
3132 3132

  
3133
static always_inline uint32_t efsctui (uint32_t val)
3133
static inline uint32_t efsctui(uint32_t val)
3134 3134
{
3135 3135
    CPU_FloatU u;
3136 3136

  
......
3142 3142
    return float32_to_uint32(u.f, &env->vec_status);
3143 3143
}
3144 3144

  
3145
static always_inline uint32_t efsctsiz (uint32_t val)
3145
static inline uint32_t efsctsiz(uint32_t val)
3146 3146
{
3147 3147
    CPU_FloatU u;
3148 3148

  
......
3154 3154
    return float32_to_int32_round_to_zero(u.f, &env->vec_status);
3155 3155
}
3156 3156

  
3157
static always_inline uint32_t efsctuiz (uint32_t val)
3157
static inline uint32_t efsctuiz(uint32_t val)
3158 3158
{
3159 3159
    CPU_FloatU u;
3160 3160

  
......
3166 3166
    return float32_to_uint32_round_to_zero(u.f, &env->vec_status);
3167 3167
}
3168 3168

  
3169
static always_inline uint32_t efscfsf (uint32_t val)
3169
static inline uint32_t efscfsf(uint32_t val)
3170 3170
{
3171 3171
    CPU_FloatU u;
3172 3172
    float32 tmp;
......
3178 3178
    return u.l;
3179 3179
}
3180 3180

  
3181
static always_inline uint32_t efscfuf (uint32_t val)
3181
static inline uint32_t efscfuf(uint32_t val)
3182 3182
{
3183 3183
    CPU_FloatU u;
3184 3184
    float32 tmp;
......
3190 3190
    return u.l;
3191 3191
}
3192 3192

  
3193
static always_inline uint32_t efsctsf (uint32_t val)
3193
static inline uint32_t efsctsf(uint32_t val)
3194 3194
{
3195 3195
    CPU_FloatU u;
3196 3196
    float32 tmp;
......
3205 3205
    return float32_to_int32(u.f, &env->vec_status);
3206 3206
}
3207 3207

  
3208
static always_inline uint32_t efsctuf (uint32_t val)
3208
static inline uint32_t efsctuf(uint32_t val)
3209 3209
{
3210 3210
    CPU_FloatU u;
3211 3211
    float32 tmp;
......
3274 3274
HELPER_SPE_VECTOR_CONV(fsctuf);
3275 3275

  
3276 3276
/* Single-precision floating-point arithmetic */
3277
static always_inline uint32_t efsadd (uint32_t op1, uint32_t op2)
3277
static inline uint32_t efsadd(uint32_t op1, uint32_t op2)
3278 3278
{
3279 3279
    CPU_FloatU u1, u2;
3280 3280
    u1.l = op1;
......
3283 3283
    return u1.l;
3284 3284
}
3285 3285

  
3286
static always_inline uint32_t efssub (uint32_t op1, uint32_t op2)
3286
static inline uint32_t efssub(uint32_t op1, uint32_t op2)
3287 3287
{
3288 3288
    CPU_FloatU u1, u2;
3289 3289
    u1.l = op1;
......
3292 3292
    return u1.l;
3293 3293
}
3294 3294

  
3295
static always_inline uint32_t efsmul (uint32_t op1, uint32_t op2)
3295
static inline uint32_t efsmul(uint32_t op1, uint32_t op2)
3296 3296
{
3297 3297
    CPU_FloatU u1, u2;
3298 3298
    u1.l = op1;
......
3301 3301
    return u1.l;
3302 3302
}
3303 3303

  
3304
static always_inline uint32_t efsdiv (uint32_t op1, uint32_t op2)
3304
static inline uint32_t efsdiv(uint32_t op1, uint32_t op2)
3305 3305
{
3306 3306
    CPU_FloatU u1, u2;
3307 3307
    u1.l = op1;
......
3340 3340
HELPER_SPE_VECTOR_ARITH(fsdiv);
3341 3341

  
3342 3342
/* Single-precision floating-point comparisons */
3343
static always_inline uint32_t efststlt (uint32_t op1, uint32_t op2)
3343
static inline uint32_t efststlt(uint32_t op1, uint32_t op2)
3344 3344
{
3345 3345
    CPU_FloatU u1, u2;
3346 3346
    u1.l = op1;
......
3348 3348
    return float32_lt(u1.f, u2.f, &env->vec_status) ? 4 : 0;
3349 3349
}
3350 3350

  
3351
static always_inline uint32_t efststgt (uint32_t op1, uint32_t op2)
3351
static inline uint32_t efststgt(uint32_t op1, uint32_t op2)
3352 3352
{
3353 3353
    CPU_FloatU u1, u2;
3354 3354
    u1.l = op1;
......
3356 3356
    return float32_le(u1.f, u2.f, &env->vec_status) ? 0 : 4;
3357 3357
}
3358 3358

  
3359
static always_inline uint32_t efststeq (uint32_t op1, uint32_t op2)
3359
static inline uint32_t efststeq(uint32_t op1, uint32_t op2)
3360 3360
{
3361 3361
    CPU_FloatU u1, u2;
3362 3362
    u1.l = op1;
......
3364 3364
    return float32_eq(u1.f, u2.f, &env->vec_status) ? 4 : 0;
3365 3365
}
3366 3366

  
3367
static always_inline uint32_t efscmplt (uint32_t op1, uint32_t op2)
3367
static inline uint32_t efscmplt(uint32_t op1, uint32_t op2)
3368 3368
{
3369 3369
    /* XXX: TODO: test special values (NaN, infinites, ...) */
3370 3370
    return efststlt(op1, op2);
3371 3371
}
3372 3372

  
3373
static always_inline uint32_t efscmpgt (uint32_t op1, uint32_t op2)
3373
static inline uint32_t efscmpgt(uint32_t op1, uint32_t op2)
3374 3374
{
3375 3375
    /* XXX: TODO: test special values (NaN, infinites, ...) */
3376 3376
    return efststgt(op1, op2);
3377 3377
}
3378 3378

  
3379
static always_inline uint32_t efscmpeq (uint32_t op1, uint32_t op2)
3379
static inline uint32_t efscmpeq(uint32_t op1, uint32_t op2)
3380 3380
{
3381 3381
    /* XXX: TODO: test special values (NaN, infinites, ...) */
3382 3382
    return efststeq(op1, op2);
......
3400 3400
/* efscmpeq */
3401 3401
HELPER_SINGLE_SPE_CMP(fscmpeq);
3402 3402

  
3403
static always_inline uint32_t evcmp_merge (int t0, int t1)
3403
static inline uint32_t evcmp_merge(int t0, int t1)
3404 3404
{
3405 3405
    return (t0 << 3) | (t1 << 2) | ((t0 | t1) << 1) | (t0 & t1);
3406 3406
}
......
3850 3850
    do_74xx_tlb(EPN, 1);
3851 3851
}
3852 3852

  
3853
static always_inline target_ulong booke_tlb_to_page_size (int size)
3853
static inline target_ulong booke_tlb_to_page_size(int size)
3854 3854
{
3855 3855
    return 1024 << (2 * size);
3856 3856
}
3857 3857

  
3858
static always_inline int booke_page_size_to_tlb (target_ulong page_size)
3858
static inline int booke_page_size_to_tlb(target_ulong page_size)
3859 3859
{
3860 3860
    int size;
3861 3861

  

Also available in: Unified diff