From 4767b4613e76313990097892c915973aa614aa5f Mon Sep 17 00:00:00 2001 From: Haojin Tang Date: Tue, 2 Sep 2025 22:04:10 +0800 Subject: [PATCH] fix(risc-v, virt64, plic): use volatile rw for claim and complete --- bsp/xuantie/virt64/c906/libcpu/plic.c | 4 ++-- libcpu/risc-v/virt64/plic.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bsp/xuantie/virt64/c906/libcpu/plic.c b/bsp/xuantie/virt64/c906/libcpu/plic.c index 8aab8b1292b..051e89c5ced 100644 --- a/bsp/xuantie/virt64/c906/libcpu/plic.c +++ b/bsp/xuantie/virt64/c906/libcpu/plic.c @@ -93,7 +93,7 @@ void plic_set_threshold(int threshold) int plic_claim(void) { int hart = __raw_hartid(); - int irq = *(uint32_t *)PLIC_CLAIM(hart); + int irq = readl((uint32_t *)PLIC_CLAIM(hart)); return irq; } @@ -110,7 +110,7 @@ int plic_claim(void) void plic_complete(int irq) { int hart = __raw_hartid(); - *(uint32_t *)PLIC_COMPLETE(hart) = irq; + writel(irq, (uint32_t *)PLIC_COMPLETE(hart)); } void plic_set_ie(rt_uint32_t word_index, rt_uint32_t val) diff --git a/libcpu/risc-v/virt64/plic.c b/libcpu/risc-v/virt64/plic.c index 8aab8b1292b..051e89c5ced 100644 --- a/libcpu/risc-v/virt64/plic.c +++ b/libcpu/risc-v/virt64/plic.c @@ -93,7 +93,7 @@ void plic_set_threshold(int threshold) int plic_claim(void) { int hart = __raw_hartid(); - int irq = *(uint32_t *)PLIC_CLAIM(hart); + int irq = readl((uint32_t *)PLIC_CLAIM(hart)); return irq; } @@ -110,7 +110,7 @@ int plic_claim(void) void plic_complete(int irq) { int hart = __raw_hartid(); - *(uint32_t *)PLIC_COMPLETE(hart) = irq; + writel(irq, (uint32_t *)PLIC_COMPLETE(hart)); } void plic_set_ie(rt_uint32_t word_index, rt_uint32_t val)