1 /* ===-- clear_cache.c - Implement __clear_cache ---------------------------===
3 * The LLVM Compiler Infrastructure
5 * This file is dual licensed under the MIT and the University of Illinois Open
6 * Source Licenses. See LICENSE.TXT for details.
8 * ===----------------------------------------------------------------------===
15 #include <libkern/OSCacheControl.h>
19 * The compiler generates calls to __clear_cache() when creating
20 * trampoline functions on the stack for use with nested functions.
21 * It is expected to invalidate the instruction cache for the
25 void __clear_cache(void* start, void* end)
27 #if __i386__ || __x86_64__
29 * Intel processors have a unified instruction and data cache
30 * so there is nothing to do
34 /* On Darwin, sys_icache_invalidate() provides this functionality */
35 sys_icache_invalidate(start, end-start);