diff options
author | Piotr Kubaj <pkubaj@FreeBSD.org> | 2022-04-01 19:13:13 +0000 |
---|---|---|
committer | Piotr Kubaj <pkubaj@FreeBSD.org> | 2022-04-05 14:51:27 +0000 |
commit | f17fa892de185a1031d6eaf3b813d0503527f3d1 (patch) | |
tree | 5b6d6a54fc05936c247f6181dcdf7f3bda64a023 | |
parent | ce528519ec6ebacdb68beeac51a32943a67ae648 (diff) | |
download | src-f17fa892de185a1031d6eaf3b813d0503527f3d1.tar.gz src-f17fa892de185a1031d6eaf3b813d0503527f3d1.zip |
powerpc: implement __clear_cache
Merge LLVM commit 81f5c6270cdfcdf80e6296df216b696a7a37c8b5.
This fixes runtime of most notably pcre libraries (currently patched in ports),
and probably also other ports since currently __clear_cache() just calls
SIGABRT on powerpc.
Reviewed by: dim
Differential Revision: https://reviews.freebsd.org/D34736
Approved by: re (gjb)
(cherry picked from commit 57b6ac48a96c99e684ab4dc85b8a87097797dc9f)
(cherry picked from commit 16c3f5d03e984a6039a888eec5bcc58735a7d965)
-rw-r--r-- | contrib/llvm-project/compiler-rt/lib/builtins/clear_cache.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/contrib/llvm-project/compiler-rt/lib/builtins/clear_cache.c b/contrib/llvm-project/compiler-rt/lib/builtins/clear_cache.c index da0715914b41..1f1efbff3ab2 100644 --- a/contrib/llvm-project/compiler-rt/lib/builtins/clear_cache.c +++ b/contrib/llvm-project/compiler-rt/lib/builtins/clear_cache.c @@ -130,7 +130,10 @@ void __clear_cache(void *start, void *end) { __asm __volatile("dsb ish"); } __asm __volatile("isb sy"); -#elif defined(__powerpc64__) +#elif defined(__powerpc__) + // Newer CPUs have a bigger line size made of multiple blocks, so the + // following value is a minimal common denominator for what used to be + // a single block cache line and is therefore inneficient. const size_t line_size = 32; const size_t len = (uintptr_t)end - (uintptr_t)start; |