matt
9c4e9e6f72
Add some comments to illustrate what is actually happening.
2013-01-16 21:48:56 +00:00
matt
97ca0f0675
Fix case when searching for NUL.
2013-01-15 16:52:35 +00:00
matt
7b77c34d39
Add ARM optimized version of strrchr.
2013-01-15 08:52:27 +00:00
matt
d8ec06e4ef
Add missing ! on str
2013-01-15 04:48:14 +00:00
matt
daf6ab5d09
Add an ARM optimized version of strchr.
2013-01-15 02:04:04 +00:00
matt
1a27ca9824
Add simple/small versions of strchr/strrchr for ARM.
2013-01-15 02:03:30 +00:00
matt
cb5a58cf06
Fix two typos
2013-01-14 19:15:13 +00:00
matt
4362d68f7e
Add a simple version of strcat.
2013-01-14 16:36:15 +00:00
matt
962e3d9743
Add a native version of strcat which uses the optimized strlen and strcpy
...
routines.
2013-01-14 00:07:29 +00:00
matt
052628e406
A version of memset that can do NEON, VFP as well as normal arm instructions
2013-01-12 20:27:13 +00:00
matt
f77b15e751
Back out workaround.
2013-01-10 06:52:35 +00:00
matt
14365a1730
Fix a typo in strlcpy which caused to not deal with NULs predecing the
...
string properly.
2013-01-10 04:51:49 +00:00
matt
eb9a5f19fe
Use the naive version of strlcpy until the longer one is fixed (it's still
...
faster than the C version).
2013-01-10 02:14:42 +00:00
matt
ddfad239b3
use #if defined(xxx) instead of ifdef
2013-01-10 02:13:49 +00:00
matt
01beb558aa
Add weak alias for strlcpy
2013-01-10 02:08:22 +00:00
matt
0e293547ab
Use movw on armv7 to fill uppper halfword.
2013-01-09 00:01:07 +00:00
matt
d8854cd184
Add a simplier version of memset which is less than 1/2 the size of the
...
current one. On a Cortex-A9, this is about 15%-30% faster than the current
libc version. This is not a trivial implementation since that was an order
magnitude slower than the existing libc version.
2013-01-08 20:15:00 +00:00
pgoyette
640316503e
Add missing quote - fix build
2013-01-08 16:58:59 +00:00
matt
8eef9c1e44
Depending on _STANDALONE include the "naive" version or the normal arm version.
2013-01-08 13:21:05 +00:00
matt
67fc12d2ba
Rename strlen.S and strcpy.S to strlen_arm.S and strcpy_arm.S
2013-01-08 13:17:45 +00:00
matt
94d1844298
Add simple/small versions of the str* functions. Suitable for libsa, etc.
2013-01-08 13:14:54 +00:00
matt
3ddeb9ed7e
This is a working version of memcpy implemented using NEON instructions.
...
Still needs tuning as it is still about 15% than the non-NEON version.
2013-01-03 09:34:44 +00:00
matt
013f63afab
Deal with _LIBC (aliases, etc).
...
Add missing #endif.
2013-01-02 15:38:03 +00:00
matt
7910d3cfb5
Rename strlen_armv6.S to strlen.S since this is no longer armv6 dependent.
2013-01-02 15:24:21 +00:00
matt
daf4ca4713
Add an assembly version of strcpy/strncpy/strlcpy.
...
(they all use a common source with defines to determine which to build).
2013-01-02 05:54:58 +00:00
matt
44d1b59f26
Make this work on all ARMs but keep the armv6 optimizations. It as fast as
...
the existing strlen for small string and once strings are 8 bytes or more in
length it starts getting significantly faster. For really long strings,
compared to the existing strlen, this uses about 1/2 of the cycles for the
non-armv6 version and about 1/3 of the cycles for the armv6 version.
2012-12-31 07:58:44 +00:00
christos
064bbf208f
kill Id RCS keyword.
2012-12-29 20:08:23 +00:00
matt
1316220d88
A few slight speedups (remove one instruction from the main loop).
2012-12-29 05:36:57 +00:00
matt
51f99baf1e
strlen implementation for armv6 and later. Uses clz and uqadd8 to really
...
speed the search for NUL. as fast as normal strlen at about a length of
6 or 7 and 2-3 times faster starting around 10.
2012-12-28 07:10:41 +00:00
matt
780493cbdc
Debug. This becomes faster than the normal strlen at about 80 characters.
2012-12-28 05:15:08 +00:00
matt
817045ffb8
Don't need to include assym.h
...
Add a missing comma.
2012-12-18 06:14:23 +00:00
matt
e0306b2b8a
Add a routine to create an up to an 128 bitmask returned
...
in VFP/NEON q0 starting at the rightmost bit (bit 0).
2012-12-17 00:46:14 +00:00
matt
4118c7d32d
Slighly improved (can deal with all 16 bytes being non-NUL and quickly
...
proceed to next qword).
2012-12-15 22:23:31 +00:00
matt
91e44c6aaa
Add a NEON implementation of strlen.
2012-12-15 19:26:34 +00:00
matt
b54764018c
Add a NEON(only) implementation of memset.
...
This is a work in progress.
2012-12-13 01:41:59 +00:00
matt
be5ab324d6
Change __XSCALE__ to _ARM_ARCH_DWORD_OK so that any cpu with dword load/store
...
can use it.
2012-12-12 15:51:09 +00:00
matt
e1f7fc6d5e
Change __XSCALE__ to _ARM_ARCH_DWORD_OK so that any cpu with strd can use it.
2012-12-12 15:46:05 +00:00
christos
c98323355a
use explicit cast to pacify lint.
2012-12-07 15:41:02 +00:00
martin
3e441138b1
Provide an assembler version of _atomic_cas_up for sparc - the C code
...
does not compile to something usable in a RAS. See PR 38482.
2012-11-28 21:39:59 +00:00
matt
d9e09e3051
Optimize.
2012-11-28 01:35:05 +00:00
matt
a96852fc0d
Use the armv6 rev/rev16 if armv6 or later
2012-11-27 23:57:07 +00:00
christos
dae8727ffb
split udivsi3 and divsi3 to fix static linking. This could be done better.
2012-10-30 12:42:13 +00:00
chs
1957a22d40
_ARCH_ARM_6 -> _ARM_ARCH_6
2012-10-29 14:09:38 +00:00
christos
91f0e20769
Split out modsi3 and umodsi3 from the divsi3 file. This is so that
...
we don't get re-defined symbols in libc from libgcc in static linking.
Example: cc -pthread -static main-calls-pthread-create.c
2012-10-10 02:16:54 +00:00
matt
b40d79bcfb
Add a ptree_mask_node_p to determine if an item is a mask node, and what
...
its non-mask length is.
2012-10-06 22:15:09 +00:00
matt
6e8da97cc9
Correct copyright/fix comments.
2012-09-13 00:36:12 +00:00
matt
56a54cbe85
Fix bas code, use ldr
2012-09-12 18:23:33 +00:00
matt
b9b9bd8933
Add 64bit atomic ops for ARMv6+ (using ldrexd/strexd).
2012-09-11 20:51:25 +00:00
matt
36f83f6caf
Add dmb/dsb instructions as required by the armv7 arch man.
2012-08-31 23:41:52 +00:00
drochner
8588929dc5
Add "consttime_bcmp" and "explicit_bzero" functions for both kernel
...
abd userland, as proposed on tech-security, with explicit_bzero using
a volatile function pointer as suggested by Alan Barrett.
Both do what the name says. For userland, both are prefixed by "__"
to keep them out of the user namespace.
Change some memset/memcmp uses to the new functions where it makes
sense -- these are just some examples, more to come.
2012-08-30 12:16:48 +00:00