sparc64 fixes (Blue Swirl)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2062 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2006-07-18 21:12:17 +00:00
parent a3c259974e
commit 725cb90bf7
4 changed files with 72 additions and 4 deletions

View file

@ -1514,6 +1514,9 @@ void OPPROTO op_saved(void)
env->cansave++;
if (env->otherwin == 0)
env->canrestore--;
else
env->otherwin--;
FORCE_RET();
}
void OPPROTO op_restored(void)
@ -1525,6 +1528,7 @@ void OPPROTO op_restored(void)
env->cansave--;
else
env->otherwin--;
FORCE_RET();
}
void OPPROTO op_popc(void)
@ -1571,3 +1575,23 @@ void OPPROTO op_st_asi()
helper_st_asi(PARAM1, PARAM2, PARAM3);
}
#ifdef TARGET_SPARC64
void OPPROTO op_alignaddr()
{
uint64_t tmp;
tmp = T0 + T1;
env->gsr &= ~7ULL;
env->gsr |= tmp & 7ULL;
T0 = tmp & ~7ULL;
}
void OPPROTO op_faligndata()
{
uint64_t tmp;
tmp = (*((uint64_t *)&DT0)) << ((env->gsr & 7) * 8);
tmp |= (*((uint64_t *)&DT1)) >> (64 - (env->gsr & 7) * 8);
(*((uint64_t *)&DT0)) = tmp;
}
#endif