summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@uclibc-ng.org>2016-05-29 08:53:18 +0200
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2016-05-29 08:53:18 +0200
commit557f663a8cb7de8cbbfa9ce63b2c956bcaad194c (patch)
tree9a00e4e3dbefed4f2382790e4ef40bc7f6c9bde4
parente517397535b0777568fd9c13c4214b63c52d0798 (diff)
mips: allow to disable prefetch support in memcpy/memset
There exist some problem with the new memcpy/memset functions imported from GNU libc/newlib. If you have any problem with the new MIPS optimized assembly try to disable prefetching support. Thanks to Rene Nielsen and Matthew Fortune analyzing the problem so far.
-rw-r--r--extra/Configs/Config.mips7
-rw-r--r--libc/string/mips/memcpy.S2
-rw-r--r--libc/string/mips/memset.S2
3 files changed, 9 insertions, 2 deletions
diff --git a/extra/Configs/Config.mips b/extra/Configs/Config.mips
index e0b62dd67..919e80c59 100644
--- a/extra/Configs/Config.mips
+++ b/extra/Configs/Config.mips
@@ -31,3 +31,10 @@ config CONFIG_MIPS_N64_ABI
bool "N64 ABI"
endchoice
+
+config UCLIBC_USE_MIPS_PREFETCH
+ bool "Use MIPS prefetch optimization for memcpy/memset"
+ default y
+ help
+ You get better performance when you use Prefetch.
+ https://gcc.gnu.org/projects/prefetch.html#mips
diff --git a/libc/string/mips/memcpy.S b/libc/string/mips/memcpy.S
index 59f9f0a3a..3825875f1 100644
--- a/libc/string/mips/memcpy.S
+++ b/libc/string/mips/memcpy.S
@@ -39,7 +39,7 @@
#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
(_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
-# ifndef DISABLE_PREFETCH
+# ifdef __UCLIBC_USE_MIPS_PREFETCH__
# define USE_PREFETCH
# endif
#endif
diff --git a/libc/string/mips/memset.S b/libc/string/mips/memset.S
index 43034cebb..1c9f14c8c 100644
--- a/libc/string/mips/memset.S
+++ b/libc/string/mips/memset.S
@@ -37,7 +37,7 @@
prefetching. */
#if (__mips == 4) || (__mips == 5) || (__mips == 32) || (__mips == 64)
-# ifndef DISABLE_PREFETCH
+# ifdef __UCLIBC_USE_MIPS_PREFETCH__
# define USE_PREFETCH
# endif
#endif