am a71a8080: (-s ours) Merge "DO NOT MERGE: Add support for ARM SMMLA instruction."

* commit 'a71a80800e73f1ce509a4e9931302fb72c94bca8':
  DO NOT MERGE: Add support for ARM SMMLA instruction.
diff --git a/main/Android.mk b/main/Android.mk
index a19668b..744b6ed 100644
--- a/main/Android.mk
+++ b/main/Android.mk
@@ -14,8 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ANDROID_HARDWARE := ANDROID_HARDWARE_generic
-
 ifneq ($(filter arm x86,$(TARGET_ARCH)),)
 
 common_cflags := \
@@ -28,7 +26,8 @@
 	-DVGPV_$(TARGET_ARCH)_linux_android=1 \
 	-DVG_PLATFORM=\"$(TARGET_ARCH)-linux\" \
 	-DVG_LIBDIR=\"/system/lib/valgrind\" \
-	-DANDROID_SYMBOLS_DIR=\"/data/local/symbols\"
+	-DANDROID_SYMBOLS_DIR=\"/data/local/symbols\" \
+	-DANDROID_HARDWARE_nexus_s
 
 common_includes := \
 	external/valgrind/main \
@@ -40,18 +39,10 @@
 
 ifeq ($(TARGET_ARCH),arm)
 tool_ldflags := -static -Wl,--build-id=none,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
-
-# ioctl/syscall wrappers are device dependent
-ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),manta)
-ANDROID_HARDWARE := ANDROID_HARDWARE_nexus_10
-endif
-
 else
 tool_ldflags := -static -Wl,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
 endif
 
-common_cflags += -D$(ANDROID_HARDWARE)
-
 preload_ldflags := -nodefaultlibs -Wl,-z,interpose,-z,initfirst
 # Remove this when the all toolchains are GCC 4.4
 ifeq ($(TARGET_ARCH),arm)
diff --git a/main/VEX/priv/guest_arm_toIR.c b/main/VEX/priv/guest_arm_toIR.c
index 3da677e..220c50f 100644
--- a/main/VEX/priv/guest_arm_toIR.c
+++ b/main/VEX/priv/guest_arm_toIR.c
@@ -18802,30 +18802,6 @@
       }
    }
 
-   /* ------------------- (T1) SMMLA{R} ------------------ */
-   if (INSN0(15,7) == BITS9(1,1,1,1,1,0,1,1,0)
-       && INSN0(6,4) == BITS3(1,0,1)
-       && INSN1(7,5) == BITS3(0,0,0)) {
-      UInt bitR = INSN1(4,4);
-      UInt rA = INSN1(15,12);
-      UInt rD = INSN1(11,8);
-      UInt rM = INSN1(3,0);
-      UInt rN = INSN0(3,0);
-      if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && (rA != 13)) {
-         IRExpr* res
-         = unop(Iop_64HIto32,
-                binop(Iop_Add64,
-                      binop(Iop_Add64,
-                            binop(Iop_32HLto64, getIRegT(rA), mkU32(0)),
-                            binop(Iop_MullS32, getIRegT(rN), getIRegT(rM))),
-                      mkU64(bitR ? 0x80000000ULL : 0ULL)));
-         putIRegT(rD, res, condT);
-         DIP("smmla%s r%u, r%u, r%u, r%u\n",
-             bitR ? "r" : "", rD, rN, rM, rA);
-         goto decode_success;
-      }
-   }
-
    /* ----------------------------------------------------------- */
    /* -- VFP (CP 10, CP 11) instructions (in Thumb mode)       -- */
    /* ----------------------------------------------------------- */
diff --git a/main/coregrind/m_syswrap/syswrap-linux.c b/main/coregrind/m_syswrap/syswrap-linux.c
index 74c5201..2f1155f 100644
--- a/main/coregrind/m_syswrap/syswrap-linux.c
+++ b/main/coregrind/m_syswrap/syswrap-linux.c
@@ -4295,13 +4295,6 @@
                     unsigned int, fd, unsigned int, request);
       return;
 
-#  if defined(ANDROID_HARDWARE_nexus_10)
-   /* undocumented ioctl ids noted on the device */
-   case 0x4d07:
-   case 0x6101:
-      return;
-#  endif
-
    default:
       PRINT("sys_ioctl ( %ld, 0x%lx, 0x%lx )",ARG1,ARG2,ARG3);
       PRE_REG_READ3(long, "ioctl",
@@ -4309,18 +4302,6 @@
       break;
    }
 
-
-#  if defined(ANDROID_HARDWARE_nexus_10)
-
-   /* undocumented ioctl ids noted on the device */
-   if (ARG2 >= 0xc0108000 && ARG2 <= 0xc1e8820b && ARG3 != 0) {
-       int size = (ARG2 >> 16) & 0x3fff;
-       PRE_MEM_WRITE("ioctl(GL_UNDOCUMENTED)", (Addr)ARG3,  size);
-       return;
-   }
-
-#  endif
-
    // We now handle those that do look at ARG3 (and unknown ones fall into
    // this category).  Nb: some of these may well belong in the
    // doesn't-use-ARG3 switch above.
@@ -5524,7 +5505,6 @@
            PRE_FIELD_WRITE("ioctl(BINDER_VERSION)", bv->protocol_version);
        }
        break;
-
 #  endif /* defined(VGPV_*_linux_android) */
 
    case VKI_HCIINQUIRY:
@@ -5547,9 +5527,6 @@
    case VKI_KVM_RUN:
       break;
 
-   case VKI_EVIOCSSUSPENDBLOCK:
-      break;
-
    default:
       /* EVIOC* are variable length and return size written on success */
       switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
@@ -5657,15 +5634,6 @@
    /* END generic/emulator specific ioctls */
 
 
-#  elif defined(ANDROID_HARDWARE_nexus_10)
-
-   /* undocumented ioctl ids noted on the device */
-   if (ARG2 >= 0xc0108000 && ARG2 <= 0xc1e8820b && ARG3 != 0) {
-      int size = (ARG2 >> 16) & 0x3fff;
-      POST_MEM_WRITE(ARG3, size);
-   }
-
-
 #  else /* no ANDROID_HARDWARE_anything defined */
 
 #   warning ""
@@ -5674,7 +5642,6 @@
 #   warning "building for.  Currently known values are"
 #   warning ""
 #   warning "   ANDROID_HARDWARE_nexus_s       Samsung Nexus S"
-#   warning "   ANDROID_HARDWARE_nexus_10      Samsung Nexus 10"
 #   warning "   ANDROID_HARDWARE_generic       Generic device (eg, Pandaboard)"
 #   warning "   ANDROID_HARDWARE_emulator      x86 or arm emulator"
 #   warning ""
@@ -6557,10 +6524,6 @@
    case VKI_KVM_S390_INITIAL_RESET:
       break;
 
-   case VKI_EVIOCSSUSPENDBLOCK:
-      POST_MEM_WRITE( ARG3, sizeof(int) );
-      break;
-
    default:
       /* EVIOC* are variable length and return size written on success */
       switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
diff --git a/main/include/vki/vki-linux.h b/main/include/vki/vki-linux.h
index 8cefd8f..c18195e 100644
--- a/main/include/vki/vki-linux.h
+++ b/main/include/vki/vki-linux.h
@@ -2813,8 +2813,6 @@
 
 #define VKI_EVIOCGBIT(ev,len)	_VKI_IOC(_VKI_IOC_READ, 'E', 0x20 + ev, len)	/* get event bits */
 
-#define VKI_EVIOCSSUSPENDBLOCK	_VKI_IOW('E', 0x91, int)	/* set suspend block enable */
-
 /*
  * Event types
  */