diff options
-rw-r--r-- | llvm/lib/Support/Unix/Memory.inc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/Support/Unix/Memory.inc b/llvm/lib/Support/Unix/Memory.inc index cc5a43cd282..adbfff2f59a 100644 --- a/llvm/lib/Support/Unix/Memory.inc +++ b/llvm/lib/Support/Unix/Memory.inc @@ -25,6 +25,10 @@ #include <mach/mach.h> #endif +#ifdef __Fuchsia__ +#include <zircon/syscalls.h> +#endif + #if defined(__mips__) # if defined(__OpenBSD__) # include <mips64/sysarch.h> @@ -33,7 +37,7 @@ # endif #endif -#ifdef __APPLE__ +#if defined(__APPLE__) extern "C" void sys_icache_invalidate(const void *Addr, size_t len); #else extern "C" void __clear_cache(void *, void*); @@ -206,6 +210,11 @@ void Memory::InvalidateInstructionCache(const void *Addr, sys_icache_invalidate(const_cast<void *>(Addr), Len); # endif +#elif defined(__Fuchsia__) + + zx_status_t Status = zx_cache_flush(Addr, Len, ZX_CACHE_FLUSH_INSN); + assert(Status == ZX_OK && "cannot invalidate instruction cache"); + #else # if (defined(__POWERPC__) || defined (__ppc__) || \ |