summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine
Commit message (Collapse)AuthorAgeFilesLines
* [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.
* * libc/machine/aarch64/strchr.S: New fileRichard Earnshaw2014-06-104-3/+213
| | | | | | * libc/machine/aarch64/strchr-stub.c: New file * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated.
* * libc/machine/sparc/setjmp.S (longjmp): Use register g1 instead of g6.Corinna Vinschen2014-05-151-4/+4
|
* * libc/machine/arm/strcmp-arm-tiny.S: New file.Richard Earnshaw2014-04-229-741/+1843
| | | | | | | | | | | | | * libc/machine/arm/strcmp-armv4.S: New file. * libc/machine/arm/strcmp-armv4t.S: New file. * libc/machine/arm/strcmp-armv6.S: New file. * libc/machine/arm/strcmp-armv7.S: New file. * libc/machine/arm/strcmp-armv7m.S: New file. * libc/machine/arm/strcmp.S: Replace with wrapper for various implementations. * libc/machine/arm/Makefile.am (strcmp.o, strcmp.obj): Add dependencies. * libc/machine/arm/Makefile.in: Regenerated.
* * libc/machine/rl78/setjmp.S: Add RL78/G10 support.DJ Delorie2014-04-091-0/+21
|