Fix RFI(d)

The current implementation masks some MSR bits from SRR1 as it is
given on rfi(d). This looks pretty wrong and breaks Altivec.

Signed-off-by: Alexander Graf <alex@csgraf.de>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6754 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
blueswir1 2009-03-07 20:56:21 +00:00
parent 4911012d26
commit 2ada0ed785
1 changed files with 3 additions and 3 deletions

View File

@ -1671,20 +1671,20 @@ static always_inline void do_rfi (target_ulong nip, target_ulong msr,
void helper_rfi (void) void helper_rfi (void)
{ {
do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1], do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
~((target_ulong)0xFFFF0000), 1); ~((target_ulong)0x0), 1);
} }
#if defined(TARGET_PPC64) #if defined(TARGET_PPC64)
void helper_rfid (void) void helper_rfid (void)
{ {
do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1], do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
~((target_ulong)0xFFFF0000), 0); ~((target_ulong)0x0), 0);
} }
void helper_hrfid (void) void helper_hrfid (void)
{ {
do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1], do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1],
~((target_ulong)0xFFFF0000), 0); ~((target_ulong)0x0), 0);
} }
#endif #endif
#endif #endif