summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plat/common/sys/clint.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/plat/common/sys/clint.c b/plat/common/sys/clint.c
index b6c6e9b3..e84c3829 100644
--- a/plat/common/sys/clint.c
+++ b/plat/common/sys/clint.c
@@ -22,8 +22,7 @@ void clint_ipi_inject(u32 target_hart, u32 source_hart)
return;
/* Set CLINT IPI */
- __io_bw();
- atomic_raw_xchg_uint(&clint_ipi[target_hart], 1);
+ writel(1, &clint_ipi[target_hart]);
}
void clint_ipi_sync(u32 target_hart, u32 source_hart)
@@ -41,15 +40,12 @@ void clint_ipi_sync(u32 target_hart, u32 source_hart)
if (!target_ipi)
break;
- __io_bw();
incoming_ipi |=
atomic_raw_xchg_uint(&clint_ipi[source_hart], 0);
}
- if (incoming_ipi) {
- __io_bw();
- atomic_raw_xchg_uint(&clint_ipi[source_hart], incoming_ipi);
- }
+ if (incoming_ipi)
+ writel(incoming_ipi, &clint_ipi[source_hart]);
}
void clint_ipi_clear(u32 target_hart)
@@ -58,8 +54,7 @@ void clint_ipi_clear(u32 target_hart)
return;
/* Clear CLINT IPI */
- __io_bw();
- atomic_raw_xchg_uint(&clint_ipi[target_hart], 0);
+ writel(0, &clint_ipi[target_hart]);
}
int clint_warm_ipi_init(u32 target_hart)