Merge "Start to add X86/SSE2+ optimized clcore library"
diff --git a/include/bcc/Support/TargetCompilerConfigs.h b/include/bcc/Support/TargetCompilerConfigs.h
index 181fd80..c1468fd 100644
--- a/include/bcc/Support/TargetCompilerConfigs.h
+++ b/include/bcc/Support/TargetCompilerConfigs.h
@@ -47,7 +47,9 @@
 #if defined(PROVIDE_MIPS_CODEGEN)
 class MipsCompilerConfig : public CompilerConfig {
 public:
-  MipsCompilerConfig() : CompilerConfig(DEFAULT_MIPS_TRIPLE_STRING) {}
+  MipsCompilerConfig() : CompilerConfig(DEFAULT_MIPS_TRIPLE_STRING) {
+    setRelocationModel(llvm::Reloc::Static);
+  }
 };
 #endif // defined(PROVIDE_MIPS_CODEGEN)
 
diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk
index d5a4573..1666f87 100644
--- a/lib/ExecutionEngine/Android.mk
+++ b/lib/ExecutionEngine/Android.mk
@@ -48,6 +48,10 @@
 
 LOCAL_SRC_FILES := $(libbcc_executionengine_SRC_FILES)
 
+ifeq ($(strip $(TARGET_CPU_VARIANT)),cortex-a15)
+LOCAL_CFLAGS += -DHAS_HW_DIV
+endif
+
 include $(LIBBCC_DEVICE_BUILD_MK)
 include $(LIBBCC_GEN_CONFIG_MK)
 include $(LLVM_DEVICE_BUILD_MK)
diff --git a/libbcc-device-build.mk b/libbcc-device-build.mk
index a7f4d08..7cf635f 100644
--- a/libbcc-device-build.mk
+++ b/libbcc-device-build.mk
@@ -45,9 +45,6 @@
   ifeq ($(ARCH_ARM_HAVE_NEON),true)
     LOCAL_CFLAGS += -DARCH_ARM_HAVE_NEON
   endif
-  ifeq ($(ARCH_ARM_HAVE_THUMB_SUPPORT),true)
-    LOCAL_CFLAGS += -DARCH_ARM_HAVE_THUMB_SUPPORT
-  endif
 else
   ifeq ($(TARGET_ARCH),mips)
     LOCAL_CFLAGS += -DFORCE_MIPS_CODEGEN
diff --git a/runtime/lib/divsi3.c b/runtime/lib/divsi3.c
index de1700a..3ab82f0 100644
--- a/runtime/lib/divsi3.c
+++ b/runtime/lib/divsi3.c
@@ -12,7 +12,10 @@
  * ===----------------------------------------------------------------------===
  */
 
-#if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) // gcc >= 4.8 implements this in libgcc
+#if !defined(__GNUC__) || __GNUC__ < 4 || \
+    (__GNUC__ == 4 && __GNUC_MINOR__ < 8 && !defined(HAS_HW_DIV))
+// gcc >= 4.8 implements this in libgcc
+// gcc 4.7 also implements this in libgcc with -mcpu=cortex-a15
 #include "int_lib.h"
 
 su_int __udivsi3(su_int n, su_int d);