merge 101304

llvm-svn: 101307
diff --git a/llvm-gcc-4.2/gcc/config/arm/arm.h b/llvm-gcc-4.2/gcc/config/arm/arm.h
index 8689153..39cee4f 100644
--- a/llvm-gcc-4.2/gcc/config/arm/arm.h
+++ b/llvm-gcc-4.2/gcc/config/arm/arm.h
@@ -3525,7 +3525,9 @@
   if (TARGET_SOFT_FLOAT)                               \
     argvec.push_back("-soft-float");                   \
   if (TARGET_HARD_FLOAT_ABI)                           \
-    argvec.push_back("-float-abi=hard");
+    argvec.push_back("-float-abi=hard");               \
+  if (flag_mkernel || flag_apple_kext) \
+    argvec.push_back("-arm-long-calls");
 
 /* Doing struct copy by partial-word loads and stores is not a good idea on ARM. */
 #define TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY 4