diff options
Diffstat (limited to 'sys/arch/luna88k')
-rw-r--r-- | sys/arch/luna88k/luna88k/isr.c | 10 | ||||
-rw-r--r-- | sys/arch/luna88k/luna88k/machdep.c | 13 |
2 files changed, 11 insertions, 12 deletions
diff --git a/sys/arch/luna88k/luna88k/isr.c b/sys/arch/luna88k/luna88k/isr.c index 3e9fbaf9d57..0a53ed3731a 100644 --- a/sys/arch/luna88k/luna88k/isr.c +++ b/sys/arch/luna88k/luna88k/isr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: isr.c,v 1.9 2010/12/21 14:56:24 claudio Exp $ */ +/* $OpenBSD: isr.c,v 1.10 2015/05/18 04:06:37 miod Exp $ */ /* $NetBSD: isr.c,v 1.5 2000/07/09 08:08:20 nisimura Exp $ */ /*- @@ -165,7 +165,15 @@ isrdispatch_autovec(int ipl) /* Give all the handlers a chance. */ LIST_FOREACH(isr, list, isr_link) { +#ifdef MULTIPROCESSOR + if (isr->isr_ipl < IPL_CLOCK) + __mp_lock(&kernel_lock); +#endif rc = (*isr->isr_func)(isr->isr_arg); +#ifdef MULTIPROCESSOR + if (isr->isr_ipl < IPL_CLOCK) + __mp_unlock(&kernel_lock); +#endif if (rc != 0) isr->isr_count.ec_count++; handled |= rc; diff --git a/sys/arch/luna88k/luna88k/machdep.c b/sys/arch/luna88k/luna88k/machdep.c index ba74a8efda5..edf6f9cd92a 100644 --- a/sys/arch/luna88k/luna88k/machdep.c +++ b/sys/arch/luna88k/luna88k/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.116 2015/02/25 17:41:22 miod Exp $ */ +/* $OpenBSD: machdep.c,v 1.117 2015/05/18 04:06:37 miod Exp $ */ /* * Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr. * Copyright (c) 1996 Nivas Madhur @@ -868,17 +868,8 @@ luna88k_ext_int(struct trapframe *eframe) case 5: case 4: case 3: -#ifdef MULTIPROCESSOR - if (CPU_IS_PRIMARY(ci)) { - if (old_spl < IPL_SCHED) - __mp_lock(&kernel_lock); -#endif + if (CPU_IS_PRIMARY(ci)) isrdispatch_autovec(cur_int_level); -#ifdef MULTIPROCESSOR - if (old_spl < IPL_SCHED) - __mp_unlock(&kernel_lock); - } -#endif break; default: printf("%s: cpu%d level %d interrupt.\n", |