I've tried MANY kernel builds with different patch configurations. The
BusLogic 1.2.2 driver and the linux-elf patch seem to be mutually-exclusive.
I extracted the linux-1.2.13 source, applied the BusLogic 1.2.2 driver
patch and the linux-elf patch. A build resulted in the final vmlinux
ld failing with numerous undefined references in the disable_irq
function of kernel.o. Does anyone know how to get an elf 1.2.13 with
the new driver?
Well, this finally explains a thing or two. I suspect that it's the use of '_'
versus nothing on symbol names that's causing the problem, most likely with the
new BUILD_TIMER_IRQ macro in irq.h.
I don't run an ELF system yet so someone's going to have to volunteer as a test
site...
I suspect that just removing the initial underscores on the symbols as I've
done below would take care of the problem. Someone please test this theory out
please.
Leonard
#define BUILD_TIMER_IRQ(chip,nr,mask) \
asmlinkage void IRQ_NAME(nr); \
asmlinkage void FAST_IRQ_NAME(nr); \
asmlinkage void BAD_IRQ_NAME(nr); \
__asm__( \
"\n.align 4\n" \
"fast_IRQ" #nr "_interrupt:\n\t" \
"bad_IRQ" #nr "_interrupt:\n\t" \
"IRQ" #nr "_interrupt:\n\t" \
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ACK_##chip(mask) \
"incl intr_count\n\t"\
"movl %esp,%ebx\n\t" \
"pushl %ebx\n\t" \
"pushl $" #nr "\n\t" \
"call do_IRQ\n\t" \
"addl $8,%esp\n\t" \
"cli\n\t" \
UNBLK_##chip(mask) \
"decl intr_count\n\t" \
"jmp ret_from_sys_call\n");
#endif