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 * ===----------------------------------------------------------------------===
14 #include <libkern/OSCacheControl.h>
18 * The compiler generates calls to __clear_cache() when creating
19 * trampoline functions on the stack for use with nested functions.
20 * It is expected to invalidate the instruction cache for the
24 void __clear_cache(void* start
, void* end
)
26 #if __i386__ || __x86_64__
28 * Intel processors have a unified instruction and data cache
29 * so there is nothing to do
33 /* On Darwin, sys_icache_invalidate() provides this functionality */
34 sys_icache_invalidate(start
, end
-start
);