Fix offset handling for ASI loads and stores (Vince Weaver)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4988 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
4105de6732
commit
95f9397c75
|
@ -1641,13 +1641,11 @@ static inline void gen_clear_float_exceptions(void)
|
||||||
#ifdef TARGET_SPARC64
|
#ifdef TARGET_SPARC64
|
||||||
static inline TCGv gen_get_asi(int insn, TCGv r_addr)
|
static inline TCGv gen_get_asi(int insn, TCGv r_addr)
|
||||||
{
|
{
|
||||||
int asi, offset;
|
int asi;
|
||||||
TCGv r_asi;
|
TCGv r_asi;
|
||||||
|
|
||||||
if (IS_IMM) {
|
if (IS_IMM) {
|
||||||
r_asi = tcg_temp_new(TCG_TYPE_I32);
|
r_asi = tcg_temp_new(TCG_TYPE_I32);
|
||||||
offset = GET_FIELD(insn, 25, 31);
|
|
||||||
tcg_gen_addi_tl(r_addr, r_addr, offset);
|
|
||||||
tcg_gen_ld_i32(r_asi, cpu_env, offsetof(CPUSPARCState, asi));
|
tcg_gen_ld_i32(r_asi, cpu_env, offsetof(CPUSPARCState, asi));
|
||||||
} else {
|
} else {
|
||||||
asi = GET_FIELD(insn, 19, 26);
|
asi = GET_FIELD(insn, 19, 26);
|
||||||
|
|
Reference in New Issue