|
From: <sv...@va...> - 2010-10-11 18:03:23
|
Author: sewardj
Date: 2010-10-11 19:03:13 +0100 (Mon, 11 Oct 2010)
New Revision: 2063
Log:
Fix bogus register constraints for ARM mode LDREX and STREX.
Derived from a patch by Rodrigo Belem <rod...@op...>
Partially fixes #253636.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-10-06 20:47:22 UTC (rev 2062)
+++ trunk/priv/guest_arm_toIR.c 2010-10-11 18:03:13 UTC (rev 2063)
@@ -13287,7 +13287,7 @@
if (0x01900F9F == (insn & 0x0FF00FFF)) {
UInt rT = INSN(15,12);
UInt rN = INSN(19,16);
- if (rT == 15 || rN == 15 || rT == 14 /* || (rT & 1)*/) {
+ if (rT == 15 || rN == 15) {
/* undecodable; fall through */
} else {
IRTemp res;
@@ -13313,8 +13313,7 @@
UInt rN = INSN(19,16);
UInt rD = INSN(15,12);
if (rT == 15 || rN == 15 || rD == 15
- || rT == 14 /* || (rT & 1)*/
- || rD == rT || rN == rT) {
+ || rD == rT || rD == rN) {
/* undecodable; fall through */
} else {
IRTemp resSC1, resSC32;
|