[llvm-commits] [llvm] r81655 - /llvm/trunk/lib/System/Memory.cpp

Daniel Dunbar daniel at zuster.org
Sat Sep 12 19:20:28 PDT 2009


Tanya, please take this for 2.6.

 - Daniel

On Sat, Sep 12, 2009 at 4:29 PM, Daniel Dunbar <daniel at zuster.org> wrote:
> Author: ddunbar
> Date: Sat Sep 12 18:29:02 2009
> New Revision: 81655
>
> URL: http://llvm.org/viewvc/llvm-project?rev=81655&view=rev
> Log:
> Experimental fix for PR4960.
>  - Could we just always implement this as __clear_cache for __GNUC__?
>
> Modified:
>    llvm/trunk/lib/System/Memory.cpp
>
> Modified: llvm/trunk/lib/System/Memory.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/System/Memory.cpp?rev=81655&r1=81654&r2=81655&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/System/Memory.cpp (original)
> +++ llvm/trunk/lib/System/Memory.cpp Sat Sep 12 18:29:02 2009
> @@ -37,13 +37,16 @@
>
>  // icache invalidation for PPC and ARM.
>  #if defined(__APPLE__)
> -#if (defined(__POWERPC__) || defined (__ppc__) || \
> +
> +#  if (defined(__POWERPC__) || defined (__ppc__) || \
>      defined(_POWER) || defined(_ARCH_PPC)) || defined(__arm__)
>   sys_icache_invalidate(Addr, Len);
> -#endif
> +#  endif
> +
>  #else
> -#if (defined(__POWERPC__) || defined (__ppc__) || \
> -     defined(_POWER) || defined(_ARCH_PPC)) && defined(__GNUC__)
> +
> +#  if (defined(__POWERPC__) || defined (__ppc__) || \
> +       defined(_POWER) || defined(_ARCH_PPC)) && defined(__GNUC__)
>   const size_t LineSize = 32;
>
>   const intptr_t Mask = ~(LineSize - 1);
> @@ -57,6 +60,12 @@
>   for (intptr_t Line = StartLine; Line < EndLine; Line += LineSize)
>     asm volatile("icbi 0, %0" : : "r"(Line));
>   asm volatile("isync");
> -#endif
> +#  elif defined(__arm__) && defined(__GNUC__)
> +  // FIXME: Can we safely always call this for __GNUC__ everywhere?
> +  char *Start = (char*) Addr;
> +  char *End = Start + Len;
> +  __clear_cache(Start, End);
> +#  endif
> +
>  #endif  // end apple
>  }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>




More information about the llvm-commits mailing list