summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/arch/hppa/hppa/intr.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/arch/hppa/hppa/intr.c b/sys/arch/hppa/hppa/intr.c
index ea532680ffe..48781e58fa3 100644
--- a/sys/arch/hppa/hppa/intr.c
+++ b/sys/arch/hppa/hppa/intr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: intr.c,v 1.14 2003/12/20 21:49:06 miod Exp $ */
+/* $OpenBSD: intr.c,v 1.15 2003/12/30 21:21:40 mickey Exp $ */
/*
* Copyright (c) 2002 Michael Shalayeff
@@ -60,7 +60,7 @@ struct hppa_iv {
} __packed;
register_t kpsw = PSL_Q | PSL_P | PSL_C | PSL_D;
-volatile int cpl = IPL_NESTED;
+volatile int cpu_inintr, cpl = IPL_NESTED;
u_long cpu_mask;
struct hppa_iv *intr_list, intr_store[8*2*CPU_NINTS], *intr_more = intr_store;
struct hppa_iv intr_table[CPU_NINTS] = {
@@ -223,7 +223,10 @@ cpu_intr(void *v)
{
struct trapframe *frame = v;
u_long mask;
- int s = cpl;
+ int oldintr, s = cpl;
+
+ if ((oldintr = cpu_inintr++))
+ frame->tf_flags |= TFF_INTR;
while ((mask = ipending & ~imask[s])) {
int r, bit = ffs(mask) - 1;
@@ -247,5 +250,6 @@ cpu_intr(void *v)
#endif
mtctl(0, CR_EIEM);
}
+ cpu_inintr--;
cpl = s;
}