diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2014-08-06 04:26:52 -0400 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2014-08-29 22:06:57 -0400 |
commit | 77b3625763ae4d5aa6aaa9d44fbc1bfec6b29335 (patch) | |
tree | 74b12e2669da8653932f48f1ca3816eef4bf6324 /firmware/include | |
parent | 7d1a47cf13726c95ac46027156cc12dd9da5b855 (diff) | |
download | rockbox-77b3625763ae4d5aa6aaa9d44fbc1bfec6b29335.tar.gz rockbox-77b3625763ae4d5aa6aaa9d44fbc1bfec6b29335.zip |
Add mempcpy implementation
A GNU extension that returns dst + size instead of dst. It's a nice
shortcut when copying strings with a known size or back-to-back blocks
and you have to do it often.
May of course be called directly or alternately through
__builtin_mempcpy in some compiler versions.
For ASM on native targets, it is implemented as an alternate entrypoint
to memcpy which adds minimal code and overhead.
Change-Id: I4cbb3483f6df3c1007247fe0a95fd7078737462b
Diffstat (limited to 'firmware/include')
-rw-r--r-- | firmware/include/string-extra.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/firmware/include/string-extra.h b/firmware/include/string-extra.h index bae250d7c9..6a9e0c77be 100644 --- a/firmware/include/string-extra.h +++ b/firmware/include/string-extra.h | |||
@@ -18,8 +18,8 @@ | |||
18 | * KIND, either express or implied. | 18 | * KIND, either express or implied. |
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | #ifndef STRING_EXTRA_H | |
22 | 22 | #define STRING_EXTRA_H | |
23 | #include <string.h> | 23 | #include <string.h> |
24 | #include "strlcpy.h" | 24 | #include "strlcpy.h" |
25 | #include "strlcat.h" | 25 | #include "strlcat.h" |
@@ -27,3 +27,11 @@ | |||
27 | #include "strcasestr.h" | 27 | #include "strcasestr.h" |
28 | #include "strtok_r.h" | 28 | #include "strtok_r.h" |
29 | #include "memset16.h" | 29 | #include "memset16.h" |
30 | |||
31 | #if defined(WIN32) || defined(APPLICATION) | ||
32 | #ifndef mempcpy | ||
33 | #define mempcpy __builtin_mempcpy | ||
34 | #endif | ||
35 | #endif | ||
36 | |||
37 | #endif /* STRING_EXTRA_H */ | ||