Android uses cacheflush(long start, long end, long flags) for MIPS.
authorAkira Hatanaka <ahatanaka@mips.com>
Thu, 14 Mar 2013 19:01:00 +0000 (19:01 +0000)
committerAkira Hatanaka <ahatanaka@mips.com>
Thu, 14 Mar 2013 19:01:00 +0000 (19:01 +0000)
Patch by Stephen Hines.

llvm-svn: 177101

llvm/lib/Support/Unix/Memory.inc

index e00394e..e9b26bd 100644 (file)
@@ -332,7 +332,16 @@ void Memory::InvalidateInstructionCache(const void *Addr,
   __clear_cache(const_cast<char *>(Start), const_cast<char *>(End));
 #  elif defined(__mips__)
   const char *Start = static_cast<const char *>(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<long>(const_cast<char *>(Start));
+  long LEnd = reinterpret_cast<long>(const_cast<char *>(End));
+  cacheflush(LStart, LEnd, BCACHE);
+#    else
   cacheflush(const_cast<char *>(Start), Len, BCACHE);
+#    endif
 #  endif
 
 #endif  // end apple