mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
Factorize code in translate.c
(Glauber Costa) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4274 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
923e5e339f
commit
d2856f1ad4
11 changed files with 125 additions and 95 deletions
|
@ -6345,3 +6345,45 @@ int gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
|
|||
{
|
||||
return gen_intermediate_code_internal(env, tb, 1);
|
||||
}
|
||||
|
||||
void gen_pc_load(CPUState *env, TranslationBlock *tb,
|
||||
unsigned long searched_pc, int pc_pos, void *puc)
|
||||
{
|
||||
int type, c;
|
||||
/* for PPC, we need to look at the micro operation to get the
|
||||
* access type */
|
||||
env->nip = gen_opc_pc[pc_pos];
|
||||
c = gen_opc_buf[pc_pos];
|
||||
switch(c) {
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
#define CASE3(op)\
|
||||
case INDEX_op_ ## op ## _raw
|
||||
#else
|
||||
#define CASE3(op)\
|
||||
case INDEX_op_ ## op ## _user:\
|
||||
case INDEX_op_ ## op ## _kernel:\
|
||||
case INDEX_op_ ## op ## _hypv
|
||||
#endif
|
||||
|
||||
CASE3(stfd):
|
||||
CASE3(stfs):
|
||||
CASE3(lfd):
|
||||
CASE3(lfs):
|
||||
type = ACCESS_FLOAT;
|
||||
break;
|
||||
CASE3(lwarx):
|
||||
type = ACCESS_RES;
|
||||
break;
|
||||
CASE3(stwcx):
|
||||
type = ACCESS_RES;
|
||||
break;
|
||||
CASE3(eciwx):
|
||||
CASE3(ecowx):
|
||||
type = ACCESS_EXT;
|
||||
break;
|
||||
default:
|
||||
type = ACCESS_INT;
|
||||
break;
|
||||
}
|
||||
env->access_type = type;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue