The problem here is applying "test_and_set_bit" to a poorly-aligned char.
The variable is "interrupt" in a "struct device" (line 192 in netdevice.h).
For the UDB, this can be kludged-around by changing the two char-s to int-s.
Somebody else should know the correct solution. The code in question is
around line 1560 in de4x5.c:
static void
de4x5_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
struct device *dev = (struct device *)dev_id;
struct de4x5_private *lp;
s32 imr, omr, sts, limit;
u_long iobase;
if (dev == NULL) {
printk ("de4x5_interrupt(): irq %d for unknown device.\n", irq);
return;
}
lp = (struct de4x5_private *)dev->priv;
iobase = dev->base_addr;
if (test_and_set_bit(MASK_INTERRUPTS, (void*) &dev->interrupt)) <=======
printk("%s: Re-entering the interrupt handler.\n", dev->name);
There is an unrelated typo in asm-alpha/serial.h. The problem is a hanging-
tab at the end of the line:
--- linux/include/asm-alpha/serial.h.orig Fri Jul 17 17:59:18 1998
+++ linux/include/asm-alpha/serial.h Fri Jul 17 18:46:34 1998
@@ -37,7 +37,7 @@
#ifdef CONFIG_SERIAL_MANY_PORTS
-#define EXTRA_SERIAL_PORT_DEFNS \
+#define EXTRA_SERIAL_PORT_DEFNS \
{ 0, BASE_BAUD, 0x1A0, 9, FOURPORT_FLAGS }, /* ttyS4 */ \
{ 0, BASE_BAUD, 0x1A8, 9, FOURPORT_FLAGS }, /* ttyS5 */ \
{ 0, BASE_BAUD, 0x1B0, 9, FOURPORT_FLAGS }, /* ttyS6 */ \
-- B. D. Elliott bde@accessone.com (Seattle)- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html