0002-RISC-V-Add-cache-flush-syscall.patch 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. From d471b10ce2abe4f3dfec6d24ad0f8ef1fe1070b3 Mon Sep 17 00:00:00 2001
  2. From: Drew DeVault <sir@cmpwn.com>
  3. Date: Sun, 16 Dec 2018 10:55:09 -0500
  4. Subject: [PATCH 2/5] RISC-V: Add cache flush syscall
  5. ---
  6. arch/riscv32/bits/syscall.h.in | 1 +
  7. arch/riscv64/bits/syscall.h.in | 1 +
  8. src/linux/cache.c | 9 +++++++++
  9. 3 files changed, 11 insertions(+)
  10. diff --git a/arch/riscv32/bits/syscall.h.in b/arch/riscv32/bits/syscall.h.in
  11. index 3c81c107..11393c29 100644
  12. --- a/arch/riscv32/bits/syscall.h.in
  13. +++ b/arch/riscv32/bits/syscall.h.in
  14. @@ -275,4 +275,5 @@
  15. #define __NR_pkey_alloc 289
  16. #define __NR_pkey_free 290
  17. #define __NR_sysriscv __NR_arch_specific_syscall
  18. +#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
  19. diff --git a/arch/riscv64/bits/syscall.h.in b/arch/riscv64/bits/syscall.h.in
  20. index 3c81c107..11393c29 100644
  21. --- a/arch/riscv64/bits/syscall.h.in
  22. +++ b/arch/riscv64/bits/syscall.h.in
  23. @@ -275,4 +275,5 @@
  24. #define __NR_pkey_alloc 289
  25. #define __NR_pkey_free 290
  26. #define __NR_sysriscv __NR_arch_specific_syscall
  27. +#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
  28. diff --git a/src/linux/cache.c b/src/linux/cache.c
  29. index 84a138a4..4ce919cf 100644
  30. --- a/src/linux/cache.c
  31. +++ b/src/linux/cache.c
  32. @@ -15,3 +15,12 @@ int __cachectl(void *addr, int len, int op)
  33. }
  34. weak_alias(__cachectl, cachectl);
  35. #endif
  36. +
  37. +#ifdef SYS_riscv_flush_icache
  38. +int __riscv_flush_icache(void *start, void *end, unsigned long int flags)
  39. +{
  40. + // TODO: Use vdso
  41. + return syscall(SYS_riscv_flush_icache, start, end, flags);
  42. +}
  43. +weak_alias(__riscv_flush_icache, riscv_flush_icache);
  44. +#endif
  45. --
  46. 2.20.1