File tree Expand file tree Collapse file tree 1 file changed +8
-1
lines changed Expand file tree Collapse file tree 1 file changed +8
-1
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ uintptr_t GetCurrentProcess(void);
3535#include <machine/sysarch.h>
3636#endif
3737
38- #if defined(__OpenBSD__ ) && (defined(__arm__ ) || defined(__mips__ ))
38+ #if defined(__OpenBSD__ ) && (defined(__arm__ ) || defined(__mips__ ) || defined( __riscv ) )
3939// clang-format off
4040#include <sys/types.h>
4141#include <machine/sysarch.h>
@@ -166,6 +166,13 @@ void __clear_cache(void *start, void *end) {
166166 : "=r" (start_reg )
167167 : "r" (start_reg ), "r" (end_reg ), "r" (flags ), "r" (syscall_nr ));
168168 assert (start_reg == 0 && "Cache flush syscall failed." );
169+ #elif defined(__riscv ) && defined(__OpenBSD__ )
170+ struct riscv_sync_icache_args arg ;
171+
172+ arg .addr = (uintptr_t )start ;
173+ arg .len = (uintptr_t )end - (uintptr_t )start ;
174+
175+ sysarch (RISCV_SYNC_ICACHE , & arg );
169176#else
170177#if __APPLE__
171178 // On Darwin, sys_icache_invalidate() provides this functionality
You can’t perform that action at this time.
0 commit comments