diff options
author | ian <ian@FreeBSD.org> | 2013-12-13 22:24:00 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2013-12-13 22:24:00 +0000 |
commit | 59d4157d7f6bbdf21d9ca4b7fe6937b93c6e5e36 (patch) | |
tree | bc23f115dbe3a2c901a03b5fc368a56abd86d282 /sys/arm | |
parent | 0c80ffaa7f7724296f184c150e855688b897e197 (diff) | |
download | FreeBSD-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.c | 4 |
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))); } |