I'm actually working on a driver for a Marvell chip on a MIPS-based
board running a 2.4 kernel. I have one problem:
In my module, my interrupt handler is never executed. I have traced the
code until action->handler(irq, action->dev_id, regs) in
handle_IRQ_event() but when the handler should be executed, it is not
and the kernel reenters in the low-level interrupt dispatch routine
(because we're using level sensitive interrupts and it is still up).
I've checked that the function pointer called is the one of my handler
but my routine is never entered.
But when my handler is included in the kernel (ie not compiled as a
module), it works! My function gets executed and acks the interrupt. In
this case all goes fine.
Moreover, I've noticed that the kernel symbols are mapped at adresses
like 0x80258040 (start_kernel) but my module (and so is my handler) is
loaded at something like 0xc000275c . I was thinking the module would be
loaded in the same memory area as the kernel, so I think this is weird...
Perhaps, the module handler can't be executed because of its location
but I don't know how to fix this.
Thanks in advance.