From 21eecf43848fdc94bed5683c16a7f3d8ce6d1a70 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Thu, 14 Mar 2013 19:01:00 +0000 Subject: Android uses cacheflush(long start, long end, long flags) for MIPS. Patch by Stephen Hines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177101 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/Unix/Memory.inc | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib/Support/Unix/Memory.inc') diff --git a/lib/Support/Unix/Memory.inc b/lib/Support/Unix/Memory.inc index e00394ec6a..e9b26bdb80 100644 --- a/lib/Support/Unix/Memory.inc +++ b/lib/Support/Unix/Memory.inc @@ -332,7 +332,16 @@ void Memory::InvalidateInstructionCache(const void *Addr, __clear_cache(const_cast(Start), const_cast(End)); # elif defined(__mips__) const char *Start = static_cast(Addr); +# if defined(ANDROID) + // The declaration of "cacheflush" in Android bionic: + // extern int cacheflush(long start, long end, long flags); + const char *End = Start + Len; + long LStart = reinterpret_cast(const_cast(Start)); + long LEnd = reinterpret_cast(const_cast(End)); + cacheflush(LStart, LEnd, BCACHE); +# else cacheflush(const_cast(Start), Len, BCACHE); +# endif # endif #endif // end apple -- cgit v1.2.3