Subject: Re: IREENT_MAGIC
To: =?ISO-8859-1?Q?Edgar_Fu=DF?= <ef@math.uni-bonn.de>
From: Frank van der Linden <fvdl@netbsd.org>
List: port-amd64
Date: 03/22/2007 21:28:12
Edgar Fuß wrote:
> Could someone please enlighten me how IREENT_MAGIC is supposed to work?
> I guess this is to prevent re-enabling an interrupt when returning
> from a nested one.
It's part of the soft interrupt masking scheme that the i386 port and
the amd64 port use. In splx(), the code may discover that some
interrupts have been deferred, so it calls them by hand, faking an
actual interrupt stack frame. The error part of the frame is unused, and
is, in this case, abused to be able to recognize that you're not in a
'real' interrupt context, but in a faked one. This is useful for DDB
backtraces, for example.
- Frank