Re: Fix libcompiler_rt __clear_cache() on armv7

2019-09-28 Thread Patrick Wildt
Committed, thanks!

On Wed, Sep 25, 2019 at 09:45:41AM -0700, Josh Elsasser wrote:
> I came across some code which uses __clear_cache() from
> libgcc/libcompiler_rt on 32-bit arm. Currently that just falls through
> to abort(), but enabling the existing sysarch() code works for me.
> 
> diff --git a/lib/libcompiler_rt/clear_cache.c 
> b/lib/libcompiler_rt/clear_cache.c
> index 451f1c0b124..4902d761b81 100644
> --- a/lib/libcompiler_rt/clear_cache.c
> +++ b/lib/libcompiler_rt/clear_cache.c
> @@ -33,7 +33,7 @@ uintptr_t GetCurrentProcess(void);
>#include 
>  #endif
>  
> -#if defined(__OpenBSD__) && defined(__mips__)
> +#if defined(__OpenBSD__) && (defined(__mips__) || defined(__arm__))
>#include 
>#include 
>  #endif
> @@ -102,7 +102,7 @@ void __clear_cache(void *start, void *end) {
>   * so there is nothing to do
>   */
>  #elif defined(__arm__) && !defined(__APPLE__)
> -#if defined(__FreeBSD__) || defined(__NetBSD__)
> +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
>  struct arm_sync_icache_args arg;
>  
>  arg.addr = (uintptr_t)start;
> 



Fix libcompiler_rt __clear_cache() on armv7

2019-09-25 Thread Josh Elsasser
I came across some code which uses __clear_cache() from
libgcc/libcompiler_rt on 32-bit arm. Currently that just falls through
to abort(), but enabling the existing sysarch() code works for me.

diff --git a/lib/libcompiler_rt/clear_cache.c b/lib/libcompiler_rt/clear_cache.c
index 451f1c0b124..4902d761b81 100644
--- a/lib/libcompiler_rt/clear_cache.c
+++ b/lib/libcompiler_rt/clear_cache.c
@@ -33,7 +33,7 @@ uintptr_t GetCurrentProcess(void);
   #include 
 #endif
 
-#if defined(__OpenBSD__) && defined(__mips__)
+#if defined(__OpenBSD__) && (defined(__mips__) || defined(__arm__))
   #include 
   #include 
 #endif
@@ -102,7 +102,7 @@ void __clear_cache(void *start, void *end) {
  * so there is nothing to do
  */
 #elif defined(__arm__) && !defined(__APPLE__)
-#if defined(__FreeBSD__) || defined(__NetBSD__)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
 struct arm_sync_icache_args arg;
 
 arg.addr = (uintptr_t)start;