Merge "Add generic arm non-neon memmove."
diff --git a/libc/Android.bp b/libc/Android.bp
index eac4414..00686ac 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -2022,7 +2022,7 @@
     defaults: ["crt_defaults"],
 }
 
-preprocessed_ndk_headers {
+versioned_ndk_headers {
     name: "common_libc",
     from: "include",
     to: "",
diff --git a/libc/kernel/tools/generate_uapi_headers.sh b/libc/kernel/tools/generate_uapi_headers.sh
index 575da31..5bf1cf3 100755
--- a/libc/kernel/tools/generate_uapi_headers.sh
+++ b/libc/kernel/tools/generate_uapi_headers.sh
@@ -24,9 +24,9 @@
 ###  Options:
 ###   --skip-generation
 ###     Skip the step that generates all of the include files.
-###   --download-kernel
+###   --download-kernel <VERSION>
 ###     Automatically create a temporary git repository and check out the
-###     Android kernel source code.
+###     linux kernel source code for the given version.
 ###   --use-kernel-dir <DIR>
 ###     Do not check out the kernel source, use the kernel directory
 ###     pointed to by <DIR>.
@@ -39,7 +39,8 @@
 
 TMPDIR=""
 ANDROID_DIR=""
-KERNEL_VERSION="android-3.10"
+KERNEL_VERSION=""
+KERNEL_REPO="git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git"
 KERNEL_DIR=""
 KERNEL_DOWNLOAD=0
 ARCH_LIST=("arm" "arm64" "mips" "x86")
@@ -142,6 +143,12 @@
       SKIP_GENERATION=1
       ;;
     "--download-kernel")
+      if [[ $# -lt 2 ]]; then
+        echo "--download-kernel requires an argument."
+        exit 1
+      fi
+      shift
+      KERNEL_VERSION="$1"
       KERNEL_DOWNLOAD=1
       ;;
     "--use-kernel-dir")
@@ -191,27 +198,15 @@
   exit 1
 fi
 
-if [[ -d "${KERNEL_DIR}/linux-stable" ]]; then
-  src_dir="linux-stable"
-else
-  src_dir="common"
-fi
-
-if [[ ${VERIFY_HEADERS_ONLY} -eq 1 ]]; then
-  # Verify if modified headers have changed.
-  verify_modified_hdrs "${KERNEL_DIR}/${src_dir}/include/scsi" \
-                       "${ANDROID_KERNEL_DIR}/scsi" \
-                       "${KERNEL_DIR}/${src_dir}"
-  exit 0
-fi
+src_dir="linux-stable"
 
 if [[ ${KERNEL_DOWNLOAD} -eq 1 ]]; then
   TMPDIR=$(mktemp -d /tmp/android_kernelXXXXXXXX)
   cd "${TMPDIR}"
-  echo "Fetching android kernel source ${KERNEL_VERSION}"
-  git clone https://android.googlesource.com/kernel/common.git
-  cd "${src_dir}"
-  git checkout "${KERNEL_VERSION}"
+  echo "Fetching linux kernel source ${KERNEL_VERSION}"
+  git clone ${KERNEL_REPO}
+  cd ${src_dir}
+  git checkout tags/"${KERNEL_VERSION}"
   KERNEL_DIR="${TMPDIR}"
 elif [[ "${KERNEL_DIR}" == "" ]]; then
   echo "Must specify one of --use-kernel-dir or --download-kernel."
@@ -223,6 +218,14 @@
   cd "${KERNEL_DIR}/${src_dir}"
 fi
 
+if [[ ${VERIFY_HEADERS_ONLY} -eq 1 ]]; then
+  # Verify if modified headers have changed.
+  verify_modified_hdrs "${KERNEL_DIR}/${src_dir}/include/scsi" \
+                       "${ANDROID_KERNEL_DIR}/scsi" \
+                       "${KERNEL_DIR}/${src_dir}"
+  exit 0
+fi
+
 if [[ ${SKIP_GENERATION} -eq 0 ]]; then
   # Clean up any leftover headers.
   make distclean
@@ -249,7 +252,7 @@
           "${ANDROID_KERNEL_DIR}/uapi/linux" "no-copy-dirs"
 
 # Remove ion.h, it's not fully supported by the upstream kernel (see b/77976082).
-rm "${ANDROID_KERNEL_DIR}/uapi/linux/ion.h"
+rm -f "${ANDROID_KERNEL_DIR}/uapi/linux/ion.h"
 
 # Copy the generated headers.
 copy_hdrs "${KERNEL_DIR}/${src_dir}/include/generated/uapi" \
@@ -279,3 +282,4 @@
 verify_modified_hdrs "${KERNEL_DIR}/${src_dir}/include/scsi" \
                      "${ANDROID_KERNEL_DIR}/scsi" \
                      "${KERNEL_DIR}/${src_dir}"
+echo "Headers updated."