Subject: Re: anyone booted sun2 or sun3 kernels in the last 3 months?
To: None <firstname.lastname@example.org>
From: Izumi Tsutsui <email@example.com>
Date: 06/24/2006 12:08:30
> what happens is that we have:
> #define _IPL_SOFT_LEVEL_MIN 1
> #define _IPL_SOFT_LEVEL_MAX 3
> #define IPL_SOFTNET (PSL_S|PSL_IPL1)
> #define PSL_IPL1 0x0100 /* interrupt priority level 1 */
> #define PSL_S 0x2000 /* supervisor enable bit */
> and then in sun68k/isr.c we have:
> softintr_establish(int ipl, void (*func)(void *), void *arg)
> ipl &= ~PSL_S;
> if (ipl < _IPL_SOFT_LEVEL_MIN || ipl > _IPL_SOFT_LEVEL_MAX)
> panic("softintr_establish: unsupported soft IPL %d", ipl);
> ipl = PSL_IPL1 at this point. the caller is just a few lines above
> this in softintr_init():
> softnet_cookie = softintr_establish(IPL_SOFTNET,
> (void (*)(void *)) netintr, NULL);
> what's the right fix here?
I guess the problem is that IPL_* macros are now defined as
arguments passed to splraseipl() (in <sys/spl.h>) for each spl levels
but some ports already have had their own usage/meanings of IPL_* macros.
As noted in PR 33218, maybe it's better to introduce new macro for
splraisespl() args or MD usage of IPL_*.
(Note sun3 doesn't use sun68k/isr.c and doesn't have generic software