From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dedi548.your-server.de (dedi548.your-server.de [85.10.215.148]) by sourceware.org (Postfix) with ESMTPS id 17B793858428 for ; Fri, 27 Oct 2023 18:18:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 17B793858428 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embedded-brains.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embedded-brains.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 17B793858428 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=85.10.215.148 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698430722; cv=none; b=irgzHi4McvjMzP+JU2Fz5y6O7HRW9euE20KAbIUBhUydpdaW3daETr41YAOE712WCUGuz+Rey3LUouGlMLR3FzwZ/ZUbvrZCyWi51FRgQcob+WaTXfct7kM93D7aFAl7zE/Q0AJ6demjkCyD6V8LyKJ0xrgim6LOHxOAFGKgF7c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698430722; c=relaxed/simple; bh=sS2nLafMC1cs99IREBw+JQpBhVIunG3J+1bVRJzmVJM=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=YIELT0xiqS7WvwDH08t9mbD+1mX292xMVe6gAH0DQYCa4dHp0F0+XjjeDNsSJZvjEvBB3XfFj0f9Q3ojMoNZf7gMUDPHb+EjK79enK5xgEr5YPAD87eOhKEVByU4ihMsWOCNebsGzhKmmZqKAnrdDAEdQJT9UzBbxT1d1ehp4U4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from sslproxy04.your-server.de ([78.46.152.42]) by dedi548.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qwRPo-000CnQ-Nn for newlib@sourceware.org; Fri, 27 Oct 2023 20:18:37 +0200 Received: from [82.100.198.138] (helo=mail.embedded-brains.de) by sslproxy04.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qwRPo-000Tee-Jy for newlib@sourceware.org; Fri, 27 Oct 2023 20:18:36 +0200 Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 482974801D6 for ; Fri, 27 Oct 2023 20:18:36 +0200 (CEST) Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavis, port 10032) with ESMTP id pw9MOWS7NELs for ; Fri, 27 Oct 2023 20:18:35 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 6C9CE4801D9 for ; Fri, 27 Oct 2023 20:18:35 +0200 (CEST) X-Virus-Scanned: amavis at zimbra.eb.localhost Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavis, port 10026) with ESMTP id 0uf14AmDa44D for ; Fri, 27 Oct 2023 20:18:35 +0200 (CEST) Received: from zimbra.eb.localhost (unknown [192.168.96.242]) by mail.embedded-brains.de (Postfix) with ESMTPSA id 3EA4D4801D6 for ; Fri, 27 Oct 2023 20:18:35 +0200 (CEST) From: Sebastian Huber To: newlib@sourceware.org Subject: [PATCH v2] aarch64: Remove duplicated optimized memmove() Date: Fri, 27 Oct 2023 20:18:33 +0200 Message-Id: <20231027181833.28871-1-sebastian.huber@embedded-brains.de> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authenticated-Sender: smtp-embedded@poldi-networks.de X-Virus-Scanned: Clear (ClamAV 0.103.10/27074/Fri Oct 27 09:58:36 2023) X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The optimized aarch64/memcpy.S already provides a memmove() implementatio= n. --- v2: Rename memmove-stub.c in memmove.c to make the build system happy. newlib/Makefile.in | 42 ++--- newlib/libc/machine/aarch64/Makefile.inc | 3 +- newlib/libc/machine/aarch64/memmove.S | 155 ------------------ .../aarch64/{memmove-stub.c =3D> memmove.c} | 2 +- 4 files changed, 13 insertions(+), 189 deletions(-) delete mode 100644 newlib/libc/machine/aarch64/memmove.S rename newlib/libc/machine/aarch64/{memmove-stub.c =3D> memmove.c} (98%) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 4cb3534cc4..4f0b3bf644 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -594,8 +594,7 @@ check_PROGRAMS =3D @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcmp.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcpy-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcpy.S \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove-stub.c \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove.S \ +@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memset-stub.c \ @@ -1847,7 +1846,6 @@ am__objects_51 =3D libc/ssp/libc_a-chk_fail.$(OBJEX= T) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcmp.$(OB= JEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcpy-stub= .$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcpy.$(OB= JEXT) \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove-stu= b.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove.$(O= BJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr-stu= b.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr.$(O= BJEXT) \ @@ -8022,9 +8020,6 @@ libc/machine/aarch64/libc_a-memcpy-stub.$(OBJEXT): = \ libc/machine/aarch64/libc_a-memcpy.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) -libc/machine/aarch64/libc_a-memmove-stub.$(OBJEXT): \ - libc/machine/aarch64/$(am__dirstamp) \ - libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) libc/machine/aarch64/libc_a-memmove.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) @@ -12738,7 +12733,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc= _a-memcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc= _a-memcpy-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc= _a-memcpy.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc= _a-memmove-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc= _a-memmove.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc= _a-memrchr-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc= _a-memrchr.Po@am__quote@ @@ -16709,20 +16703,6 @@ libc/machine/aarch64/libc_a-memcpy.obj: libc/mac= hine/aarch64/memcpy.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) $(= depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAUL= T_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS= ) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memcpy.obj `if test -f '= libc/machine/aarch64/memcpy.S'; then $(CYGPATH_W) 'libc/machine/aarch64/m= emcpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memcpy.S'; fi= ` =20 -libc/machine/aarch64/libc_a-memmove.o: libc/machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) = $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAG= S) -MT libc/machine/aarch64/libc_a-memmove.o -MD -MP -MF libc/machine/aar= ch64/$(DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmo= ve.o `test -f 'libc/machine/aarch64/memmove.S' || echo '$(srcdir)/'`libc/= machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR= )/libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source=3D'libc/machine/= aarch64/memmove.S' object=3D'libc/machine/aarch64/libc_a-memmove.o' libto= ol=3Dno @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) $(= depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAUL= T_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS= ) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc= /machine/aarch64/memmove.S' || echo '$(srcdir)/'`libc/machine/aarch64/mem= move.S - -libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) = $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAG= S) -MT libc/machine/aarch64/libc_a-memmove.obj -MD -MP -MF libc/machine/a= arch64/$(DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-mem= move.obj `if test -f 'libc/machine/aarch64/memmove.S'; then $(CYGPATH_W) = 'libc/machine/aarch64/memmove.S'; else $(CYGPATH_W) '$(srcdir)/libc/machi= ne/aarch64/memmove.S'; fi` -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR= )/libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source=3D'libc/machine/= aarch64/memmove.S' object=3D'libc/machine/aarch64/libc_a-memmove.obj' lib= tool=3Dno @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) $(= depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAUL= T_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS= ) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f = 'libc/machine/aarch64/memmove.S'; then $(CYGPATH_W) 'libc/machine/aarch64= /memmove.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.S'= ; fi` - libc/machine/aarch64/libc_a-memrchr.o: libc/machine/aarch64/memrchr.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) = $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAG= S) -MT libc/machine/aarch64/libc_a-memrchr.o -MD -MP -MF libc/machine/aar= ch64/$(DEPDIR)/libc_a-memrchr.Tpo -c -o libc/machine/aarch64/libc_a-memrc= hr.o `test -f 'libc/machine/aarch64/memrchr.S' || echo '$(srcdir)/'`libc/= machine/aarch64/memrchr.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR= )/libc_a-memrchr.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Po @@ -32993,19 +32973,19 @@ libc/machine/aarch64/libc_a-memcpy-stub.obj: li= bc/machine/aarch64/memcpy-stub.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depc= omp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLU= DES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS= ) -c -o libc/machine/aarch64/libc_a-memcpy-stub.obj `if test -f 'libc/mac= hine/aarch64/memcpy-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memc= py-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memcpy-stub= .c'; fi` =20 -libc/machine/aarch64/libc_a-memmove-stub.o: libc/machine/aarch64/memmove= -stub.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLU= DES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/m= achine/aarch64/libc_a-memmove-stub.o -MD -MP -MF libc/machine/aarch64/$(D= EPDIR)/libc_a-memmove-stub.Tpo -c -o libc/machine/aarch64/libc_a-memmove-= stub.o `test -f 'libc/machine/aarch64/memmove-stub.c' || echo '$(srcdir)/= '`libc/machine/aarch64/memmove-stub.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/= libc_a-memmove-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stu= b.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch= 64/memmove-stub.c' object=3D'libc/machine/aarch64/libc_a-memmove-stub.o' = libtool=3Dno @AMDEPBACKSLASH@ +libc/machine/aarch64/libc_a-memmove.o: libc/machine/aarch64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLU= DES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/m= achine/aarch64/libc_a-memmove.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR= )/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.o `test -f= 'libc/machine/aarch64/memmove.c' || echo '$(srcdir)/'`libc/machine/aarch= 64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/= libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch= 64/memmove.c' object=3D'libc/machine/aarch64/libc_a-memmove.o' libtool=3D= no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depc= omp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLU= DES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS= ) -c -o libc/machine/aarch64/libc_a-memmove-stub.o `test -f 'libc/machine= /aarch64/memmove-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmov= e-stub.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLU= DES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS= ) -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/machine/aarc= h64/memmove.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove.c =20 -libc/machine/aarch64/libc_a-memmove-stub.obj: libc/machine/aarch64/memmo= ve-stub.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLU= DES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/m= achine/aarch64/libc_a-memmove-stub.obj -MD -MP -MF libc/machine/aarch64/$= (DEPDIR)/libc_a-memmove-stub.Tpo -c -o libc/machine/aarch64/libc_a-memmov= e-stub.obj `if test -f 'libc/machine/aarch64/memmove-stub.c'; then $(CYGP= ATH_W) 'libc/machine/aarch64/memmove-stub.c'; else $(CYGPATH_W) '$(srcdir= )/libc/machine/aarch64/memmove-stub.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/= libc_a-memmove-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stu= b.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch= 64/memmove-stub.c' object=3D'libc/machine/aarch64/libc_a-memmove-stub.obj= ' libtool=3Dno @AMDEPBACKSLASH@ +libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLU= DES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/m= achine/aarch64/libc_a-memmove.obj -MD -MP -MF libc/machine/aarch64/$(DEPD= IR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.obj `if = test -f 'libc/machine/aarch64/memmove.c'; then $(CYGPATH_W) 'libc/machine= /aarch64/memmove.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/me= mmove.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/= libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch= 64/memmove.c' object=3D'libc/machine/aarch64/libc_a-memmove.obj' libtool=3D= no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depc= omp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLU= DES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS= ) -c -o libc/machine/aarch64/libc_a-memmove-stub.obj `if test -f 'libc/ma= chine/aarch64/memmove-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/me= mmove-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove-= stub.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLU= DES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS= ) -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/machine= /aarch64/memmove.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove.c'; = else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.c'; fi` =20 libc/machine/aarch64/libc_a-memrchr-stub.o: libc/machine/aarch64/memrchr= -stub.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLU= DES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/m= achine/aarch64/libc_a-memrchr-stub.o -MD -MP -MF libc/machine/aarch64/$(D= EPDIR)/libc_a-memrchr-stub.Tpo -c -o libc/machine/aarch64/libc_a-memrchr-= stub.o `test -f 'libc/machine/aarch64/memrchr-stub.c' || echo '$(srcdir)/= '`libc/machine/aarch64/memrchr-stub.c diff --git a/newlib/libc/machine/aarch64/Makefile.inc b/newlib/libc/machi= ne/aarch64/Makefile.inc index c749b0d575..1068d88ce8 100644 --- a/newlib/libc/machine/aarch64/Makefile.inc +++ b/newlib/libc/machine/aarch64/Makefile.inc @@ -5,8 +5,7 @@ libc_a_SOURCES +=3D \ %D%/memcmp.S \ %D%/memcpy-stub.c \ %D%/memcpy.S \ - %D%/memmove-stub.c \ - %D%/memmove.S \ + %D%/memmove.c \ %D%/memrchr-stub.c \ %D%/memrchr.S \ %D%/memset-stub.c \ diff --git a/newlib/libc/machine/aarch64/memmove.S b/newlib/libc/machine/= aarch64/memmove.S deleted file mode 100644 index 597a8c8e9e..0000000000 --- a/newlib/libc/machine/aarch64/memmove.S +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright (c) 2013, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions ar= e met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyrig= ht - notice, this list of conditions and the following disclaimer in= the - documentation and/or other materials provided with the distribu= tion. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote pro= ducts - derived from this software without specific prior written permi= ssion. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL= , - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. = */ - -/* - * Copyright (c) 2015 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in th= e - * documentation and/or other materials provided with the distributio= n. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMP= LIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDEN= TAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMI= TED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, O= R - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY O= F - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* Assumptions: - * - * ARMv8-a, AArch64, unaligned accesses - */ - -#if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) -/* See memmove-stub.c */ -#else - - .macro def_fn f p2align=3D0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -/* Parameters and result. */ -#define dstin x0 -#define src x1 -#define count x2 -#define srcend x3 -#define dstend x4 -#define tmp1 x5 -#define A_l x6 -#define A_h x7 -#define B_l x8 -#define B_h x9 -#define C_l x10 -#define C_h x11 -#define D_l x12 -#define D_h x13 -#define E_l count -#define E_h tmp1 - -/* All memmoves up to 96 bytes are done by memcpy as it supports overlap= s. - Larger backwards copies are also handled by memcpy. The only remainin= g - case is forward large copies. The destination is aligned, and an - unrolled loop processes 64 bytes per iteration. -*/ - -def_fn memmove, 6 - sub tmp1, dstin, src - cmp count, 96 - ccmp tmp1, count, 2, hi - b.hs memcpy - - cbz tmp1, 3f - add dstend, dstin, count - add srcend, src, count - - /* Align dstend to 16 byte alignment so that we don't cross cache line - boundaries on both loads and stores. There are at least 96 bytes - to copy, so copy 16 bytes unaligned and then align. The loop - copies 64 bytes per iteration and prefetches one iteration ahead. *= / - - and tmp1, dstend, 15 - ldp D_l, D_h, [srcend, -16] - sub srcend, srcend, tmp1 - sub count, count, tmp1 - ldp A_l, A_h, [srcend, -16] - stp D_l, D_h, [dstend, -16] - ldp B_l, B_h, [srcend, -32] - ldp C_l, C_h, [srcend, -48] - ldp D_l, D_h, [srcend, -64]! - sub dstend, dstend, tmp1 - subs count, count, 128 - b.ls 2f - nop -1: - stp A_l, A_h, [dstend, -16] - ldp A_l, A_h, [srcend, -16] - stp B_l, B_h, [dstend, -32] - ldp B_l, B_h, [srcend, -32] - stp C_l, C_h, [dstend, -48] - ldp C_l, C_h, [srcend, -48] - stp D_l, D_h, [dstend, -64]! - ldp D_l, D_h, [srcend, -64]! - subs count, count, 64 - b.hi 1b - - /* Write the last full set of 64 bytes. The remainder is at most 64 - bytes, so it is safe to always copy 64 bytes from the start even if - there is just 1 byte left. */ -2: - ldp E_l, E_h, [src, 48] - stp A_l, A_h, [dstend, -16] - ldp A_l, A_h, [src, 32] - stp B_l, B_h, [dstend, -32] - ldp B_l, B_h, [src, 16] - stp C_l, C_h, [dstend, -48] - ldp C_l, C_h, [src] - stp D_l, D_h, [dstend, -64] - stp E_l, E_h, [dstin, 48] - stp A_l, A_h, [dstin, 32] - stp B_l, B_h, [dstin, 16] - stp C_l, C_h, [dstin] -3: ret - - .size memmove, . - memmove -#endif diff --git a/newlib/libc/machine/aarch64/memmove-stub.c b/newlib/libc/mac= hine/aarch64/memmove.c similarity index 98% rename from newlib/libc/machine/aarch64/memmove-stub.c rename to newlib/libc/machine/aarch64/memmove.c index 8fa4ab9387..bc8255fb8b 100644 --- a/newlib/libc/machine/aarch64/memmove-stub.c +++ b/newlib/libc/machine/aarch64/memmove.c @@ -27,5 +27,5 @@ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) # include "../../string/memmove.c" #else -/* See memmove.S */ +/* See memcpy.S */ #endif --=20 2.35.3