|
From: <sv...@va...> - 2006-05-05 13:44:26
|
Author: sewardj
Date: 2006-05-05 14:44:17 +0100 (Fri, 05 May 2006)
New Revision: 1609
Log:
Implement sthbrx.
Modified:
trunk/priv/guest-ppc/toIR.c
Modified: trunk/priv/guest-ppc/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-ppc/toIR.c 2006-05-05 13:26:14 UTC (rev 1608)
+++ trunk/priv/guest-ppc/toIR.c 2006-05-05 13:44:17 UTC (rev 1609)
@@ -5155,21 +5155,11 @@
/* Signed */False) );
break;
=20
-//zz case 0x396: // sthbrx (Store Half Word Byte-Reverse Indexed, PPC=
32 p523)
-//zz vassert(0);
-//zz=20
-//zz DIP("sthbrx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
-//zz assign( rS, getIReg(rS_addr) );
-//zz assign( byte0, binop(Iop_And32, mkexpr(rS), mkU32(0x00FF)) );
-//zz assign( byte1, binop(Iop_And32, mkexpr(rS), mkU32(0xFF00)) );
-//zz =20
-//zz assign( tmp16,
-//zz unop(Iop_32to16,
-//zz binop(Iop_Or32,
-//zz binop(Iop_Shl32, mkexpr(byte0), mkU8(8)),
-//zz binop(Iop_Shr32, mkexpr(byte1), mkU8(8))))=
);
-//zz storeBE( mkexpr(EA), getIReg(tmp16) );
-//zz break;
+ case 0x396: // sthbrx (Store Half Word Byte-Reverse Indexed, PPC32=
p523)
+ DIP("sthbrx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
+ assign( w1, mkSzNarrow32(ty, getIReg(rS_addr)) );
+ storeBE( mkexpr(EA), unop(Iop_32to16, gen_byterev16(w1)) );
+ break;
=20
case 0x296: // stwbrx (Store Word Byte-Reverse Indxd, PPC32 p531)
DIP("stwbrx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
|