Revision 4d6b6c0a target-i386/helper.c

b/target-i386/helper.c
1454 1454
    selector &= 0xffff;
1455 1455
    if ((selector & 0xfffc) == 0) {
1456 1456
        /* null selector case */
1457
        if (seg_reg == R_SS)
1457
        if (seg_reg == R_SS
1458
#ifdef TARGET_X86_64
1459
            && !(env->hflags & HF_CS64_MASK)
1460
#endif
1461
            )
1458 1462
            raise_exception_err(EXCP0D_GPF, 0);
1459 1463
        cpu_x86_load_seg_cache(env, seg_reg, selector, 0, 0, 0);
1460 1464
    } else {
......
2146 2150

  
2147 2151
void helper_movl_crN_T0(int reg)
2148 2152
{
2153
#if !defined(CONFIG_USER_ONLY) 
2149 2154
    switch(reg) {
2150 2155
    case 0:
2151 2156
        cpu_x86_update_cr0(env, T0);
......
2156 2161
    case 4:
2157 2162
        cpu_x86_update_cr4(env, T0);
2158 2163
        break;
2164
    case 8:
2165
        cpu_set_apic_tpr(env, T0);
2166
        break;
2159 2167
    default:
2160 2168
        env->cr[reg] = T0;
2161 2169
        break;
2162 2170
    }
2171
#endif
2163 2172
}
2164 2173

  
2165 2174
/* XXX: do more */
......
3227 3236
    return 1.0 / a;
3228 3237
}
3229 3238

  
3239
/* XXX: find a better solution */
3240
double helper_sqrt(double a)
3241
{
3242
    return sqrt(a);
3243
}
3244

  
3245
/* XXX: move that to another file */
3246
#if defined(__powerpc__)
3247
/* better to call an helper on ppc */
3248
float int32_to_float32(int32_t a)
3249
{
3250
    return (float)a;
3251
}
3252

  
3253
double int32_to_float64(int32_t a)
3254
{
3255
    return (double)a;
3256
}
3257
#endif
3230 3258

  
3231 3259
#if !defined(CONFIG_USER_ONLY) 
3232 3260

  

Also available in: Unified diff