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 1671 void helper_rfi (void)
1672 1672 {
1673 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 1677 #if defined(TARGET_PPC64)
1678 1678 void helper_rfid (void)
1679 1679 {
1680 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 1684 void helper_hrfid (void)
1685 1685 {
1686 1686 do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1],
1687   - ~((target_ulong)0xFFFF0000), 0);
  1687 + ~((target_ulong)0x0), 0);
1688 1688 }
1689 1689 #endif
1690 1690 #endif
... ...