summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2013-12-13 22:24:00 +0000
committerian <ian@FreeBSD.org>2013-12-13 22:24:00 +0000
commit59d4157d7f6bbdf21d9ca4b7fe6937b93c6e5e36 (patch)
treebc23f115dbe3a2c901a03b5fc368a56abd86d282 /sys/arm
parent0c80ffaa7f7724296f184c150e855688b897e197 (diff)
downloadFreeBSD-src-59d4157d7f6bbdf21d9ca4b7fe6937b93c6e5e36.zip
FreeBSD-src-59d4157d7f6bbdf21d9ca4b7fe6937b93c6e5e36.tar.gz
MFC r257419:
Do not EOI an interrupt until the point after the filter handlers / before threaded handlers.
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/arm/gic.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/arm/arm/gic.c b/sys/arm/arm/gic.c
index a73011f..d11c600 100644
--- a/sys/arm/arm/gic.c
+++ b/sys/arm/arm/gic.c
@@ -271,7 +271,6 @@ arm_get_next_irq(int last_irq)
printf("Spurious interrupt detected [0x%08x]\n", active_irq);
return -1;
}
- gic_c_write_4(GICC_EOIR, active_irq);
return active_irq;
}
@@ -279,14 +278,15 @@ arm_get_next_irq(int last_irq)
void
arm_mask_irq(uintptr_t nb)
{
+
gic_d_write_4(GICD_ICENABLER(nb >> 5), (1UL << (nb & 0x1F)));
+ gic_c_write_4(GICC_EOIR, nb);
}
void
arm_unmask_irq(uintptr_t nb)
{
- gic_c_write_4(GICC_EOIR, nb);
gic_d_write_4(GICD_ISENABLER(nb >> 5), (1UL << (nb & 0x1F)));
}
OpenPOWER on IntegriCloud