|
From: <sv...@va...> - 2015-11-29 15:20:51
|
Author: florian
Date: Sun Nov 29 15:20:43 2015
New Revision: 3206
Log:
Handle shift amounts 0..31. It is unclear why the shift amounts
were initially restricted to 0..3.
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 Sun Nov 29 15:20:43 2015
@@ -19665,10 +19665,10 @@
UInt how = INSN1(5,4);
Bool valid = !isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM);
- /* but allow "add.w reg, sp, reg, lsl #N for N=0,1,2 or 3
+ /* but allow "add.w reg, sp, reg, lsl #N for N=0..31
(T3) "ADD (SP plus register) */
if (!valid && INSN0(8,5) == BITS4(1,0,0,0) // add
- && rD != 15 && rN == 13 && imm5 <= 3 && how == 0) {
+ && rD != 15 && rN == 13 && imm5 <= 31 && how == 0) {
valid = True;
}
/* also allow "sub.w reg, sp, reg w/ no shift
|