linux-mips-fnet
[Top] [All Lists]

RE: Missing 'else' in dec/irq.c:unmask_irq?

To: "Bradley D. LaRonde" <brad@ltc.com>
Subject: RE: Missing 'else' in dec/irq.c:unmask_irq?
From: Harald Koerfgen <Harald.Koerfgen@home.ivm.de>
Date: Fri, 23 Jul 1999 21:34:55 +0200 (MEST)
Cc: linux-mips@fnet.fr
In-reply-to: <005601bed535$d8553b80$b1119526@tecra.ltc.com>
Organization: none
Reply-to: "Harald Koerfgen" <Harald.Koerfgen@home.ivm.de>
Sender: harry@franz.no.dom
Hi Brad,

On 23-Jul-99 Bradley D. LaRonde wrote:
> In dec/irq.c:unmask_irq, I'm wondering why there is no 'else' right before
> the call to set_cpo_status.  It's in mask_irq, but not in unmask_irq.

It's nonexistant by purpose.

I tried to write an irq handler which is abstract enough to work on five
completely different machines wrt IRQs (thus the somewhat nontransparent setup
routines in arch/mips/dec/setup.c). Some DECstations have an IOASIC which is
wired to one of the six CPU hardware interrupts. The IOASIC handles up to 32
interrupts itself.

arch/mips/kernel/head.S disables the CPU interrupts, so when the first IOASIC
interrupt is unmasked, the appropriate CPU interrupt is unconditionally enabled
as well and will never be disabled again because another IOASIC interrupt may
be enabled.

I am simply relying on the assumption that the IOASIC will not generate an
interrupt if all interrupts are disabled in the IOASIC itself and it seems to
work.

---
Regards,
Harald

<Prev in Thread] Current Thread [Next in Thread>