Use memory globals for G registers
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4062 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
2e0ded9c7c
commit
f5069b26a4
|
@ -47,6 +47,7 @@
|
||||||
|
|
||||||
/* global register indexes */
|
/* global register indexes */
|
||||||
static TCGv cpu_env, cpu_T[3], cpu_regwptr, cpu_cc_src, cpu_cc_dst, cpu_psr;
|
static TCGv cpu_env, cpu_T[3], cpu_regwptr, cpu_cc_src, cpu_cc_dst, cpu_psr;
|
||||||
|
static TCGv cpu_gregs[8];
|
||||||
#ifdef TARGET_SPARC64
|
#ifdef TARGET_SPARC64
|
||||||
static TCGv cpu_xcc;
|
static TCGv cpu_xcc;
|
||||||
#endif
|
#endif
|
||||||
|
@ -222,7 +223,7 @@ static inline void gen_movl_reg_TN(int reg, TCGv tn)
|
||||||
if (reg == 0)
|
if (reg == 0)
|
||||||
tcg_gen_movi_tl(tn, 0);
|
tcg_gen_movi_tl(tn, 0);
|
||||||
else if (reg < 8)
|
else if (reg < 8)
|
||||||
tcg_gen_ld_tl(tn, cpu_env, offsetof(CPUState, gregs[reg]));
|
tcg_gen_mov_tl(tn, cpu_gregs[reg]);
|
||||||
else {
|
else {
|
||||||
tcg_gen_ld_tl(tn, cpu_regwptr, (reg - 8) * sizeof(target_ulong));
|
tcg_gen_ld_tl(tn, cpu_regwptr, (reg - 8) * sizeof(target_ulong));
|
||||||
}
|
}
|
||||||
|
@ -250,7 +251,7 @@ static inline void gen_movl_TN_reg(int reg, TCGv tn)
|
||||||
if (reg == 0)
|
if (reg == 0)
|
||||||
return;
|
return;
|
||||||
else if (reg < 8)
|
else if (reg < 8)
|
||||||
tcg_gen_st_tl(tn, cpu_env, offsetof(CPUState, gregs[reg]));
|
tcg_gen_mov_tl(cpu_gregs[reg], tn);
|
||||||
else {
|
else {
|
||||||
tcg_gen_st_tl(tn, cpu_regwptr, (reg - 8) * sizeof(target_ulong));
|
tcg_gen_st_tl(tn, cpu_regwptr, (reg - 8) * sizeof(target_ulong));
|
||||||
}
|
}
|
||||||
|
@ -4673,6 +4674,17 @@ CPUSPARCState *cpu_sparc_init(const char *cpu_model)
|
||||||
CPUSPARCState *env;
|
CPUSPARCState *env;
|
||||||
const sparc_def_t *def;
|
const sparc_def_t *def;
|
||||||
static int inited;
|
static int inited;
|
||||||
|
unsigned int i;
|
||||||
|
static const char * const gregnames[8] = {
|
||||||
|
NULL, // g0 not used
|
||||||
|
"g1",
|
||||||
|
"g2",
|
||||||
|
"g3",
|
||||||
|
"g4",
|
||||||
|
"g5",
|
||||||
|
"g6",
|
||||||
|
"g7",
|
||||||
|
};
|
||||||
|
|
||||||
def = cpu_sparc_find_by_name(cpu_model);
|
def = cpu_sparc_find_by_name(cpu_model);
|
||||||
if (!def)
|
if (!def)
|
||||||
|
@ -4729,6 +4741,10 @@ CPUSPARCState *cpu_sparc_init(const char *cpu_model)
|
||||||
cpu_psr = tcg_global_mem_new(TCG_TYPE_I32,
|
cpu_psr = tcg_global_mem_new(TCG_TYPE_I32,
|
||||||
TCG_AREG0, offsetof(CPUState, psr),
|
TCG_AREG0, offsetof(CPUState, psr),
|
||||||
"psr");
|
"psr");
|
||||||
|
for (i = 1; i < 8; i++)
|
||||||
|
cpu_gregs[i] = tcg_global_mem_new(TCG_TYPE_TL, TCG_AREG0,
|
||||||
|
offsetof(CPUState, gregs[i]),
|
||||||
|
gregnames[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
cpu_reset(env);
|
cpu_reset(env);
|
||||||
|
|
Loading…
Reference in New Issue