From: Szabolcs Nagy Date: Thu, 17 Dec 2020 10:03:05 +0000 (+0000) Subject: aarch64: use PTR_ARG and SIZE_ARG instead of DELOUSE X-Git-Tag: glibc-2.33~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45b1e17e9150dbd9ac2d578579063fbfa8e1b327;p=thirdparty%2Fglibc.git aarch64: use PTR_ARG and SIZE_ARG instead of DELOUSE DELOUSE was added to asm code to make them compatible with non-LP64 ABIs, but it is an unfortunate name and the code was not compatible with ABIs where pointer and size_t are different. Glibc currently only supports the LP64 ABI so these macros are not really needed or tested, but for now the name is changed to be more meaningful instead of removing them completely. Some DELOUSE macros were dropped: clone, strlen and strnlen used it unnecessarily. The out of tree ILP32 patches are currently not maintained and will likely need a rework to rebase them on top of the time64 changes. --- diff --git a/sysdeps/aarch64/__longjmp.S b/sysdeps/aarch64/__longjmp.S index f9060776b46..601dbff483c 100644 --- a/sysdeps/aarch64/__longjmp.S +++ b/sysdeps/aarch64/__longjmp.S @@ -46,7 +46,7 @@ ENTRY (__longjmp) cfi_offset(d14, JB_D14<<3) cfi_offset(d15, JB_D15<<3) - DELOUSE (0) + PTR_ARG (0) ldp x19, x20, [x0, #JB_X19<<3] ldp x21, x22, [x0, #JB_X21<<3] diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S index db8a064322e..1666a1dd347 100644 --- a/sysdeps/aarch64/dl-tlsdesc.S +++ b/sysdeps/aarch64/dl-tlsdesc.S @@ -75,7 +75,7 @@ .align 2 _dl_tlsdesc_return: BTI_C - DELOUSE (0) + PTR_ARG (0) ldr PTR_REG (0), [x0, #PTR_SIZE] RET cfi_endproc @@ -99,7 +99,7 @@ _dl_tlsdesc_undefweak: BTI_C str x1, [sp, #-16]! cfi_adjust_cfa_offset (16) - DELOUSE (0) + PTR_ARG (0) ldr PTR_REG (0), [x0, #PTR_SIZE] mrs x1, tpidr_el0 sub PTR_REG (0), PTR_REG (0), PTR_REG (1) @@ -145,7 +145,7 @@ _dl_tlsdesc_undefweak: .align 2 _dl_tlsdesc_dynamic: BTI_C - DELOUSE (0) + PTR_ARG (0) /* Save just enough registers to support fast path, if we fall into slow path we will save additional registers. */ diff --git a/sysdeps/aarch64/memchr.S b/sysdeps/aarch64/memchr.S index 23f30f61b22..13db282bea3 100644 --- a/sysdeps/aarch64/memchr.S +++ b/sysdeps/aarch64/memchr.S @@ -61,8 +61,8 @@ string, counting trailing zeros identifies exactly which byte matched. */ ENTRY (MEMCHR) - DELOUSE (0) - DELOUSE (2) + PTR_ARG (0) + SIZE_ARG (2) bic src, srcin, 15 cbz cntin, L(nomatch) ld1 {vdata.16b}, [src] diff --git a/sysdeps/aarch64/memcmp.S b/sysdeps/aarch64/memcmp.S index 827f54f99e5..5176aeac8dc 100644 --- a/sysdeps/aarch64/memcmp.S +++ b/sysdeps/aarch64/memcmp.S @@ -42,9 +42,9 @@ #define tmp2 x8 ENTRY_ALIGN (memcmp, 6) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) subs limit, limit, 16 b.lo L(less16) diff --git a/sysdeps/aarch64/memcpy.S b/sysdeps/aarch64/memcpy.S index e0b4c4502ff..cfc1c75b41c 100644 --- a/sysdeps/aarch64/memcpy.S +++ b/sysdeps/aarch64/memcpy.S @@ -73,9 +73,9 @@ */ ENTRY_ALIGN (MEMCPY, 6) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) add srcend, src, count add dstend, dstin, count @@ -209,9 +209,9 @@ END (MEMCPY) libc_hidden_builtin_def (MEMCPY) ENTRY_ALIGN (MEMMOVE, 4) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) add srcend, src, count add dstend, dstin, count diff --git a/sysdeps/aarch64/memrchr.S b/sysdeps/aarch64/memrchr.S index c25f4309702..bdd899f970b 100644 --- a/sysdeps/aarch64/memrchr.S +++ b/sysdeps/aarch64/memrchr.S @@ -59,8 +59,8 @@ string, counting trailing zeros identifies exactly which byte matched. */ ENTRY (__memrchr) - DELOUSE (0) - DELOUSE (2) + PTR_ARG (0) + SIZE_ARG (2) add end, srcin, cntin sub endm1, end, 1 bic src, endm1, 15 diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S index ac577f1660e..7a472fd8a56 100644 --- a/sysdeps/aarch64/memset.S +++ b/sysdeps/aarch64/memset.S @@ -31,8 +31,8 @@ ENTRY_ALIGN (MEMSET, 6) - DELOUSE (0) - DELOUSE (2) + PTR_ARG (0) + SIZE_ARG (2) dup v0.16B, valw add dstend, dstin, count diff --git a/sysdeps/aarch64/multiarch/memchr_nosimd.S b/sysdeps/aarch64/multiarch/memchr_nosimd.S index 41ce10eb32a..3045b49802b 100644 --- a/sysdeps/aarch64/multiarch/memchr_nosimd.S +++ b/sysdeps/aarch64/multiarch/memchr_nosimd.S @@ -64,8 +64,8 @@ ENTRY_ALIGN (MEMCHR, 6) - DELOUSE (0) - DELOUSE (2) + PTR_ARG (0) + SIZE_ARG (2) /* Do not dereference srcin if no bytes to compare. */ cbz cntin, L(none_chr) diff --git a/sysdeps/aarch64/multiarch/memcpy_advsimd.S b/sysdeps/aarch64/multiarch/memcpy_advsimd.S index 48bb6d7ca42..9d39ad8f318 100644 --- a/sysdeps/aarch64/multiarch/memcpy_advsimd.S +++ b/sysdeps/aarch64/multiarch/memcpy_advsimd.S @@ -64,9 +64,9 @@ from the end. */ ENTRY (__memcpy_simd) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) add srcend, src, count add dstend, dstin, count @@ -181,9 +181,9 @@ libc_hidden_builtin_def (__memcpy_simd) ENTRY (__memmove_simd) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) add srcend, src, count add dstend, dstin, count diff --git a/sysdeps/aarch64/multiarch/memcpy_falkor.S b/sysdeps/aarch64/multiarch/memcpy_falkor.S index 8dfc2c759f5..bebc16b466f 100644 --- a/sysdeps/aarch64/multiarch/memcpy_falkor.S +++ b/sysdeps/aarch64/multiarch/memcpy_falkor.S @@ -73,9 +73,9 @@ #if IS_IN (libc) ENTRY_ALIGN (__memcpy_falkor, 6) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) cmp count, 32 add srcend, src, count @@ -218,9 +218,9 @@ libc_hidden_builtin_def (__memcpy_falkor) ENTRY_ALIGN (__memmove_falkor, 6) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) cmp count, 32 add srcend, src, count diff --git a/sysdeps/aarch64/multiarch/memcpy_thunderx.S b/sysdeps/aarch64/multiarch/memcpy_thunderx.S index e9407571b5e..c04b17346b7 100644 --- a/sysdeps/aarch64/multiarch/memcpy_thunderx.S +++ b/sysdeps/aarch64/multiarch/memcpy_thunderx.S @@ -81,9 +81,9 @@ ENTRY_ALIGN (MEMMOVE, 6) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) sub tmp1, dstin, src cmp count, 96 @@ -95,9 +95,9 @@ END (MEMMOVE) libc_hidden_builtin_def (MEMMOVE) ENTRY (MEMCPY) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) prfm PLDL1KEEP, [src] add srcend, src, count diff --git a/sysdeps/aarch64/multiarch/memcpy_thunderx2.S b/sysdeps/aarch64/multiarch/memcpy_thunderx2.S index 68e99455c8b..0096c4ce6f7 100644 --- a/sysdeps/aarch64/multiarch/memcpy_thunderx2.S +++ b/sysdeps/aarch64/multiarch/memcpy_thunderx2.S @@ -97,9 +97,9 @@ ENTRY_ALIGN (MEMMOVE, 6) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) add srcend, src, count cmp count, 16 @@ -127,9 +127,9 @@ libc_hidden_builtin_def (MEMMOVE) .p2align 4 ENTRY (MEMCPY) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) add srcend, src, count cmp count, 16 diff --git a/sysdeps/aarch64/multiarch/memset_base64.S b/sysdeps/aarch64/multiarch/memset_base64.S index 8f85cd1caf6..aac05be308d 100644 --- a/sysdeps/aarch64/multiarch/memset_base64.S +++ b/sysdeps/aarch64/multiarch/memset_base64.S @@ -36,8 +36,8 @@ ENTRY_ALIGN (MEMSET, 6) - DELOUSE (0) - DELOUSE (2) + PTR_ARG (0) + SIZE_ARG (2) bfi valw, valw, 8, 8 bfi valw, valw, 16, 16 diff --git a/sysdeps/aarch64/multiarch/memset_kunpeng.S b/sysdeps/aarch64/multiarch/memset_kunpeng.S index 8e051d4fd1f..793a659b48c 100644 --- a/sysdeps/aarch64/multiarch/memset_kunpeng.S +++ b/sysdeps/aarch64/multiarch/memset_kunpeng.S @@ -31,8 +31,8 @@ ENTRY_ALIGN (MEMSET, 6) - DELOUSE (0) - DELOUSE (2) + PTR_ARG (0) + SIZE_ARG (2) dup v0.16B, valw add dstend, dstin, count diff --git a/sysdeps/aarch64/multiarch/strlen_asimd.S b/sysdeps/aarch64/multiarch/strlen_asimd.S index bc5a4eaf779..154a28811e2 100644 --- a/sysdeps/aarch64/multiarch/strlen_asimd.S +++ b/sysdeps/aarch64/multiarch/strlen_asimd.S @@ -86,7 +86,7 @@ character, return the length, if not, continue in the main loop. */ ENTRY (__strlen_asimd) - DELOUSE (0) + PTR_ARG (0) and tmp1, srcin, MIN_PAGE_SIZE - 1 cmp tmp1, MIN_PAGE_SIZE - 32 diff --git a/sysdeps/aarch64/setjmp.S b/sysdeps/aarch64/setjmp.S index 28fdd3f46a4..57e5982cf7c 100644 --- a/sysdeps/aarch64/setjmp.S +++ b/sysdeps/aarch64/setjmp.S @@ -33,7 +33,7 @@ END (_setjmp) libc_hidden_def (_setjmp) ENTRY (__sigsetjmp) - DELOUSE (0) + PTR_ARG (0) 1: stp x19, x20, [x0, #JB_X19<<3] diff --git a/sysdeps/aarch64/strchr.S b/sysdeps/aarch64/strchr.S index fd1b9416663..5d21ca79386 100644 --- a/sysdeps/aarch64/strchr.S +++ b/sysdeps/aarch64/strchr.S @@ -56,7 +56,7 @@ string, counting trailing zeros identifies exactly which byte matched. */ ENTRY (strchr) - DELOUSE (0) + PTR_ARG (0) bic src, srcin, 15 dup vrepchr.16b, chrin ld1 {vdata.16b}, [src] diff --git a/sysdeps/aarch64/strchrnul.S b/sysdeps/aarch64/strchrnul.S index 1ae4598f821..cc9d2b9bbb3 100644 --- a/sysdeps/aarch64/strchrnul.S +++ b/sysdeps/aarch64/strchrnul.S @@ -54,7 +54,7 @@ string, counting trailing zeros identifies exactly which byte matched. */ ENTRY (__strchrnul) - DELOUSE (0) + PTR_ARG (0) bic src, srcin, 15 dup vrepchr.16b, chrin ld1 {vdata.16b}, [src] diff --git a/sysdeps/aarch64/strcmp.S b/sysdeps/aarch64/strcmp.S index 77d7218deaa..63b8390b4a8 100644 --- a/sysdeps/aarch64/strcmp.S +++ b/sysdeps/aarch64/strcmp.S @@ -62,8 +62,8 @@ NUL too in big-endian, byte-reverse the data before the NUL check. */ ENTRY(strcmp) - DELOUSE (0) - DELOUSE (1) + PTR_ARG (0) + PTR_ARG (1) sub off2, src2, src1 mov zeroones, REP8_01 and tmp, src1, 7 diff --git a/sysdeps/aarch64/strcpy.S b/sysdeps/aarch64/strcpy.S index 80b16a09316..2926b6d2d7f 100644 --- a/sysdeps/aarch64/strcpy.S +++ b/sysdeps/aarch64/strcpy.S @@ -73,8 +73,8 @@ string, counting trailing zeros identifies exactly which byte matched. */ ENTRY (STRCPY) - DELOUSE (0) - DELOUSE (1) + PTR_ARG (0) + PTR_ARG (1) bic src, srcin, 15 mov wtmp, 0xf00f ld1 {vdata.16b}, [src] diff --git a/sysdeps/aarch64/strlen.S b/sysdeps/aarch64/strlen.S index e314fffed67..a4a30928ee4 100644 --- a/sysdeps/aarch64/strlen.S +++ b/sysdeps/aarch64/strlen.S @@ -54,8 +54,7 @@ string, counting trailing zeros identifies exactly which byte matched. */ ENTRY (STRLEN) - DELOUSE (0) - DELOUSE (1) + PTR_ARG (0) bic src, srcin, 15 mov wtmp, 0xf00f ld1 {vdata.16b}, [src] diff --git a/sysdeps/aarch64/strnlen.S b/sysdeps/aarch64/strnlen.S index 086a5c7e994..5699105e955 100644 --- a/sysdeps/aarch64/strnlen.S +++ b/sysdeps/aarch64/strnlen.S @@ -55,9 +55,8 @@ #define REP8_80 0x8080808080808080 ENTRY_ALIGN_AND_PAD (__strnlen, 6, 9) - DELOUSE (0) - DELOUSE (1) - DELOUSE (2) + PTR_ARG (0) + SIZE_ARG (1) cbz limit, L(hit_limit) mov zeroones, #REP8_01 bic src, srcin, #15 diff --git a/sysdeps/aarch64/strrchr.S b/sysdeps/aarch64/strrchr.S index a9b2bf47c24..878fa16b21f 100644 --- a/sysdeps/aarch64/strrchr.S +++ b/sysdeps/aarch64/strrchr.S @@ -59,7 +59,7 @@ if the relevant byte matched the NUL end of string. */ ENTRY(strrchr) - DELOUSE (0) + PTR_ARG (0) bic src, srcin, 15 dup vrepchr.16b, chrin mov wtmp, 0x3003 diff --git a/sysdeps/aarch64/sysdep.h b/sysdeps/aarch64/sysdep.h index 2d802db0083..e3e2f5f44d7 100644 --- a/sysdeps/aarch64/sysdep.h +++ b/sysdeps/aarch64/sysdep.h @@ -25,12 +25,14 @@ # define AARCH64_R(NAME) R_AARCH64_ ## NAME # define PTR_REG(n) x##n # define PTR_LOG_SIZE 3 -# define DELOUSE(n) +# define PTR_ARG(n) +# define SIZE_ARG(n) #else # define AARCH64_R(NAME) R_AARCH64_P32_ ## NAME # define PTR_REG(n) w##n # define PTR_LOG_SIZE 2 -# define DELOUSE(n) mov w##n, w##n +# define PTR_ARG(n) mov w##n, w##n +# define SIZE_ARG(n) mov w##n, w##n #endif #define PTR_SIZE (1<