Subject: anyone booted sun2 or sun3 kernels in the last 3 months?
To: None <port-sun2@netbsd.org, port-sun3@netbsd.org, yamt@netbsd.org>
From: matthew green <mrg@eterna.com.au>
List: port-sun3
Date: 06/24/2006 12:28:04
hi folks.
i'm trying to run sun2 kernel with GCC4 and the kernel is not booting
in tme. it's losing early in MD code setting up softintr's. i think
the problem was introduced in march by yamt with this change (i
haven't really looked at the previous code at all to verify the
original source of the bug):
Modified Files:
src/sys/arch/sun3/include: intr.h
src/sys/arch/sun68k/include: intr.h
src/sys/arch/sun68k/sun68k: isr.c
Log Message:
implement splraiseipl() for sun2 and sun3. reviewed by Izumi Tsutsui.
To generate a diff of this commit:
cvs rdiff -r1.6 -r1.7 src/sys/arch/sun3/include/intr.h
cvs rdiff -r1.6 -r1.7 src/sys/arch/sun68k/include/intr.h
cvs rdiff -r1.7 -r1.8 src/sys/arch/sun68k/sun68k/isr.c
what happens is that we have:
#define _IPL_SOFT_LEVEL_MIN 1
#define _IPL_SOFT_LEVEL_MAX 3
but
#define IPL_SOFTNET (PSL_S|PSL_IPL1)
and
#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?
thanks.
.mrg.