8
by Michael Hope
Added a README. Re-factored the build into a top level Makefile. |
1 |
= Cortex-A String Routines = |
2 |
||
97.1.1
by Matthew Gretton-Dann
Update documentation to include AArch64. |
3 |
This package contains optimised string routines including memcpy(), memset(), |
4 |
strcpy(), strlen() for the ARM Cortex-A series of cores. |
|
5 |
||
6 |
Various implementations of these routines are provided, including generic |
|
7 |
implementations for ARMv7-A cores with/without Neon, an implementation tuned |
|
8 |
for Cortex-A9 and generic implementations for cores supporting AArch64. |
|
8
by Michael Hope
Added a README. Re-factored the build into a top level Makefile. |
9 |
|
10 |
== Getting started == |
|
57
by Dr. David Alan Gilbert
Take out references to eglibc add on |
11 |
First configure and then install libcortex-strings.so. To make other |
12 |
applications use this library, either add -lcortex-strings to the link |
|
13 |
command or use LD_PRELOAD to load the library into existing applications. |
|
8
by Michael Hope
Added a README. Re-factored the build into a top level Makefile. |
14 |
|
58
by Michael Hope
Bumped the version as we're almost at 1.0. Tidied up the README. Added an overview comment to one of the scripts. |
15 |
Our intent is to get these routines into the common C libraries such |
16 |
as GLIBC, Bionic, and Newlib. Your system may already include them! |
|
17 |
||
8
by Michael Hope
Added a README. Re-factored the build into a top level Makefile. |
18 |
== Contents == |
19 |
* src/ contains the routines themselves |
|
20 |
* tests/ contains the unit tests |
|
21 |
* reference/ contains reference copies of other ARM-focused |
|
22 |
implementations gathered from around the Internet |
|
23 |
* benchmarks/ contains various benchmarks, tools, and scripts used to |
|
24 |
check and report on the different implementations. |
|
25 |
||
26 |
The src directory contains different variants organised by the |
|
27 |
implementation they run on and optional features used. For example: |
|
97.1.1
by Matthew Gretton-Dann
Update documentation to include AArch64. |
28 |
* src/thumb-2 contains generic non-NEON routines for AArch32 (with Thumb-2). |
29 |
* src/neon contains NEON based routines for AArch32. |
|
30 |
* src/linaro-a9 contains tuned routines for Cortex-A9 processors. |
|
31 |
* src/aarch64 contains generic routines for AArch64. |
|
8
by Michael Hope
Added a README. Re-factored the build into a top level Makefile. |
32 |
|
39
by Michael Hope
Updates after pulling in new routines to the reference. Document where the reference files come from. |
33 |
== Reference versions == |
34 |
reference/ contains versions collected from various popular Open |
|
35 |
Source libraries. These have been modified for use in benchmarking. |
|
36 |
Please refer to the individual files for any licensing terms. |
|
37 |
||
38 |
The routines were collected from the following releases: |
|
39 |
* EGLIBC 2.13 |
|
40 |
* Newlib 1.19.0 |
|
41 |
* Bionic android-2.3.5_r1 |
|
42 |
||
8
by Michael Hope
Added a README. Re-factored the build into a top level Makefile. |
43 |
== Licensing == |
45
by Michael Hope
Removed obsolete build files. Updated the license on more files. |
44 |
All Linaro-authored routines are under the modified BSD license: |
45 |
||
53
by Michael Hope
Changed 'Linaro Inc.' for the correct 'Linaro Limited' everywhere. |
46 |
Copyright (c) 2011, Linaro Limited |
45
by Michael Hope
Removed obsolete build files. Updated the license on more files. |
47 |
All rights reserved. |
48 |
||
49 |
Redistribution and use in source and binary forms, with or without |
|
50 |
modification, are permitted provided that the following conditions are met: |
|
51 |
* Redistributions of source code must retain the above copyright |
|
52 |
notice, this list of conditions and the following disclaimer. |
|
53 |
* Redistributions in binary form must reproduce the above copyright |
|
54 |
notice, this list of conditions and the following disclaimer in the |
|
55 |
documentation and/or other materials provided with the distribution. |
|
56 |
* Neither the name of the Linaro nor the |
|
57 |
names of its contributors may be used to endorse or promote products |
|
58 |
derived from this software without specific prior written permission. |
|
59 |
||
60 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
|
61 |
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
62 |
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|
53
by Michael Hope
Changed 'Linaro Inc.' for the correct 'Linaro Limited' everywhere. |
63 |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY |
45
by Michael Hope
Removed obsolete build files. Updated the license on more files. |
64 |
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
65 |
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
|
66 |
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
|
67 |
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
68 |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|
69 |
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
70 |
||
71 |
All third party routines are under a GPL compatible license. |
|
8
by Michael Hope
Added a README. Re-factored the build into a top level Makefile. |
72 |
|
73 |
== Notes and Limitations == |
|
54
by Michael Hope
Minor style changes. Documented the basics of style. |
74 |
Some of the implementations have been collected from other |
75 |
projects and have a variety of licenses and copyright holders. |
|
76 |
||
77 |
== Style == |
|
78 |
Assembly code attempts to follow the GLIBC coding convetions. They |
|
79 |
are: |
|
80 |
* Copyright headers in C style comment blocks |
|
81 |
* Instructions indented with one tab |
|
82 |
* Operands indented with one tab |
|
83 |
* Text is wrapped at 70 characters |
|
84 |
* End of line comments are fine |