Commit Graph

138 Commits

Author SHA1 Message Date
Richard Henderson
f5ad94e02a arm: Implement armv6 optimized string routines
The strcpy and strchr (and related) functions are four times faster
than the byte-by-byte default versions.

The strlen function is twice as fast for long strings and 50% faster
for short strings over the armv4 version.
2013-03-07 09:10:33 -08:00
Richard Henderson
a6f2f43538 arm: Add optimized add_n and sub_n
Written from scratch rather than copied from GMP, due to LGPL 2.1 vs
GPL 3, but tested with the GMP testsuite.

This is 250% faster than the generic code as measured on Cortex-A15,
and the same speed as GMP on the same core, and probably everywhere.
2013-03-06 07:47:26 -08:00
Richard Henderson
fe62ba37a3 arm: Add optimized submul_1
Written from scratch rather than copied from GMP, due to LGPL 2.1 vs
GPL 3, but tested with the GMP testsuite.

This is 50% faster than the generic code as measured on Cortex-A15.
It is 25% slower than the current GMP routine on the same core.
2013-03-06 07:47:25 -08:00
Richard Henderson
21e31515a6 arm: Add optimized addmul_1
Written from scratch rather than copied from GMP, due to LGPL 2.1 vs
GPL 3, but tested with the GMP testsuite.

This is 25% faster than the generic code as measured on Cortex-A15,
and the same speed as GMP on the same core.  It's probably slower
than GMP on the A8 and A9 cores though.
2013-03-06 07:47:25 -08:00
Richard Henderson
5695fc848f arm: Add optimized ffs for armv6t2 2013-03-06 07:47:24 -08:00
Richard Henderson
79fd873111 arm: Implement hard-tp for GET_TLS 2013-03-06 07:47:21 -08:00
Richard Henderson
3377126b0a arm: Tidy architecture selection 2013-03-06 07:46:47 -08:00
Richard Henderson
d137b6dc52 arm: Unless arm4t, pop return address directly into pc 2013-03-06 07:46:47 -08:00
Richard Henderson
46dede0c00 arm: Commonize BX conditionals
Add BLX macro in addition and use it where appropriate.
2013-03-06 07:46:46 -08:00
Richard Henderson
92cc8e332b arm: Delete LOADREGS macro
There was only one user.  It's "condition" argument was used
for "ia" rather than an actual condition.  The apcs26 syntax
is almost certainly not needed, given current binutils requirements.
2013-03-06 07:46:46 -08:00
Richard Henderson
55668624cf arm: Use push/pop mnemonics
For arm this makes no difference--the result is bit-for-bit identical;
for thumb this results in smaller encodings.  Perhaps it ought not and
this is in fact an assembler bug, but I also think it's clearer.
2013-03-06 07:46:45 -08:00
Richard Henderson
5ff5dfe748 arm: Enable thumb2 mode in assembly files
The preceeding patches have allowed for the few incompatibilities
between arm and thumb2 mode, or have marked the file as not wanting
to use thumb2 mode.
2013-03-06 07:46:44 -08:00
Richard Henderson
5232b909bf arm: Introduce and use GET_TLS
Factor out the sequence needed to call kuser_get_tls, as we can't
play subtract into pc games in thumb mode.  Prepare for hard-tp,
pulling the save of LR into the macro.
2013-03-06 07:46:38 -08:00
Richard Henderson
3ae44082ab arm: Introduce and use NEGOFF series of macros
There are several places in which we access negative offsets from
the thread-pointer, but thumb2 only supports positive offsets in
memory references.

Avoid duplicating the rather large macros in which these references
are embedded by abstracting out the operation.
2013-03-06 07:44:25 -08:00
Richard Henderson
cd24e113c3 arm: Introduce and use LDST_PCREL
Macro-ising the few instances where we need to distinguish between
arm and thumb pc-relative memory operations.
2013-03-06 07:44:24 -08:00
Andreas Jaeger
5c56e93368 Update date of last entry 2013-03-06 16:29:43 +01:00
Andreas Jaeger
c91a49fe20 Use <bits/mman-linux.h> on ARM 2013-03-06 16:27:24 +01:00
Richard Henderson
365261c37f arm: Mark assembly files that will not use thumb mode
Some routines are written with complex LDM/STM insns that cannot be
used in thumb mode, or are highly conditional requiring excessive
IT insns.

When a future patch goes in to enable thumb2 by default, this marker
will be used to override that default.
2013-02-28 00:18:30 -08:00
Richard Henderson
6ccd0107f3 arm: Add IT insns for thumb mode
These are ignored by the assembler in ARM mode, so by
default this has no effect on generated code.
2013-02-28 00:17:21 -08:00
Richard Henderson
783a65c253 arm: Introduce and use PC_OFS
Scour the source for raw "-8" adjustments that are related to the
offset created by reading the pc.
2013-02-28 00:16:05 -08:00
Richard Henderson
63cc0e75ea arm: Tidy whitespace in sysdep.h files 2013-02-28 00:12:07 -08:00
Richard Henderson
c98ec0b97f arm: Include libc-do-syscall in sysdep-rtld-routines
When compiling with -mthumb, ld.so itself also needs __libc_do_syscall.
2013-02-28 00:08:59 -08:00
Richard Henderson
8a0018d62f arm: Handle armv6 in preconfigure 2013-02-28 00:07:37 -08:00
Richard Henderson
60812ba09d arm: Update preconfigure fragment for gcc 4.8
New defines from gcc 4.8:
 #define __ARM_ARCH_ISA_ARM 1
 #define __ARM_ARCH_PROFILE 65
 #define __ARM_ARCH_ISA_THUMB 2
 #define __ARM_ARCH 7

all of which got in the way of the one we wanted:
 #define __ARM_ARCH_7A__ 1
2013-02-28 00:04:34 -08:00
Roland McGrath
f4564ff0b6 ARM: Macroize use of .cfi_sections directive. 2013-02-27 16:36:47 -08:00
Joseph Myers
6c89344ec2 Add FUTEX_*_REQUEUE_PI support for ARM. 2013-02-18 23:49:05 +00:00
Siddhesh Poyarekar
ba384f6ed9 C++11 thread_local destructors support
This feature is specifically for the C++ compiler to offload calling
thread_local object destructors on thread program exit, to glibc.
This is to overcome the possible complication of destructors of
thread_local objects getting called after the DSO in which they're
defined is unloaded by the dynamic linker.  The DSO is marked as
'unloadable' if it has a constructed thread_local object and marked as
'unloadable' again when all the constructed thread_local objects
defined in it are destroyed.
2013-02-18 19:08:21 +05:30
Joseph Myers
70d9946a44 Remove __ptrvalue, __bounded and __unbounded. 2013-02-13 23:30:40 +00:00
Joseph Myers
a2da1673fe Remove CHECK_N and bp-checks.h. 2013-02-08 20:06:30 +00:00
Carlos O'Donell
ddacd1db6a BZ #15006: Updates NEWS and ChangeLog. 2013-02-08 12:37:44 -05:00
Carlos O'Donell
b39949d211 ARM: Support loading unmarked objects from cache.
ARM now supports loading unmarked objects from
the dynamic loader cache. Unmarked objects can
be used with the hard-float or soft-float ABI.
We must support loading unmarked objects during
the transition period from a binutils that does
not mark objects to one that does mark them with
the correct ELF flags.

Signed-off-by: Carlos O'Donell <carlos@redhat.com>
2013-02-08 12:26:12 -05:00
Joseph Myers
6277fdabc0 Remove CHECK_STRING, CHECK_STRING_NULL_OK and __ubp_memchr. 2013-02-04 16:29:39 +00:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Adam Conrad
270a72ed73 Fix ChangeLog formatting for arm and aarch64 2012-12-06 16:48:21 -07:00
Marcus Shawcroft
931ed9559b arm: Check for the FLAG_ARM_LIBHF flag in the ldconfig cache
Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 13:07:24 +00:00
Marcus Shawcroft
bc7981ac2b arm: Tag ARM libc6-dependent binaries with FLAG_ELF_LIBC6
Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 11:00:19 +00:00
Marcus Shawcroft
a55bca6542 arm: Tag ARM and AArch64 binaries in the ldconfig cache.
Add the correct tags for ARM and AArch64 libraries in the ldconfig
cache for ARM.

Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 10:50:34 +00:00
Joseph Myers
ec13345bab Update ARM libm-test-ulps. 2012-11-30 20:41:26 +00:00
Joseph Myers
a451ee33af Avoid $(shell) in determining default ARM ABI. 2012-11-21 21:04:33 +00:00
Joseph Myers
ad35f2dd75 Make ARM fesetenv (FE_NOMASK_ENV) detect failure (bug 14866). 2012-11-21 20:26:56 +00:00
Marcus Shawcroft
f507f7d598 Fix thumb2 build breakage in libcrypt 2012-11-14 23:06:40 +00:00
Joseph Myers
316a1b67e1 Define lll_futex_timed_wait_bitset for ARM. 2012-11-05 22:30:37 +00:00
Joseph Myers
acfa885ff1 Fix types of FE_DFL_ENV and FE_NOMASK_ENV (bug 14805). 2012-11-05 13:38:40 +00:00
Joseph Myers
5b5b04d628 Make fma use of Dekker and Knuth algorithms use round-to-nearest (bug 14796). 2012-11-03 19:48:53 +00:00
Joseph Myers
fbeafedeea Make fenv.h FE_* macros usable in #if (bug 3439). 2012-11-03 17:07:56 +00:00
Roland McGrath
6e6249d0b4 BZ#14743: Move clock_* symbols from librt to libc. 2012-10-24 14:50:46 -07:00
Andreas Jaeger
2a0e2669f9 Always define __O_LARGEFILE 2012-10-22 16:23:20 +02:00
Andreas Jaeger
7597ceba89 ARM: Use <bits/fcntl-linux.h>
* sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
2012-10-22 09:34:11 +02:00
Roland McGrath
b8493de0ec Add missing magic to GLIBC_PROVIDES. 2012-10-09 15:41:30 -07:00
Roland McGrath
fb228a2d94 Clean up R_ARM_PC24 handling. 2012-10-05 12:56:00 -07:00
Siddhesh Poyarekar
40d4a87bb5 Split my last ChangeLog entry into respective arch-specific files 2012-10-02 09:28:18 +05:30
H.J. Lu
f8419467bb Remove arm ADDRIDX macro definition 2012-09-28 11:31:13 -07:00
Joseph Myers
eaf6f205ff Correct order of arguments of __arm_assisted_compare_and_exchange_val_32_acq. 2012-09-21 23:42:16 +00:00
Joseph Myers
6c9b0f6826 Make strtod respect the rounding mode (bug 14518). 2012-09-12 23:36:19 +00:00
Joseph Myers
ad845c0be9 Remove __ASSUME_STAT64_SYSCALL. 2012-08-27 19:36:04 +00:00
Steve McIntyre
d3bafbc98e Check floating-point ABI in ARM VALID_ELF_HEADER. 2012-08-23 20:38:25 +00:00
Joseph Myers
348363b2c3 Remove __ASSUME_MMAP2_SYSCALL. 2012-08-20 14:37:27 +00:00
Maxim Kuvyrkov
ef4009734b Add generic versions of pthread_spin_lock and pthread_spin_trylock. 2012-08-15 16:29:06 -07:00
Roland McGrath
fdd3affb97 Rename ARM bits/atomic.h not to be specific to nptl add-on. 2012-08-15 09:40:28 -07:00
Roland McGrath
f3bdd5f843 Separate ARM bits/atomic.h into generic and Linux-specific files. 2012-08-15 09:40:28 -07:00
Mike Frysinger
9770df4f12 arm: fix up style in reloc fix
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-08-14 21:38:15 -04:00
Mike Frysinger
3447612d3c arm: handle unaligned ABS relocs
When relocating a misaligned R_ARM_ABS32, glibc currently crashes.

URL: https://bugs.gentoo.org/394237
URL: http://gcc.gnu.org/PR51456
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-08-12 14:49:45 -04:00
Roland McGrath
2aa5b9c146 Make ARM setjmp/longjmp respect ARM_ASSUME_NO_IWMMXT macro. 2012-08-09 16:37:50 -07:00
Roland McGrath
6dcf80c782 Avoid VFP HWCAP check in setjmp/longjmp and getcontext/setcontext when compiled without __SOFTFP__ defined. 2012-08-09 11:51:05 -07:00
Roland McGrath
a4ca519518 Don't check HWCAP_ARM_VFP in OS-generic code.
Presume VFP if compiled without __SOFTFP__ defined.
2012-08-09 10:04:56 -07:00
Roland McGrath
76de109437 Add sotruss-lib support for ARM. 2012-08-08 16:27:51 -07:00
Roland McGrath
44c94c1da0 Add a const in arm_gnu_pltexit signature. 2012-08-08 14:57:07 -07:00
Roland McGrath
92142c0cfd ARM: fix build breakage from sysdeps/unix/sysv/linux/arm/dl-machine.h addition. 2012-08-08 14:19:57 -07:00
Roland McGrath
69a14aa487 Fiddle ARM atomic.h to avoid -Wvolatile-register-var warnings. 2012-08-08 13:57:50 -07:00
Roland McGrath
7f3e1ad05f Add missing #include for sysdeps/arm/dl-irel.h. 2012-08-08 13:16:54 -07:00
Roland McGrath
9b5281b65e Fix __dl_start declaration to avoid warning. 2012-08-08 11:03:47 -07:00
Joseph Myers
6dad2c0688 Remove pre-2.6.16 Linux kernel support. 2012-08-07 16:40:32 +00:00
Joseph Myers
606dd3d9f4 Remove ASM_TYPE_DIRECTIVE for ARM. 2012-08-02 20:57:45 +00:00
Joseph Myers
23bddc0668 Remove __ASSUME_FCNTL64. 2012-08-01 21:27:58 +00:00
Joseph Myers
a9f1039f0a Remove __ASSUME_VFORK_SYSCALL (and some __NR_vfork conditionals). 2012-08-01 20:49:45 +00:00
Roland McGrath
5d9eaeecb4 Move Linuxism out of sysdeps/arm/dl-machine.h. 2012-08-01 11:39:08 -07:00
Roland McGrath
09c0ee5f8c BZ#14138: Move getrlimit (ugetrlimit) syscall to syscalls.list. 2012-08-01 10:25:11 -07:00
Roland McGrath
2618f5993c Missing ChangeLog.arm entry. 2012-07-31 09:33:08 -07:00
Joseph Myers
89b4b02f42 Remove pre-2.4.21 Linux kernel support. 2012-07-25 21:19:13 +00:00
Florian Weimer
0c7936d5e9 Fix up ChangeLog entries 2012-07-25 20:46:19 +02:00
Joseph Myers
0f48659e36 Move localplt baselines to sysdeps directories. 2012-07-20 19:20:34 +00:00
Joseph Myers
dfa359badf Remove TLS configure check for ARM. 2012-07-17 22:46:09 +00:00
Joseph Myers
bd29910a8a Move c++-types baselines to sysdeps directories. 2012-07-17 14:44:06 +00:00
Joseph Myers
ec332e944f Remove pre-2.4.1 Linux kernel support. 2012-07-12 12:31:32 +00:00
Joseph Myers
cea48cfbdd Change ASM_GLOBAL_DIRECTIVE to .globl for ARM. 2012-07-10 14:29:29 +00:00
Joseph Myers
c57a67e033 Add ARM-specific static-stubs.c. 2012-07-05 22:16:03 +00:00
Joseph Myers
95f5a9a866 Avoid use of libgcc_s and libgcc_eh when building glibc. 2012-07-03 19:14:59 +00:00
Joseph Myers
e64ac02c24 Move all files into ports/ subdirectory in preparation for merge with glibc 2012-07-01 13:06:41 +00:00