Revision d2856f1a target-ppc/translate.c

b/target-ppc/translate.c
6345 6345
{
6346 6346
    return gen_intermediate_code_internal(env, tb, 1);
6347 6347
}
6348

  
6349
void gen_pc_load(CPUState *env, TranslationBlock *tb,
6350
                unsigned long searched_pc, int pc_pos, void *puc)
6351
{
6352
    int type, c;
6353
    /* for PPC, we need to look at the micro operation to get the
6354
     * access type */
6355
    env->nip = gen_opc_pc[pc_pos];
6356
    c = gen_opc_buf[pc_pos];
6357
    switch(c) {
6358
#if defined(CONFIG_USER_ONLY)
6359
#define CASE3(op)\
6360
    case INDEX_op_ ## op ## _raw
6361
#else
6362
#define CASE3(op)\
6363
    case INDEX_op_ ## op ## _user:\
6364
    case INDEX_op_ ## op ## _kernel:\
6365
    case INDEX_op_ ## op ## _hypv
6366
#endif
6367

  
6368
    CASE3(stfd):
6369
    CASE3(stfs):
6370
    CASE3(lfd):
6371
    CASE3(lfs):
6372
        type = ACCESS_FLOAT;
6373
        break;
6374
    CASE3(lwarx):
6375
        type = ACCESS_RES;
6376
        break;
6377
    CASE3(stwcx):
6378
        type = ACCESS_RES;
6379
        break;
6380
    CASE3(eciwx):
6381
    CASE3(ecowx):
6382
        type = ACCESS_EXT;
6383
        break;
6384
    default:
6385
        type = ACCESS_INT;
6386
        break;
6387
    }
6388
    env->access_type = type;
6389
}

Also available in: Unified diff