Index: b/package/uclibc/0006-mips-disable-prefetch-memcpy_memset.patch =================================================================== --- /dev/null +++ b/package/uclibc/0006-mips-disable-prefetch-memcpy_memset.patch @@ -0,0 +1,62 @@ +From 557f663a8cb7de8cbbfa9ce63b2c956bcaad194c Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sun, 29 May 2016 08:53:18 +0200 +Subject: 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. +--- + extra/Configs/Config.mips | 7 +++++++ + libc/string/mips/memcpy.S | 2 +- + libc/string/mips/memset.S | 2 +- + 3 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/extra/Configs/Config.mips b/extra/Configs/Config.mips +index e0b62dd..919e80c 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 59f9f0a..3825875 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 43034ce..1c9f14c 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 +-- +cgit v0.11.2-3-g2eb4 +