123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- From d471b10ce2abe4f3dfec6d24ad0f8ef1fe1070b3 Mon Sep 17 00:00:00 2001
- From: Drew DeVault <sir@cmpwn.com>
- Date: Sun, 16 Dec 2018 10:55:09 -0500
- Subject: [PATCH 2/5] RISC-V: Add cache flush syscall
- ---
- arch/riscv32/bits/syscall.h.in | 1 +
- arch/riscv64/bits/syscall.h.in | 1 +
- src/linux/cache.c | 9 +++++++++
- 3 files changed, 11 insertions(+)
- diff --git a/arch/riscv32/bits/syscall.h.in b/arch/riscv32/bits/syscall.h.in
- index 3c81c107..11393c29 100644
- --- a/arch/riscv32/bits/syscall.h.in
- +++ b/arch/riscv32/bits/syscall.h.in
- @@ -275,4 +275,5 @@
- #define __NR_pkey_alloc 289
- #define __NR_pkey_free 290
- #define __NR_sysriscv __NR_arch_specific_syscall
- +#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
-
- diff --git a/arch/riscv64/bits/syscall.h.in b/arch/riscv64/bits/syscall.h.in
- index 3c81c107..11393c29 100644
- --- a/arch/riscv64/bits/syscall.h.in
- +++ b/arch/riscv64/bits/syscall.h.in
- @@ -275,4 +275,5 @@
- #define __NR_pkey_alloc 289
- #define __NR_pkey_free 290
- #define __NR_sysriscv __NR_arch_specific_syscall
- +#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
-
- diff --git a/src/linux/cache.c b/src/linux/cache.c
- index 84a138a4..4ce919cf 100644
- --- a/src/linux/cache.c
- +++ b/src/linux/cache.c
- @@ -15,3 +15,12 @@ int __cachectl(void *addr, int len, int op)
- }
- weak_alias(__cachectl, cachectl);
- #endif
- +
- +#ifdef SYS_riscv_flush_icache
- +int __riscv_flush_icache(void *start, void *end, unsigned long int flags)
- +{
- + // TODO: Use vdso
- + return syscall(SYS_riscv_flush_icache, start, end, flags);
- +}
- +weak_alias(__riscv_flush_icache, riscv_flush_icache);
- +#endif
- --
- 2.20.1
|