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