summaryrefslogtreecommitdiff
path: root/sys/arch/arm/cortex
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2019-09-25 09:21:50 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2019-09-25 09:21:50 +0000
commit95a2391ec92607fa8730813fa944618b00306ab5 (patch)
treeaa80207e8f678914c6d02d1f20cd673216621f11 /sys/arch/arm/cortex
parent01e5cfb2fad855b48b2828ba43cd6c8daaed2643 (diff)
Enable interrupts while running interrupt handlers like we do on arm64.
ok patrick@, jsg@
Diffstat (limited to 'sys/arch/arm/cortex')
-rw-r--r--sys/arch/arm/cortex/ampintc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/arch/arm/cortex/ampintc.c b/sys/arch/arm/cortex/ampintc.c
index 99579049abd..c3a99c85cbc 100644
--- a/sys/arch/arm/cortex/ampintc.c
+++ b/sys/arch/arm/cortex/ampintc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ampintc.c,v 1.25 2019/09/22 19:13:45 kettenis Exp $ */
+/* $OpenBSD: ampintc.c,v 1.26 2019/09/25 09:21:49 kettenis Exp $ */
/*
* Copyright (c) 2007,2009,2011 Dale Rahn <drahn@openbsd.org>
*
@@ -511,7 +511,7 @@ ampintc_irq_handler(void *frame)
struct intrhand *ih;
void *arg;
uint32_t iack_val;
- int irq, pri, s;
+ int irq, pri, s, handled;
iack_val = ampintc_iack();
#ifdef DEBUG_INTC
@@ -559,7 +559,10 @@ ampintc_irq_handler(void *frame)
else
arg = frame;
- if (ih->ih_func(arg))
+ enable_interrupts(PSR_I);
+ handled = ih->ih_func(arg);
+ disable_interrupts(PSR_I);
+ if (handled)
ih->ih_count.ec_count++;
#ifdef MULTIPROCESSOR