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)