[PATCH v2 07/19] cache: andes_llcache: clean up cache inv/wback functions
Mina Hui-Min Chou
minachou at andestech.com
Thu Nov 12 23:11:31 PST 2026
Replace open-coded cache line alignment with ALIGN_DOWN/ALIGN helpers,
initialize line_size at declaration site, and use !size instead of
start == end for the early-out check. Drop redundant blank lines.
Also declare pa in andes_cpu_cache_operation() as phys_addr_t, the type
virt_to_phys() returns.
No functional change intended.
Signed-off-by: Mina Hui-Min Chou <minachou at andestech.com>
---
drivers/cache/andes_llcache.c | 24 ++++++++++--------------
1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/drivers/cache/andes_llcache.c b/drivers/cache/andes_llcache.c
index 61730e218afa..3c271e1e49bf 100644
--- a/drivers/cache/andes_llcache.c
+++ b/drivers/cache/andes_llcache.c
@@ -65,7 +65,7 @@ static void andes_cpu_cache_operation(unsigned long start, unsigned long end,
unsigned long line_size = andes_priv.andes_cache_line_size;
void __iomem *base = andes_priv.llc_base;
int mhartid = smp_processor_id();
- unsigned long pa;
+ phys_addr_t pa;
while (end > start) {
csr_write(CSR_UCCTLBEGINADDR, start);
@@ -101,21 +101,17 @@ static void andes_dma_cache_inv(phys_addr_t paddr, size_t size)
{
unsigned long start = (unsigned long)phys_to_virt(paddr);
unsigned long end = start + size;
- unsigned long line_size;
+ unsigned long line_size = andes_priv.andes_cache_line_size;
unsigned long flags;
- if (unlikely(start == end))
+ if (unlikely(!size))
return;
- line_size = andes_priv.andes_cache_line_size;
-
- start = start & (~(line_size - 1));
- end = ((end + line_size - 1) & (~(line_size - 1)));
+ start = ALIGN_DOWN(start, line_size);
+ end = ALIGN(end, line_size);
local_irq_save(flags);
-
andes_cpu_dcache_inval_range(start, end);
-
local_irq_restore(flags);
}
@@ -123,15 +119,15 @@ static void andes_dma_cache_wback(phys_addr_t paddr, size_t size)
{
unsigned long start = (unsigned long)phys_to_virt(paddr);
unsigned long end = start + size;
- unsigned long line_size;
+ unsigned long line_size = andes_priv.andes_cache_line_size;
unsigned long flags;
- if (unlikely(start == end))
+ if (unlikely(!size))
return;
- line_size = andes_priv.andes_cache_line_size;
- start = start & (~(line_size - 1));
- end = ((end + line_size - 1) & (~(line_size - 1)));
+ start = ALIGN_DOWN(start, line_size);
+ end = ALIGN(end, line_size);
+
local_irq_save(flags);
andes_cpu_dcache_wb_range(start, end);
local_irq_restore(flags);
--
2.34.1
More information about the linux-riscv
mailing list