ARM: Make armv7 memcpy implementations SFI-friendly

This commit is contained in:
Roland McGrath 2013-06-18 15:42:56 -07:00
parent d7dffa6a55
commit 733edfb8ae
3 changed files with 571 additions and 280 deletions

View File

@ -1,5 +1,13 @@
2013-06-18 Roland McGrath <roland@hack.frob.com>
* sysdeps/arm/arm-features.h (ARM_BX_NINSNS): New macro.
* sysdeps/arm/armv7/multiarch/memcpy_impl.S: Macroize the
computed-jump dispatch sections. Use sfi_breg throughout.
[ARM_ALWAYS_BX]: Define a different version of the dispatch macros
that uses bx rather than add-to-pc, and respects ARM_BX_ALIGN_LOG2.
[!USE_NEON] (D_l, D_h): Use r10, r11 rather than r8, r9.
(tmp2): Use r8 rather than r10.
* sysdeps/arm/armv7/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list)
[__ARM_NEON__]: Do not refer to HWCAP_ARM_NEON.
[!__SOFTFP__]: Do not refer to HWCAP_ARM_VFP.

View File

@ -53,6 +53,14 @@
# define ARM_BX_ALIGN_LOG2 2
#endif
/* The number of instructions that 'bx' expands to. A more-specific
arm-features.h that defines 'bx' as a macro should define this to the
number instructions it expands to. This is used only in a context
where the 'bx' expansion won't cross an ARM_BX_ALIGN_LOG2 boundary. */
#ifndef ARM_BX_NINSNS
# define ARM_BX_NINSNS 1
#endif
/* An OS-specific arm-features.h file may define ARM_NO_INDEX_REGISTER to
indicate that the two-register addressing modes must never be used. */

File diff suppressed because it is too large Load Diff