summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/ps3/ps3pic.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/powerpc/ps3/ps3pic.c')
-rw-r--r--sys/powerpc/ps3/ps3pic.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/powerpc/ps3/ps3pic.c b/sys/powerpc/ps3/ps3pic.c
index 9b40f6c..374d96e 100644
--- a/sys/powerpc/ps3/ps3pic.c
+++ b/sys/powerpc/ps3/ps3pic.c
@@ -166,12 +166,13 @@ ps3pic_dispatch(device_t dev, struct trapframe *tf)
sc = device_get_softc(dev);
if (PCPU_GET(cpuid) == 0) {
- bitmap = sc->bitmap_thread0[0];
+ bitmap = atomic_readandclear_64(&sc->bitmap_thread0[0]);
mask = sc->mask_thread0[0];
} else {
- bitmap = sc->bitmap_thread1[0];
+ bitmap = atomic_readandclear_64(&sc->bitmap_thread1[0]);
mask = sc->mask_thread1[0];
}
+ powerpc_sync();
while ((irq = ffsl(bitmap & mask) - 1) != -1) {
bitmap &= ~(1UL << irq);
OpenPOWER on IntegriCloud