From: Cerion Armour-Brown Date: Fri, 25 Feb 2005 20:47:36 +0000 (+0000) Subject: Fixed some front end with-zero loads X-Git-Tag: svn/VALGRIND_3_0_1^2~359 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f4e27af10c133ef9f63818102439ec27a916f6f;p=thirdparty%2Fvalgrind.git Fixed some front end with-zero loads git-svn-id: svn://svn.valgrind.org/vex/trunk@975 --- diff --git a/VEX/priv/guest-ppc32/toIR.c b/VEX/priv/guest-ppc32/toIR.c index d00596cf55..3e0ba9f124 100644 --- a/VEX/priv/guest-ppc32/toIR.c +++ b/VEX/priv/guest-ppc32/toIR.c @@ -1810,7 +1810,7 @@ static Bool dis_int_load ( UInt theInstr ) case 0x28: // lhz (Load HW & Zero, p490) DIP("lhz r%d,%d(r%d)\n", Rd_addr, (Int)d_imm, Ra_addr); - putIReg( Rd_addr, unop(Iop_16Sto32, + putIReg( Rd_addr, unop(Iop_16Uto32, loadBE(Ity_I16, mkexpr(EA_imm))) ); break; @@ -1820,7 +1820,8 @@ static Bool dis_int_load ( UInt theInstr ) return False; } DIP("lhzu r%d,%d(r%d)\n", Rd_addr, (Int)d_imm, Ra_addr); - putIReg( Rd_addr, loadBE(Ity_I16, mkexpr(EA_imm)) ); + putIReg( Rd_addr, unop(Iop_16Uto32, + loadBE(Ity_I16, mkexpr(EA_imm))) ); putIReg( Ra_addr, mkexpr(EA_imm) ); break; @@ -1888,14 +1889,14 @@ static Bool dis_int_load ( UInt theInstr ) return False; } DIP("lhzux r%d,r%d,r%d\n", Rd_addr, Ra_addr, Rb_addr); - putIReg( Rd_addr, unop(Iop_16Sto32, + putIReg( Rd_addr, unop(Iop_16Uto32, loadBE(Ity_I16, mkexpr(EA_reg))) ); putIReg( Ra_addr, mkexpr(EA_reg) ); break; case 0x117: // lhzx (Load HW & Zero Indexed, p493) DIP("lhzx r%d,r%d,r%d\n", Rd_addr, Ra_addr, Rb_addr); - putIReg( Rd_addr, unop(Iop_16Sto32, + putIReg( Rd_addr, unop(Iop_16Uto32, loadBE(Ity_I16, mkexpr(EA_reg))) ); break;