summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine
Commit message (Collapse)AuthorAgeFilesLines
* AArch64: Tune memcpyWilco Dijkstra2015-11-121-24/+32
| | | | | * newlib/libc/machine/aarch64/memcpy.S (memcpy): Further tuning for performance.
* Avoid .eh_frame in ARM newlib.Joseph Myers2015-11-127-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | ARM newlib has various strcmp implementations that use .cfi_* directives to generate unwind information. The effect of this is that the generated objects contain .eh_frame sections. However, ARM uses its own unwind info format, not .eh_frame, which is generated by ARM-specific directives, not .cfi_*. The .eh_frame sections are useless, but also not removed by strip and may be loaded into memory at runtime. This patch fixes this by using .cfi_sections .debug_frame (as in glibc) so that the directives generate .debug_frame instead. .debug_frame is useful for the debugger, can be removed by strip, and is not loaded into memory at runtime. * libc/machine/arm/strcmp-arm-tiny.S: Use .cfi_sections .debug_frame. * libc/machine/arm/strcmp-armv4.S: Likewise. * libc/machine/arm/strcmp-armv4t.S: Likewise. * libc/machine/arm/strcmp-armv6.S: Likewise. * libc/machine/arm/strcmp-armv6m.S: Likewise. * libc/machine/arm/strcmp-armv7.S: Likewise. * libc/machine/arm/strcmp-armv7m.S: Likewise.
* Reorganize memchr selection.cygwin-2_3_0-releaseMarcus Shawcroft2015-11-066-124/+107
| | | | | | | | | | | | | | | | | | | | | The patch cleans up the auto configury mechanism used to select different implementations of memchr for various architecture versions. The approach here is to remove the selection of memchr within automake and instead use complimentary logic in memchr-stub.c and memchr.S to choose between the gerneric memchr.c implementation or one of the architecture specific implementations. This patch also changes the selection criteria inline with the previous proposal here: https://sourceware.org/ml/newlib/2015/msg00752.html but using the ACLE predefines. Regressed for armv7-a armv5 armv8-a, correct selection of memcpy implementation by manual inspection of a test program built for these three architectures.
* Reorganize memcpy selection.Marcus Shawcroft2015-11-066-296/+81
| | | | | | | | | | | | | | | | | | | This patch cleans up the auto configury mechanism used to select different implementations of memcpy for various architecture versions. The approach here is to remove the selection of memcpy within automake and instead use complimentary logic in memcpy-stub.c and memcpy.S to choose between the generic memcpy.c implemenation or one of the architecture specific memcpy*.S implemenations. Regressed for armv7-a armv5 armv8-a, correct selection of memcpy implementation by manual inspection of a test program built for these three architectures. This revised patch flips the remaining preprocessor logic in memcpy-stub.c to use ACLE defines as requested in the previous review and removes the now disused HAVE_ARMV7A and HAVE_ARMV8A configure.in support.
* [ARM] Select appropriate memcpy implementation for ARMv8-a.Marcus Shawcroft2015-11-035-14/+97
| | | | | | | | | The newlib configury logic that detects architecture version and chooses an appropriate memcpy implementation does not consider ARMv8-a. This patch adds configury logic to detect ARMv8-a along with the associated changes in Makefile.am and memcpy.
* Move duplicated documentation rules to Makefile.sharedJeff Johnston2015-11-026-4165/+2990
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Also, harmonize libm to use CHEWOUT_FILES like libc, rather than chobj. Update documentation appropriately. * HOWTO: Update. * Makefile.shared: Move documentation rules to here... * libc/argz/Makefile.am: ... from here ... * libc/ctype/Makefile.am: ... and here. * libc/errno/Makefile.am: Ditto. * libc/iconv/Makefile.am: Ditto. * libc/iconv/ccs/Makefile.am : Ditto. * libc/iconv/ces/Makefile.am: Ditto. * libc/iconv/lib/Makefile.am: Ditto. * libc/locale/Makefile.am: Ditto. * libc/misc/Makefile.am: Ditto. * libc/posix/Makefile.am: Ditto. * libc/reent/Makefile.am: Ditto. * libc/search/Makefile.am: Ditto. * libc/stdio/Makefile.am: Ditto. * libc/stdio64/Makefile.am: Ditto. * libc/stdlib/Makefile.am : Ditto. * libc/string/Makefile.am: Ditto. * libc/syscalls/Makefile.am: Ditto. * libc/time/Makefile.am : Ditto. * libc/unix/Makefile.am: Ditto. * libc/xdr/Makefile.am: Ditto. * libm/common/Makefile.am: Ditto. * libm/complex/Makefile.am: Ditto. * libm/math/Makefile.am: Ditto. * libm/mathfp/Makefile.am: Ditto.
* Improve performance of MIPS memcpy.Steve Ellcey2015-11-021-2/+43
| | | | | * libc/machine/mips/memcpy.S (memcpy): Add word copies for small aligned data.
* Add support for ft32 to newlib.Jeff Johnston2015-09-0414-1911/+9617
|
* libc/machine/cris/sys/signal.h (kill): Declare.Hans-Peter Nilsson2015-09-031-0/+4
|
* strlen-armv7.S: Fix preprocessor checkCorinna Vinschen2015-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi! I've got the situation, that the function strlen() occurs twice in libc.a (building newlib for ARM-V7a and Size-Optimized). In newlib/libc/machine/arm/strlen.c there are the pre-processor stetements ... #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \ (defined (__thumb__) && !defined (__thumb2__)) /*...*/ #else #if !(defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__)) /*...*/ #endif and in newlib/libc/machine/arm/strlen-armv7.S the "exclude" begins with /* NOTE: This ifdef MUST match the ones in arm/strlen.c We fallback to the one in arm/strlen.c for size optimised or for older architectures. */ #if defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__) && \ !(defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \ (defined (__thumb__) && !defined (__thumb2__))) But this is not completely contrary to arm/strlen.c (see above)! To fix the logical statement in arm/strlen-armv7.S there are parentheses needed Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Use machine header file for endianness configuration.Andre Vieira2015-08-202-6/+40
| | | | | | | | | | | | | | | newlib/ChangeLog: 2015-07-28 Andre Vieira <andre.simoesdiasvieira@arm.com> * libc/sys/arm/sys/param.h (BIG_ENDIAN, LITTLE_ENDIAN): Moved to machine/endian.h. * libc/machine/arm/machine/param.h (BYTE_ORDER): Idem. * libc/machine/arm/machine/endian.h: New. From ca6efccda91bc6b620b7d96a466b0f1e2f02cfeb Mon Sep 17 00:00:00 2001 From: Andre Simoes Dias Vieira <andsim01@arm.com> Date: Tue, 28 Jul 2015 12:16:20 +0100 Subject: [PATCH 2/2] Move endianness configuration to machine/endian.h
* [AArch64] Rewrite optimized memset.Wilco Dijkstra2015-07-301-191/+184
| | | | | | | | | | | This is an optimized memset for AArch64. Memset is split into 4 main cases: small sets of up to 16 bytes, medium of 16..96 bytes which are fully unrolled. Large memsets of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. Memsets of zero of more than 256 use the dc zva instruction, and there are faster versions for the common ZVA sizes 64 or 128. STP of Q registers is used to reduce codesize without loss of performance.
* [AArch64] Reverting recent optimized memset().Marcus Shawcroft2015-07-151-184/+191
|
* [AArch64] Optimized memset.Wilco Dijkstra2015-07-131-191/+184
| | | | | | | | | | | This is an optimized memset for AArch64. Memset is split into 4 main cases: small sets of up to 16 bytes, medium of 16..96 bytes which are fully unrolled. Large memsets of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. Memsets of zero of more than 256 use the dc zva instruction, and there are faster versions for the common ZVA sizes 64 or 128. STP of Q registers is used to reduce codesize without loss of performance.
* [AArch64] Optimized memcpy.Wilco Dijkstra2015-07-131-134/+161
| | | | | | | | | | This is an optimized memcpy for AArch64. Copies are split into 3 main cases: small copies of up to 16 bytes, medium copies of 17..96 bytes which are fully unrolled. Large copies of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. In order to share code with memmove, small and medium copies read all data before writing, allowing any kind of overlap. On a random copy test memcpy is 40.8% faster on A57 and 28.4% on A53.
* [AArch64] Optimized memmove.Wilco Dijkstra2015-07-131-282/+108
| | | | | | | This is an optimized memmove for AArch64. All copies of up to 96 bytes and all backward copies are done by the new memcpy. The only remaining case is large forward copies which are done in the same way as the memcpy loop, but copying from the end rather than the start.
* Update the assembler code to support old ARM architectures.Hale Wang2015-06-016-183/+179
| | | | | | | | | | | | * libc/machine/arm/aeabi_memmove-arm.S (__aeabi_memmove): Update the assembler implementation. * libc/machine/arm/aeabi_memmove-thumb.S (__aeabi_memmove): Ditto. * libc/machine/arm/aeabi_memmove-thumb2.S (__aeabi_memmove): Ditto. * libc/machine/arm/aeabi_memset-arm.S (__aeabi_memset): Ditto. * libc/machine/arm/aeabi_memset-thumb.S (__aeabi_memset): Ditto. * libc/machine/arm/aeabi_memset-thumb2.S (__aeabi_memset): Ditto. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* For the RX port, avoid using string instructions when ↵Nick Clifton2015-04-2312-0/+235
| | | | | | | | | | | | | | | | | | | __RX_DISALLOW_STRING_INSNS__ is defined. * rx/crt0.S (_start): If string instructions are not allowed, avoid using SMOVF. * libc/machine/rx/memchr.S: Add non-string insn using version. * libc/machine/rx/memcpy.S: Likewise. * libc/machine/rx/memmove.S: Likewise. * libc/machine/rx/mempcpy.S: Likewise. * libc/machine/rx/strcat.S: Likewise. * libc/machine/rx/strcmp.S: Likewise. * libc/machine/rx/strcpy.S: Likewise. * libc/machine/rx/strlen.S: Likewise. * libc/machine/rx/strncat.S: Likewise. * libc/machine/rx/strncmp.S: Likewise. * libc/machine/rx/strncpy.S: Likewise.
* * libc/machine/mips/memset.S: Add support for mips32r6/mips64r6.Steve Ellcey2015-03-031-0/+58
|
* * libc/machine/mips/memcpy.S: Add support for mips32r6/mips64r6.Steve Ellcey2015-03-031-14/+165
|
* 2015-02-26 Steve Ellcey <sellcey@imgtec.com>Steve Ellcey2015-02-261-108/+108
| | | | | * libc/machine/mips/memcpy.S: Fix macro indentation and typos in comments.
* * libc/machine/arm/aeabi_memclr.c: New file to supportCorinna Vinschen2015-02-178-5/+542
| | | | | | | | | | | | aeabi_memclr. * libc/machine/arm/aeabi_memset.c: New file to support aeabi_memset. * libc/machine/arm/aeabi_memset-soft.S: Ditto. * libc/machine/arm/aeabi_memset-arm.S: Ditto. * libc/machine/arm/aeabi_memset-thumb.S: Ditto. * libc/machine/arm/aeabi_memset-thumb2.S: Ditto. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated.
* * libc/machine/arm/aeabi_memmove.c: New file to supportCorinna Vinschen2015-02-177-3/+340
| | | | | | | | | | aeabi_memmove. * libc/machine/arm/aeabi_memmove-soft.S: Ditto. * libc/machine/arm/aeabi_memmove-arm.S: Ditto. * libc/machine/arm/aeabi_memmove-thumb.S: Ditto. * libc/machine/arm/aeabi_memmove-thumb2.S: Ditto. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated.
* * libc/include/complex.h (cabsl): Add prototype.Nick Clifton2015-02-061-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cimagl): Add prototype. (creall): Add prototype. * libc/include/ieeefp.h: Include float.h. (EXT_EXPBITS, EXT_FRACHBITS, EXT_FRACLBITS) (EXT_EXP_INFNAN. EXT_EXP_BIAS, EXT_FRACBITS): Define. (struct ieee_ext, union ieee_ext_u): New types for long double support. * libc/include/math.h (finitel): Add prototype. (hypotl): Add prototype. (sqrtl): Add prototype. * libm/common/Makefile.am (lsrc): Add sl_finite.c. * libm/common/Makefile.in: Regenerate. * libm/common/fdlibm.h (__ieee754_hypotl): Add prototype. * libm/common/hypotl.c (hypotl): Add implementation for when long double is larger than double. * libm/common/sqrtl.c (sqrtl): Likewise. * libm/common/sl_finite.c: New file. Adds implementation of the finitel function. * libm/complex/Makefile.am (lsrc): Define. (libcomplex_la_SOURCES): Add lsrc. (lib_a_SOURCES): Add lsrc. * libm/complex/Makefile.in: Regenerate. * libm/complex/cabs.c: Add documentation of cabsl function. * libm/complex/cimag.c: Add documentation of cimagl function. * libm/complex/creall.c: Add documentation of creall function. * libm/complex/cabsl.c: New file. Adds implementation of the cabsl function. * libm/complex/cimagl.c: New file. Adds implementation of the cimagl function. * libm/complex/creall.c: New file. Adds implementation of the creall function. * libm/math/Makefile.am (lsrc): Define. (libmath_la_SOURCES): Add lsrc. (lib_a_SOURCES): Add lsrc. * libm/math/Makefile.in: Regenerate. * libm/math/el_hypot.c: New file. Adds implementation of the __ieee754_hypotl function.
* Complete action from 2001-12-18:Corinna Vinschen2015-01-2317-697/+0
| | | | * libc/machine/i386/f_*: Remove duplicate files.
* * COPYING.LIBGLOSS: Add Controls and Data Services copyright.Eric Botcazou2015-01-2113-2/+7993
| | | | | | | | | | | | | | | | * COPYING.NEWLIB: Likewise. libgloss/ * configure.in: Add Visium support. * configure: Regenerate. * visium/: New directory. newlib/ * configure.host: Add Visium support. * libc/machine/configure.in: Likewise. * libc/machine/configure: Regenerate. * libc/machine/visium/: New directory. * libc/include/machine/setjmp.h (_JBLEN): Define for Visium. * libc/include/machine/ieeefp.h (__IEEE_BIG_ENDIAN): Likewise. * libc/include/machine/time.h (_CLOCKS_PER_SEC_): Likewise.
* * libc/machine/aarch64/strlen.S (strlen): Improve performance.Corinna Vinschen2015-01-201-69/+171
|
* * libc/machine/aarch64/strcpy.S (strcpy): Further performanceRichard Earnshaw2015-01-065-125/+250
| | | | | | | | improvements. Adjust to allow building as stpcpy. * libc/machine/aarch64/stpcpy.S: New file. * libc/machine/aarch64/stpcpy-stub.c: New file. * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Build stpcpy. * libc/machine/aarch64/Makefile.in: Regenerated.
* 2014-12-18 Jeff Johnston <jjohnstn@redhat.com>Jeff Johnston2014-12-1855-1166/+876
| | | | | | | | | | | | | | * NEWS: Update with 2.2.0 info. * README: Ditto. * acinclude.m4: Change version number to 2.2.0. * libc/libc.texinfo: Ditto. * libm/libm.texinfo: Ditto. * configure: Regenerated. * Makefile.in: Regenerated. * doc/configure: Ditto. * libc/*/configure: Ditto. * libm/*/configure: Ditto. * libc/sys/linux/shared.ld: Add VERS_2.2
* * libc/machine/aarch64/strcpy.S: Improve handling of short strings.Richard Earnshaw2014-12-161-135/+207
|
* * newlib/libc/include/machine/setjmp.h: Add FPU support.Corinna Vinschen2014-12-151-2/+80
| | | | * newlib/libc/machine/nds32/setjmp.S: Add FPU support.
* 2014-12-12 Stefan Wallentowitz <stefan.wallentowitz@tum.de>Jeff Johnston2014-12-121-1/+20
| | | | | | * configure.host: or1knd support, OpenRISC without delay slot * libc/include/machine/setjmp.h: Add or1knd * libc/machine/or1k/setjmp.S: Optional delay slot
* 2014-12-12 Stefan Wallentowitz <stefan.wallentowitz@tum.de>Jeff Johnston2014-12-121-13/+2
| | | | * libc/machine/or1k/setjmp.S: Remove save/restore of r3-r8
* * libc/machine/aarch64/strchrnul.S (vrepmask): Use a call-clobberedRichard Earnshaw2014-12-101-1/+1
| | | | register.
* * libc/machine/aarch64/strrchr.S: New file.Richard Earnshaw2014-12-084-2/+230
| | | | | | * libc/machine/aarch64/strrchr-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated.
* * libc/include/machine/setjmp.h [__mips__]: Remove __mips_fpr == 64Corinna Vinschen2014-11-281-5/+41
| | | | | | | from the 64-bit _JBTYPE definition. * libc/machine/mips/setjmp.S: Re-work the o32 FP64 support to match the now one-and-only supported o32 FP64 ABI extension. Also support o32 FPXX.
* * libc/machine/arm/strcmp-armv6m.S: New file.Corinna Vinschen2014-11-264-50/+163
| | | | | | * libc/machine/arm/strcmp.S: Add new wrapper. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated.
* * libc/machine/aarch64/strcpy.S: New file.Richard Earnshaw2014-11-104-3/+274
| | | | | | * libc/machine/aarch64/strcpy-stub.S: New file. * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add new files. * libc/machine/aarch64/Makefile.in: Regenerate.
* 2014-10-08 Steve Ellcey <sellcey@mips.com>Steve Ellcey2014-10-084-79/+269
| | | | | | | | * newlib/libc/machine/mips/strcmp.c: Remove. * newlib/libc/machine/mips/strcmp.S: New. * newlib/libc/machine/mips/Makefile.am (lib_a_SOURCES): Replace strcmp.c with strcmp.S * newlib/libc/machine/mips/Makefile.in: Regenerate.
* 2014-09-08 Freddie Chopin <freddie_chopin@op.pl>Jeff Johnston2014-09-082-7/+7
| | | | | * libc/machine/arm/Makefile.am: Fix typo. * libc/machine/arm/Makefile.in: Regenerated.
* 2014-09-05 Hale Wang <hale.wang@arm.com>Jeff Johnston2014-09-0510-123/+551
| | | | | | | | | | | | | * libc/machine/arm/memchr.S: Clean up the wrapper. * libc/machine/arm/memcpy.S: Likewise. * libc/machine/arm/memchr-stub.c: Delete this redundant file. * libc/machine/arm/memcpy-stub.c: Likewise. * libc/machine/arm/strcmp.S: Add speed-preferred wrapper. * libc/machine/arm/strlen.S: Likewise. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated. * libc/machine/arm/configure.in: Add dependencies. * libc/machine/arm/configure: Regenerated.
* Add missing libc/machine/arm/aeabi_memcpy.c fileCorinna Vinschen2014-09-051-0/+64
|
* Add missing libc/machine/arm/aeabi_memcpy-armv7a.S fileCorinna Vinschen2014-09-041-0/+286
|
* * libc/machine/arm/aeabi_memcpy.c: New file.Corinna Vinschen2014-09-042-3/+18
| | | | | | * libc/machine/arm/aeabi_memcpy-armv7a.S: New file. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated.
* * libc/machine/aarch64/memchr.S: Add check for zero-sized buffer.Richard Earnshaw2014-08-191-0/+6
|
* headers: properly decorate attributesEric Blake2014-08-012-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Found by: find -name '*.h' |xargs grep -i 'attribute.*(([a-z]' For an example of the type of bugs this causes, try compiling this valid C11 program (it's valid because 'noreturn' is reserved for use in the user namespace unless you include <stdnoreturn.h>): $ cat foo.c #define noreturn __attribute__((noreturn)) #include <stdlib.h> $ gcc -c -o foo.o -Wall foo.c In file included from /usr/include/stdlib.h:11:0, from foo.c:2: foo.c:1:18: error: expected ')' before '__attribute__' #define noreturn __attribute__((noreturn)) ^ /usr/include/stdlib.h:66:28: error: expected ',' or ';' before ')' token _VOID _EXFUN(abort,(_VOID) _ATTRIBUTE ((noreturn))); ^ * libc/machine/spu/spu_timer_internal.h: Decorate attribute names with __, for namespace safety. * libc/machine/xscale/machine/profile.h: Likewise. * libc/include/stdlib.h: Likewise. * libc/include/_ansi.h: Likewise. * libc/include/sys/unistd.h: Likewise. * libc/sys/linux/linuxthreads/libc-symbols.h: Likewise. * libc/sys/linux/linuxthreads/internals.h: Likewise. * libc/sys/linux/machine/i386/weakalias.h: Likewise. * libc/sys/linux/machine/i386/dl-procinfo.h: Likewise. * libc/sys/linux/machine/i386/dl-machine.h: Likewise. * libc/sys/linux/libc-symbols.h: Likewise. * libc/sys/linux/iconv/gconv_charset.h: Likewise. * libc/sys/linux/include/resolv.h: Likewise. * libc/sys/linux/sys/unistd.h: Likewise. * libc/sys/linux/dl/atomicity.h: Likewise. * libc/sys/linux/dl/dynamic-link.h: Likewise. * libc/sys/linux/dl/ldsodefs.h: Likewise.
* * configure.host: Remove or16 and or32 targets and add or1k.Corinna Vinschen2014-07-178-2/+6626
| | | | | | | | * libc/include/machine/ieeefp.h: Replace or32 with or1k. * libc/machine/configure.in: Add or1k subdirectory. * libc/machine/or1k/configure.in: New file. * libc/machine/or1k/Makefile.am: New file. * libc/machine/or1k/setjmp.S: New file.
* [aarch64] Add memchr.Richard Earnshaw2014-07-114-6/+222
| | | | | | | | | 2014-07-11 K�vin Petit <kevin.petit@arm.com> * libc/machine/aarch64/memchr.S: New file. * libc/machine/aarch64/memchr-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add the new files. * libc/machine/aarch64/Makefile.in: Regenerated.
* 2014-07-07 Pavel Pisa <pisa@cmp.felk.cvut.cz>Richard Earnshaw2014-07-071-1/+3
| | | | | | Richard Earnshaw <rearnsha@arm.com> * libc/machine/arm/memchr.S (.arch): Require revision ARMv6t2.
* * libc/machine/aarch64/strchrnul.S: New file.Richard Earnshaw2014-06-114-3/+199
| | | | | | * libc/machine/aarch64/strchrnul-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated.