aarch64/strncmp: Unbreak builds with old binutils
authorSiddhesh Poyarekar <siddhesh@sourceware.org>
Wed, 14 Mar 2018 13:21:05 +0000 (18:51 +0530)
committerSiddhesh Poyarekar <siddhesh@sourceware.org>
Wed, 14 Mar 2018 13:21:05 +0000 (18:51 +0530)
Binutils 2.26.* and older do not support moves with shifted registers,
so use a separate shift instruction instead.

ChangeLog
sysdeps/aarch64/strncmp.S

index 4153cb2..3523cfd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-14  Siddhesh Poyarekar  <siddhesh@sourceware.org>
+
+       * sysdeps/aarch64/strncmp.S (strncmp): Use a separate shift
+       instruction to unbreak builds with binutils 2.26 and older.
+
 2018-03-13  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
        * sysdeps/aarch64/strncmp.S (count): New macro.
index 20c7ec8..1dc8b79 100644 (file)
@@ -208,13 +208,15 @@ L(done):
        /* Align the SRC1 to a dword by doing a bytewise compare and then do
           the dword loop.  */
 L(try_misaligned_words):
-       mov     limit_wd, limit, lsr #3
+       mov     limit_wd, limit
+       lsr     limit_wd, limit_wd, #3
        cbz     count, L(do_misaligned)
 
        neg     count, count
        and     count, count, #7
        sub     limit, limit, count
-       mov     limit_wd, limit, lsr #3
+       mov     limit_wd, limit
+       lsr     limit_wd, limit_wd, #3
 
 L(page_end_loop):
        ldrb    data1w, [src1], #1