aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2025-11-27 16:51:20 +0530
committerAnup Patel <anup@brainfault.org>2025-12-16 20:19:21 +0530
commit843e916dcab4163e84bab9a22ef2db89ff269979 (patch)
treea97e72eeb6da0756ae755f3b3cb392143d6d5b93 /lib
parent5eec86eec8ee92f9c7d4211c34fddf794609ed71 (diff)
downloadopensbi-843e916dcab4163e84bab9a22ef2db89ff269979.tar.gz
opensbi-843e916dcab4163e84bab9a22ef2db89ff269979.tar.bz2
opensbi-843e916dcab4163e84bab9a22ef2db89ff269979.zip
lib: sbi: Expose __sbi_sfence_vma_all() function
The __sbi_sfence_vma_all() can be shared by different parts of OpenSBI so rename __tlb_flush_all() to __sbi_sfence_vma_all() and make it global function. Signed-off-by: Andrew Waterman <andrew@sifive.com> Signed-off-by: Anup Patel <apatel@ventanamicro.com> Link: https://lore.kernel.org/r/20251127112121.334023-2-apatel@ventanamicro.com Signed-off-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/sbi/sbi_hart_pmp.c3
-rw-r--r--lib/sbi/sbi_tlb.c4
2 files changed, 4 insertions, 3 deletions
diff --git a/lib/sbi/sbi_hart_pmp.c b/lib/sbi/sbi_hart_pmp.c
index 2c9f15bc..62bc859a 100644
--- a/lib/sbi/sbi_hart_pmp.c
+++ b/lib/sbi/sbi_hart_pmp.c
@@ -12,6 +12,7 @@
#include <sbi/sbi_hfence.h>
#include <sbi/sbi_math.h>
#include <sbi/sbi_platform.h>
+#include <sbi/sbi_tlb.h>
#include <sbi/riscv_asm.h>
/*
@@ -74,7 +75,7 @@ static void sbi_hart_pmp_fence(void)
* conditions.
*/
if (misa_extension('S')) {
- __asm__ __volatile__("sfence.vma");
+ __sbi_sfence_vma_all();
/*
* If hypervisor mode is supported, flush caching
diff --git a/lib/sbi/sbi_tlb.c b/lib/sbi/sbi_tlb.c
index 01b31f4e..ada60c32 100644
--- a/lib/sbi/sbi_tlb.c
+++ b/lib/sbi/sbi_tlb.c
@@ -29,7 +29,7 @@ static unsigned long tlb_fifo_off;
static unsigned long tlb_fifo_mem_off;
static unsigned long tlb_range_flush_limit;
-static void tlb_flush_all(void)
+void __sbi_sfence_vma_all(void)
{
__asm__ __volatile("sfence.vma");
}
@@ -86,7 +86,7 @@ static void sbi_tlb_local_sfence_vma(struct sbi_tlb_info *tinfo)
sbi_pmu_ctr_incr_fw(SBI_PMU_FW_SFENCE_VMA_RCVD);
if ((start == 0 && size == 0) || (size == SBI_TLB_FLUSH_ALL)) {
- tlb_flush_all();
+ __sbi_sfence_vma_all();
return;
}