Index: lib/libc/aarch64/string/Makefile.inc =================================================================== --- lib/libc/aarch64/string/Makefile.inc +++ lib/libc/aarch64/string/Makefile.inc @@ -1,20 +1,48 @@ # $FreeBSD$ # -# String handling from the Cortex Strings library -# https://git.linaro.org/toolchain/cortex-strings.git +# String handling from the Arm Optimized Routines +# https://github.com/ARM-software/optimized-routines # -.PATH: ${SRCTOP}/contrib/cortex-strings/src/aarch64 +.PATH: ${SRCTOP}/contrib/arm-optimized-routines/string/aarch64 MDSRCS+= \ memchr.S \ memcmp.S \ memcpy.S \ - memmove.S \ + memrchr.S \ memset.S \ + stpcpy.S \ strchr.S \ + strchrnul.S \ strcmp.S \ strcpy.S \ strlen.S \ strncmp.S \ - strnlen.S + strnlen.S \ + strrchr.S + +# memmove is implementated as memcpy. Remove it from MISRCS to not conflict. +MISRCS := ${MISRCS:Nmemmove.c} + +# +# The functions have an internal name that needs to be fixed so it is the +# correct function name. When we support SVE and MTE we may want to use an +# ifunc to decide which implementation to call. +# +CFLAGS.memchr.S += -D__memchr_aarch64=memchr +CFLAGS.memcmp.S += -D__memcmp_aarch64=memcmp +# memcpy is implemented as memmove +CFLAGS.memcpy.S += -D__memcpy_aarch64=memcpy +CFLAGS.memcpy.S += -D__memmove_aarch64=memmove +CFLAGS.memrchr.S += -D__memrchr_aarch64=memrchr +CFLAGS.memset.S += -D__memset_aarch64=memset +CFLAGS.stpcpy.S += -D__stpcpy_aarch64=stpcpy +CFLAGS.strchr.S += -D__strchr_aarch64=strchr +CFLAGS.strchrnul.S += -D__strchrnul_aarch64=strchrnul +CFLAGS.strcmp.S += -D__strcmp_aarch64=strcmp +CFLAGS.strcpy.S += -D__strcpy_aarch64=strcpy +CFLAGS.strlen.S += -D__strlen_aarch64=strlen +CFLAGS.strncmp.S += -D__strncmp_aarch64=strncmp +CFLAGS.strnlen.S += -D__strnlen_aarch64=strnlen +CFLAGS.strrchr.S += -D__strrchr_aarch64=strrchr