Revision 6f27aba6 target-sparc/translate.c

b/target-sparc/translate.c
361 361
#endif
362 362
#define gen_op_ldst(name)        gen_op_##name##_raw()
363 363
#else
364
#define supervisor(dc) (dc->mem_idx == 1)
364
#define supervisor(dc) (dc->mem_idx >= 1)
365 365
#ifdef TARGET_SPARC64
366 366
#define hypervisor(dc) (dc->mem_idx == 2)
367
#endif
368
#define gen_op_ldst(name)        (*gen_op_##name[dc->mem_idx])()
367
#define OP_LD_TABLE(width)                                              \
368
    static GenOpFunc * const gen_op_##width[] = {                       \
369
        &gen_op_##width##_user,                                         \
370
        &gen_op_##width##_kernel,                                       \
371
        &gen_op_##width##_hypv,                                         \
372
    };
373
#else
369 374
#define OP_LD_TABLE(width)                                              \
370 375
    static GenOpFunc * const gen_op_##width[] = {                       \
371 376
        &gen_op_##width##_user,                                         \
372 377
        &gen_op_##width##_kernel,                                       \
373 378
    };
374 379
#endif
380
#define gen_op_ldst(name)        (*gen_op_##name[dc->mem_idx])()
381
#endif
375 382

  
376 383
#ifndef CONFIG_USER_ONLY
377 384
OP_LD_TABLE(ld);
......
3378 3385
    dc->pc = pc_start;
3379 3386
    last_pc = dc->pc;
3380 3387
    dc->npc = (target_ulong) tb->cs_base;
3381
#if defined(CONFIG_USER_ONLY)
3382
    dc->mem_idx = 0;
3383
    dc->fpu_enabled = 1;
3384
#else
3385
    dc->mem_idx = ((env->psrs) != 0);
3386
#ifdef TARGET_SPARC64
3387
    dc->fpu_enabled = (((env->pstate & PS_PEF) != 0) && ((env->fprs & FPRS_FEF) != 0));
3388
#else
3389
    dc->fpu_enabled = ((env->psref) != 0);
3390
#endif
3391
#endif
3388
    dc->mem_idx = cpu_mmu_index(env);
3389
    dc->fpu_enabled = cpu_fpu_enabled(env);
3392 3390
    gen_opc_ptr = gen_opc_buf;
3393 3391
    gen_opc_end = gen_opc_buf + OPC_MAX_SIZE;
3394 3392
    gen_opparam_ptr = gen_opparam_buf;
......
3522 3520
    env->psrps = 1;
3523 3521
#ifdef TARGET_SPARC64
3524 3522
    env->pstate = PS_PRIV;
3523
    env->hpstate = HS_PRIV;
3525 3524
    env->pc = 0x1fff0000000ULL;
3526 3525
#else
3527 3526
    env->pc = 0;

Also available in: Unified diff