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);
35
35
#include <machine/sysarch.h>
36
36
#endif
37
37
38
- #if defined(__OpenBSD__ ) && (defined(__arm__ ) || defined(__mips__ ))
38
+ #if defined(__OpenBSD__ ) && (defined(__arm__ ) || defined(__mips__ ) || defined( __riscv ) )
39
39
// clang-format off
40
40
#include <sys/types.h>
41
41
#include <machine/sysarch.h>
@@ -166,6 +166,13 @@ void __clear_cache(void *start, void *end) {
166
166
: "=r" (start_reg )
167
167
: "r" (start_reg ), "r" (end_reg ), "r" (flags ), "r" (syscall_nr ));
168
168
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 );
169
176
#else
170
177
#if __APPLE__
171
178
// On Darwin, sys_icache_invalidate() provides this functionality
You can’t perform that action at this time.
0 commit comments