|
From: <sv...@va...> - 2014-04-01 11:00:47
|
Author: sewardj
Date: Tue Apr 1 11:00:36 2014
New Revision: 2843
Log:
Bug 332658 - ldrd.w r1, r2, [PC, #imm] does not adjust for 32bit alignment
(di...@go...)
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Tue Apr 1 11:00:36 2014
@@ -20455,7 +20455,9 @@
if (valid) {
IRTemp preAddr = newTemp(Ity_I32);
- assign(preAddr, getIRegT(rN));
+ assign(preAddr, 15 == rN
+ ? binop(Iop_And32, getIRegT(15), mkU32(~3U))
+ : getIRegT(rN));
IRTemp postAddr = newTemp(Ity_I32);
assign(postAddr, binop(bU == 1 ? Iop_Add32 : Iop_Sub32,
|