Subject: Re: splx() and dosoftints()
To: None <sommerfeld@orchard.arlington.ma.us>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: port-arm32
Date: 09/24/2000 16:28:12
In <20000923204939.642742A1B@orchard.arlington.ma.us>
sommerfeld@orchard.arlington.ma.us wrote:

> > In arm32/arm32/spl.S splx() calls dosoftints() before return,
> > but arm32/arm32/intr.c:dosoftints() calls splx() if any softintr
> > routines are called. Does this cause any problem or not?

> Is your concern that there might be unbounded recursion if the softint
> handler (or something which interrupts it) posts another softint?

Yes. (I think it would work correctly anyway.)
On i386, softintr is handled as well as real hardware
interrupts (called via IDTVEC() in i386/isa/icu.s).
softintr handers are called directly from spllower()
so no recursion may be occured.

> > Should splx()/spllower() check softintr or not?

> This is needed so that softints can run promptly.

Ok. I just wondered because most m68k ports only check
ssir and astpending in locore.s:rei().

BTW, are there any plan to rewrite arm32/intr.c?
(to replace some functions with macros etc.)
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp