Compare commits
1 Commits
sg2044-1.6
...
sg2044-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15c8ab7701 |
@@ -79,12 +79,15 @@ static void sbi_tlb_local_hfence_gvma(struct sbi_tlb_info *tinfo)
|
||||
|
||||
static void sbi_tlb_local_sfence_vma(struct sbi_tlb_info *tinfo)
|
||||
{
|
||||
#ifndef CONFIG_THEAD_C9XX_ERRATA_JTLB
|
||||
unsigned long start = tinfo->start;
|
||||
unsigned long size = tinfo->size;
|
||||
unsigned long i;
|
||||
#endif
|
||||
|
||||
sbi_pmu_ctr_incr_fw(SBI_PMU_FW_SFENCE_VMA_RCVD);
|
||||
|
||||
#ifndef CONFIG_THEAD_C9XX_ERRATA_JTLB
|
||||
if ((start == 0 && size == 0) || (size == SBI_TLB_FLUSH_ALL)) {
|
||||
tlb_flush_all();
|
||||
return;
|
||||
@@ -96,6 +99,10 @@ static void sbi_tlb_local_sfence_vma(struct sbi_tlb_info *tinfo)
|
||||
: "r"(start + i)
|
||||
: "memory");
|
||||
}
|
||||
#else
|
||||
tlb_flush_all();
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void sbi_tlb_local_hfence_vvma_asid(struct sbi_tlb_info *tinfo)
|
||||
@@ -148,7 +155,9 @@ static void sbi_tlb_local_sfence_vma_asid(struct sbi_tlb_info *tinfo)
|
||||
unsigned long start = tinfo->start;
|
||||
unsigned long size = tinfo->size;
|
||||
unsigned long asid = tinfo->asid;
|
||||
#ifndef CONFIG_THEAD_C9XX_ERRATA_JTLB
|
||||
unsigned long i;
|
||||
#endif
|
||||
|
||||
sbi_pmu_ctr_incr_fw(SBI_PMU_FW_SFENCE_VMA_ASID_RCVD);
|
||||
|
||||
@@ -161,12 +170,20 @@ static void sbi_tlb_local_sfence_vma_asid(struct sbi_tlb_info *tinfo)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
#ifndef CONFIG_THEAD_C9XX_ERRATA_JTLB
|
||||
for (i = 0; i < size; i += PAGE_SIZE) {
|
||||
__asm__ __volatile__("sfence.vma %0, %1"
|
||||
:
|
||||
: "r"(start + i), "r"(asid)
|
||||
: "memory");
|
||||
}
|
||||
#else
|
||||
__asm__ __volatile__("sfence.vma x0, %0"
|
||||
:
|
||||
: "r"(asid)
|
||||
: "memory");
|
||||
#endif
|
||||
}
|
||||
|
||||
static void sbi_tlb_local_fence_i(struct sbi_tlb_info *tinfo)
|
||||
|
||||
@@ -58,6 +58,13 @@ config PLATFORM_SOPHGO_SG2042
|
||||
select THEAD_C9XX_PMU
|
||||
default n
|
||||
|
||||
config PLATFORM_SOPHGO_SG2044
|
||||
bool "Sophgo sg2044 support"
|
||||
select THEAD_C9XX_ERRATA
|
||||
select THEAD_C9XX_ERRATA_JTLB
|
||||
select THEAD_C9XX_PMU
|
||||
default n
|
||||
|
||||
config PLATFORM_STARFIVE_JH7110
|
||||
bool "StarFive JH7110 support"
|
||||
default n
|
||||
|
||||
@@ -4,6 +4,7 @@ CONFIG_PLATFORM_RENESAS_RZFIVE=y
|
||||
CONFIG_PLATFORM_SIFIVE_FU540=y
|
||||
CONFIG_PLATFORM_SIFIVE_FU740=y
|
||||
CONFIG_PLATFORM_SOPHGO_SG2042=y
|
||||
CONFIG_PLATFORM_SOPHGO_SG2044=y
|
||||
CONFIG_PLATFORM_STARFIVE_JH7110=y
|
||||
CONFIG_PLATFORM_THEAD=y
|
||||
CONFIG_FDT_CPPC=y
|
||||
|
||||
@@ -7,3 +7,7 @@ config THEAD_C9XX_PMU
|
||||
config THEAD_C9XX_ERRATA
|
||||
bool "T-HEAD c9xx errata support"
|
||||
default n
|
||||
|
||||
config THEAD_C9XX_ERRATA_JTLB
|
||||
bool "T-HEAD c9xx errata(JTLB) support"
|
||||
default n
|
||||
|
||||
Reference in New Issue
Block a user