Loading compiler-rt/lib/builtins/clear_cache.c +8 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ uintptr_t GetCurrentProcess(void); #include <machine/sysarch.h> #endif #if defined(__OpenBSD__) && (defined(__arm__) || defined(__mips__)) #if defined(__OpenBSD__) && (defined(__arm__) || defined(__mips__) || defined(__riscv)) // clang-format off #include <sys/types.h> #include <machine/sysarch.h> Loading Loading @@ -166,6 +166,13 @@ void __clear_cache(void *start, void *end) { : "=r"(start_reg) : "r"(start_reg), "r"(end_reg), "r"(flags), "r"(syscall_nr)); assert(start_reg == 0 && "Cache flush syscall failed."); #elif defined(__riscv) && defined(__OpenBSD__) struct riscv_sync_icache_args arg; arg.addr = (uintptr_t)start; arg.len = (uintptr_t)end - (uintptr_t)start; sysarch(RISCV_SYNC_ICACHE, &arg); #else #if __APPLE__ // On Darwin, sys_icache_invalidate() provides this functionality Loading Loading
compiler-rt/lib/builtins/clear_cache.c +8 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ uintptr_t GetCurrentProcess(void); #include <machine/sysarch.h> #endif #if defined(__OpenBSD__) && (defined(__arm__) || defined(__mips__)) #if defined(__OpenBSD__) && (defined(__arm__) || defined(__mips__) || defined(__riscv)) // clang-format off #include <sys/types.h> #include <machine/sysarch.h> Loading Loading @@ -166,6 +166,13 @@ void __clear_cache(void *start, void *end) { : "=r"(start_reg) : "r"(start_reg), "r"(end_reg), "r"(flags), "r"(syscall_nr)); assert(start_reg == 0 && "Cache flush syscall failed."); #elif defined(__riscv) && defined(__OpenBSD__) struct riscv_sync_icache_args arg; arg.addr = (uintptr_t)start; arg.len = (uintptr_t)end - (uintptr_t)start; sysarch(RISCV_SYNC_ICACHE, &arg); #else #if __APPLE__ // On Darwin, sys_icache_invalidate() provides this functionality Loading