Commit 2ada0ed785a923e35175c084f09a656b10d1a4fa

Authored by blueswir1
1 parent 4911012d

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
Showing 1 changed file with 3 additions and 3 deletions
target-ppc/op_helper.c
@@ -1671,20 +1671,20 @@ static always_inline void do_rfi (target_ulong nip, target_ulong msr, @@ -1671,20 +1671,20 @@ static always_inline void do_rfi (target_ulong nip, target_ulong msr,
1671 void helper_rfi (void) 1671 void helper_rfi (void)
1672 { 1672 {
1673 do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1], 1673 do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
1674 - ~((target_ulong)0xFFFF0000), 1); 1674 + ~((target_ulong)0x0), 1);
1675 } 1675 }
1676 1676
1677 #if defined(TARGET_PPC64) 1677 #if defined(TARGET_PPC64)
1678 void helper_rfid (void) 1678 void helper_rfid (void)
1679 { 1679 {
1680 do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1], 1680 do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
1681 - ~((target_ulong)0xFFFF0000), 0); 1681 + ~((target_ulong)0x0), 0);
1682 } 1682 }
1683 1683
1684 void helper_hrfid (void) 1684 void helper_hrfid (void)
1685 { 1685 {
1686 do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1], 1686 do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1],
1687 - ~((target_ulong)0xFFFF0000), 0); 1687 + ~((target_ulong)0x0), 0);
1688 } 1688 }
1689 #endif 1689 #endif
1690 #endif 1690 #endif