2019-01-01 00:11:28 +00:00
|
|
|
/* Copyright (C) 2006-2019 Free Software Foundation, Inc.
|
2006-10-31 17:07:54 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
Contributed by MontaVista Software, Inc. (written by Nicolas Pitre)
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-03-09 23:56:38 +00:00
|
|
|
License along with the GNU C Library. If not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
2006-10-31 17:07:54 +00:00
|
|
|
|
2013-02-14 04:32:14 +00:00
|
|
|
/* Thumb requires excessive IT insns here. */
|
|
|
|
#define NO_THUMB
|
2006-10-31 17:07:54 +00:00
|
|
|
#include <sysdep.h>
|
2013-03-13 16:40:55 +00:00
|
|
|
#include <arm-features.h>
|
2006-10-31 17:07:54 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Data preload for architectures that support it (ARM V5TE and above)
|
|
|
|
*/
|
|
|
|
#if (!defined (__ARM_ARCH_2__) && !defined (__ARM_ARCH_3__) \
|
|
|
|
&& !defined (__ARM_ARCH_3M__) && !defined (__ARM_ARCH_4__) \
|
|
|
|
&& !defined (__ARM_ARCH_4T__) && !defined (__ARM_ARCH_5__) \
|
|
|
|
&& !defined (__ARM_ARCH_5T__))
|
|
|
|
#define PLD(code...) code
|
|
|
|
#else
|
|
|
|
#define PLD(code...)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This can be used to enable code to cacheline align the source pointer.
|
|
|
|
* Experiments on tested architectures (StrongARM and XScale) didn't show
|
|
|
|
* this a worthwhile thing to do. That might be different in the future.
|
|
|
|
*/
|
|
|
|
//#define CALGN(code...) code
|
|
|
|
#define CALGN(code...)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Endian independent macros for shifting bytes within registers.
|
|
|
|
*/
|
|
|
|
#ifndef __ARMEB__
|
2013-02-15 05:00:14 +00:00
|
|
|
#define PULL lsr
|
|
|
|
#define PUSH lsl
|
2006-10-31 17:07:54 +00:00
|
|
|
#else
|
2013-02-15 05:00:14 +00:00
|
|
|
#define PULL lsl
|
|
|
|
#define PUSH lsr
|
2006-10-31 17:07:54 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
.text
|
2013-03-11 23:44:31 +00:00
|
|
|
.syntax unified
|
2006-10-31 17:07:54 +00:00
|
|
|
|
|
|
|
/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
|
|
|
|
|
|
|
|
ENTRY(memcpy)
|
|
|
|
|
2013-02-15 05:00:14 +00:00
|
|
|
push {r0, r4, lr}
|
2010-03-26 18:12:56 +00:00
|
|
|
cfi_adjust_cfa_offset (12)
|
|
|
|
cfi_rel_offset (r4, 4)
|
|
|
|
cfi_rel_offset (lr, 8)
|
|
|
|
|
|
|
|
cfi_remember_state
|
2006-10-31 17:07:54 +00:00
|
|
|
|
|
|
|
subs r2, r2, #4
|
|
|
|
blt 8f
|
|
|
|
ands ip, r0, #3
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
PLD( pld [r1, #0] )
|
2006-10-31 17:07:54 +00:00
|
|
|
bne 9f
|
|
|
|
ands ip, r1, #3
|
|
|
|
bne 10f
|
|
|
|
|
|
|
|
1: subs r2, r2, #(28)
|
2013-02-15 05:00:14 +00:00
|
|
|
push {r5 - r8}
|
2010-03-26 18:12:56 +00:00
|
|
|
cfi_adjust_cfa_offset (16)
|
|
|
|
cfi_rel_offset (r5, 0)
|
|
|
|
cfi_rel_offset (r6, 4)
|
|
|
|
cfi_rel_offset (r7, 8)
|
|
|
|
cfi_rel_offset (r8, 12)
|
2006-10-31 17:07:54 +00:00
|
|
|
blt 5f
|
|
|
|
|
|
|
|
CALGN( ands ip, r1, #31 )
|
|
|
|
CALGN( rsb r3, ip, #32 )
|
2013-03-11 23:44:31 +00:00
|
|
|
CALGN( sbcsne r4, r3, r2 ) @ C is always set here
|
2006-10-31 17:07:54 +00:00
|
|
|
CALGN( bcs 2f )
|
|
|
|
CALGN( adr r4, 6f )
|
|
|
|
CALGN( subs r2, r2, r3 ) @ C gets set
|
2013-03-13 16:40:55 +00:00
|
|
|
#ifndef ARM_ALWAYS_BX
|
2013-03-13 19:36:53 +00:00
|
|
|
CALGN( add pc, r4, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2))
|
2013-03-13 16:40:55 +00:00
|
|
|
#else
|
2013-03-13 19:36:53 +00:00
|
|
|
CALGN( add r4, r4, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2))
|
2013-03-13 16:40:55 +00:00
|
|
|
CALGN( bx r4 )
|
|
|
|
#endif
|
2006-10-31 17:07:54 +00:00
|
|
|
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
PLD( pld [r1, #0] )
|
2006-10-31 17:07:54 +00:00
|
|
|
2: PLD( subs r2, r2, #96 )
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
PLD( pld [r1, #28] )
|
2006-10-31 17:07:54 +00:00
|
|
|
PLD( blt 4f )
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
PLD( pld [r1, #60] )
|
|
|
|
PLD( pld [r1, #92] )
|
2006-10-31 17:07:54 +00:00
|
|
|
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
3: PLD( pld [r1, #124] )
|
|
|
|
4: ldmia r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
|
2006-10-31 17:07:54 +00:00
|
|
|
subs r2, r2, #32
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
|
2006-10-31 17:07:54 +00:00
|
|
|
bge 3b
|
|
|
|
PLD( cmn r2, #96 )
|
|
|
|
PLD( bge 4b )
|
|
|
|
|
|
|
|
5: ands ip, r2, #28
|
|
|
|
rsb ip, ip, #32
|
2013-03-13 16:40:55 +00:00
|
|
|
#ifndef ARM_ALWAYS_BX
|
2013-03-13 19:36:53 +00:00
|
|
|
/* C is always clear here. */
|
|
|
|
addne pc, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
|
2006-10-31 17:07:54 +00:00
|
|
|
b 7f
|
2013-03-13 16:40:55 +00:00
|
|
|
#else
|
|
|
|
beq 7f
|
|
|
|
push {r10}
|
|
|
|
cfi_adjust_cfa_offset (4)
|
|
|
|
cfi_rel_offset (r10, 0)
|
2015-03-19 19:45:24 +00:00
|
|
|
0: add r10, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
|
|
|
|
/* If alignment is not perfect, then there will be some
|
|
|
|
padding (nop) instructions between this BX and label 6.
|
|
|
|
The computation above assumed that two instructions
|
|
|
|
later is exactly the right spot. */
|
|
|
|
add r10, #(6f - (0b + PC_OFS))
|
2013-03-13 16:40:55 +00:00
|
|
|
bx r10
|
|
|
|
#endif
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
2006-10-31 17:07:54 +00:00
|
|
|
6: nop
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr r3, [r1], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr r4, [r1], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr r5, [r1], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr r6, [r1], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr r7, [r1], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr r8, [r1], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr lr, [r1], #4
|
2006-10-31 17:07:54 +00:00
|
|
|
|
2013-03-13 16:40:55 +00:00
|
|
|
#ifndef ARM_ALWAYS_BX
|
2013-03-13 19:36:53 +00:00
|
|
|
add pc, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
|
2006-10-31 17:07:54 +00:00
|
|
|
nop
|
2013-03-13 16:40:55 +00:00
|
|
|
#else
|
2015-03-19 19:45:24 +00:00
|
|
|
0: add r10, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
|
|
|
|
/* If alignment is not perfect, then there will be some
|
|
|
|
padding (nop) instructions between this BX and label 66.
|
|
|
|
The computation above assumed that two instructions
|
|
|
|
later is exactly the right spot. */
|
|
|
|
add r10, #(66f - (0b + PC_OFS))
|
2013-03-13 16:40:55 +00:00
|
|
|
bx r10
|
|
|
|
#endif
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
2015-03-19 19:45:24 +00:00
|
|
|
66: nop
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str r3, [r0], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str r4, [r0], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str r5, [r0], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str r6, [r0], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str r7, [r0], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str r8, [r0], #4
|
2013-03-13 19:36:53 +00:00
|
|
|
.p2align ARM_BX_ALIGN_LOG2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str lr, [r0], #4
|
2006-10-31 17:07:54 +00:00
|
|
|
|
2013-03-13 16:40:55 +00:00
|
|
|
#ifdef ARM_ALWAYS_BX
|
|
|
|
pop {r10}
|
|
|
|
cfi_adjust_cfa_offset (-4)
|
|
|
|
cfi_restore (r10)
|
|
|
|
#endif
|
|
|
|
|
2006-10-31 17:07:54 +00:00
|
|
|
CALGN( bcs 2b )
|
|
|
|
|
2013-02-15 05:00:14 +00:00
|
|
|
7: pop {r5 - r8}
|
2010-03-26 18:12:56 +00:00
|
|
|
cfi_adjust_cfa_offset (-16)
|
|
|
|
cfi_restore (r5)
|
|
|
|
cfi_restore (r6)
|
|
|
|
cfi_restore (r7)
|
|
|
|
cfi_restore (r8)
|
2006-10-31 17:07:54 +00:00
|
|
|
|
|
|
|
8: movs r2, r2, lsl #31
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldrbne r3, [r1], #1
|
|
|
|
ldrbcs r4, [r1], #1
|
|
|
|
ldrbcs ip, [r1]
|
|
|
|
strbne r3, [r0], #1
|
|
|
|
strbcs r4, [r0], #1
|
|
|
|
strbcs ip, [r0]
|
2006-10-31 17:07:54 +00:00
|
|
|
|
2013-03-13 16:40:55 +00:00
|
|
|
#if ((defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)) \
|
|
|
|
|| defined (ARM_ALWAYS_BX))
|
2013-02-15 05:00:14 +00:00
|
|
|
pop {r0, r4, lr}
|
2010-03-26 18:12:56 +00:00
|
|
|
cfi_adjust_cfa_offset (-12)
|
|
|
|
cfi_restore (r4)
|
|
|
|
cfi_restore (lr)
|
2009-11-06 08:07:18 +00:00
|
|
|
bx lr
|
|
|
|
#else
|
2013-02-15 05:00:14 +00:00
|
|
|
pop {r0, r4, pc}
|
2009-11-06 08:07:18 +00:00
|
|
|
#endif
|
2006-10-31 17:07:54 +00:00
|
|
|
|
2010-03-26 18:12:56 +00:00
|
|
|
cfi_restore_state
|
|
|
|
|
2006-10-31 17:07:54 +00:00
|
|
|
9: rsb ip, ip, #4
|
|
|
|
cmp ip, #2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldrbgt r3, [r1], #1
|
|
|
|
ldrbge r4, [r1], #1
|
|
|
|
ldrb lr, [r1], #1
|
|
|
|
strbgt r3, [r0], #1
|
|
|
|
strbge r4, [r0], #1
|
2006-10-31 17:07:54 +00:00
|
|
|
subs r2, r2, ip
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
strb lr, [r0], #1
|
2006-10-31 17:07:54 +00:00
|
|
|
blt 8b
|
|
|
|
ands ip, r1, #3
|
|
|
|
beq 1b
|
|
|
|
|
|
|
|
10: bic r1, r1, #3
|
|
|
|
cmp ip, #2
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr lr, [r1], #4
|
2006-10-31 17:07:54 +00:00
|
|
|
beq 17f
|
|
|
|
bgt 18f
|
|
|
|
|
|
|
|
|
|
|
|
.macro forward_copy_shift pull push
|
|
|
|
|
|
|
|
subs r2, r2, #28
|
|
|
|
blt 14f
|
|
|
|
|
|
|
|
CALGN( ands ip, r1, #31 )
|
|
|
|
CALGN( rsb ip, ip, #32 )
|
2013-03-11 23:44:31 +00:00
|
|
|
CALGN( sbcsne r4, ip, r2 ) @ C is always set here
|
2006-10-31 17:07:54 +00:00
|
|
|
CALGN( subcc r2, r2, ip )
|
|
|
|
CALGN( bcc 15f )
|
|
|
|
|
2013-03-11 17:57:55 +00:00
|
|
|
11: push {r5 - r8, r10}
|
2010-03-26 18:12:56 +00:00
|
|
|
cfi_adjust_cfa_offset (20)
|
|
|
|
cfi_rel_offset (r5, 0)
|
|
|
|
cfi_rel_offset (r6, 4)
|
|
|
|
cfi_rel_offset (r7, 8)
|
|
|
|
cfi_rel_offset (r8, 12)
|
2013-03-11 17:57:55 +00:00
|
|
|
cfi_rel_offset (r10, 16)
|
2006-10-31 17:07:54 +00:00
|
|
|
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
PLD( pld [r1, #0] )
|
2006-10-31 17:07:54 +00:00
|
|
|
PLD( subs r2, r2, #96 )
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
PLD( pld [r1, #28] )
|
2006-10-31 17:07:54 +00:00
|
|
|
PLD( blt 13f )
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
PLD( pld [r1, #60] )
|
|
|
|
PLD( pld [r1, #92] )
|
2006-10-31 17:07:54 +00:00
|
|
|
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
12: PLD( pld [r1, #124] )
|
|
|
|
13: ldmia r1!, {r4, r5, r6, r7}
|
2013-02-15 05:00:14 +00:00
|
|
|
mov r3, lr, PULL #\pull
|
2006-10-31 17:07:54 +00:00
|
|
|
subs r2, r2, #32
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldmia r1!, {r8, r10, ip, lr}
|
2013-02-15 05:00:14 +00:00
|
|
|
orr r3, r3, r4, PUSH #\push
|
|
|
|
mov r4, r4, PULL #\pull
|
|
|
|
orr r4, r4, r5, PUSH #\push
|
|
|
|
mov r5, r5, PULL #\pull
|
|
|
|
orr r5, r5, r6, PUSH #\push
|
|
|
|
mov r6, r6, PULL #\pull
|
|
|
|
orr r6, r6, r7, PUSH #\push
|
|
|
|
mov r7, r7, PULL #\pull
|
|
|
|
orr r7, r7, r8, PUSH #\push
|
|
|
|
mov r8, r8, PULL #\pull
|
2013-03-11 17:57:55 +00:00
|
|
|
orr r8, r8, r10, PUSH #\push
|
|
|
|
mov r10, r10, PULL #\pull
|
|
|
|
orr r10, r10, ip, PUSH #\push
|
2013-02-15 05:00:14 +00:00
|
|
|
mov ip, ip, PULL #\pull
|
|
|
|
orr ip, ip, lr, PUSH #\push
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
stmia r0!, {r3, r4, r5, r6, r7, r8, r10, ip}
|
2006-10-31 17:07:54 +00:00
|
|
|
bge 12b
|
|
|
|
PLD( cmn r2, #96 )
|
|
|
|
PLD( bge 13b )
|
|
|
|
|
2013-03-11 17:57:55 +00:00
|
|
|
pop {r5 - r8, r10}
|
2010-03-26 18:12:56 +00:00
|
|
|
cfi_adjust_cfa_offset (-20)
|
|
|
|
cfi_restore (r5)
|
|
|
|
cfi_restore (r6)
|
|
|
|
cfi_restore (r7)
|
|
|
|
cfi_restore (r8)
|
2013-03-11 17:57:55 +00:00
|
|
|
cfi_restore (r10)
|
2006-10-31 17:07:54 +00:00
|
|
|
|
|
|
|
14: ands ip, r2, #28
|
|
|
|
beq 16f
|
|
|
|
|
2013-02-15 05:00:14 +00:00
|
|
|
15: mov r3, lr, PULL #\pull
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
ldr lr, [r1], #4
|
2006-10-31 17:07:54 +00:00
|
|
|
subs ip, ip, #4
|
2013-02-15 05:00:14 +00:00
|
|
|
orr r3, r3, lr, PUSH #\push
|
Remove sfi_* annotations from ARM assembly files.
This semi-mechanical patch removes all uses and definitions of the
sfi_breg, sfi_pld, and sfi_sp macros from various ARM-specific
assembly files. These were only used by NaCl.
* sysdeps/arm/sysdep.h
(ARM_SFI_MACROS, sfi_breg, sfi_pld, sfi_sp): Delete definitions.
* sysdeps/arm/__longjmp.S, sysdeps/arm/add_n.S
* sysdeps/arm/addmul_1.S, sysdeps/arm/arm-mcount.S
* sysdeps/arm/armv6/rawmemchr.S, sysdeps/arm/armv6/strchr.S
* sysdeps/arm/armv6/strcpy.S, sysdeps/arm/armv6/strlen.S
* sysdeps/arm/armv6/strrchr.S, sysdeps/arm/armv6t2/memchr.S
* sysdeps/arm/armv6t2/strlen.S
* sysdeps/arm/armv7/multiarch/memcpy_impl.S
* sysdeps/arm/armv7/strcmp.S, sysdeps/arm/dl-tlsdesc.S
* sysdeps/arm/memcpy.S, sysdeps/arm/memmove.S
* sysdeps/arm/memset.S, sysdeps/arm/setjmp.S
* sysdeps/arm/strlen.S, sysdeps/arm/submul_1.S:
Remove all uses of sfi_breg, sfi_pld, and sfi_sp.
2017-05-12 00:36:15 +00:00
|
|
|
str r3, [r0], #4
|
2006-10-31 17:07:54 +00:00
|
|
|
bgt 15b
|
|
|
|
CALGN( cmp r2, #0 )
|
|
|
|
CALGN( bge 11b )
|
|
|
|
|
|
|
|
16: sub r1, r1, #(\push / 8)
|
|
|
|
b 8b
|
|
|
|
|
|
|
|
.endm
|
|
|
|
|
|
|
|
|
|
|
|
forward_copy_shift pull=8 push=24
|
|
|
|
|
|
|
|
17: forward_copy_shift pull=16 push=16
|
|
|
|
|
|
|
|
18: forward_copy_shift pull=24 push=8
|
|
|
|
|
|
|
|
END(memcpy)
|
|
|
|
libc_hidden_builtin_def (memcpy)
|