How do I debug something like this:
Internal error: Oops - undefined instruction: 0 [#1]
<snip>
I suppose the error is in my interrupt handler (it only happens when I
load my own module), but it's so simple that I can't believe it's very
buggy:
------------
irqreturn_t i2s_dma_irq(int irq,void *dev_id,struct pt_regs *regs) {
signed char *temp;
if(m_reg_read(GPDMA_INT_TCSTAT)) {
m_reg_bfs(GPDMA_INT_TCCLR,0x3);
temp=active;
active=passive;
passive=temp;
buf_filled=0;
wake_up_interruptible(&write_wait_q);
}
else if(m_reg_read(GPDMA_INT_ERR_STAT)) {
m_reg_bfs(GPDMA_INT_ERR_CLR,0x3);
printk("Error occured during I2S DMA tranfer\n");
m_reg_bfs(I2S_DAO,0x3<<3); /*Stop I2S*/
} else {
printk("Unknown int\n");
}
return IRQ_HANDLED;
}
Any comments are welcome!
Do you have access to Debug header on your system (possibly JTAG or
NEXUS)? Breakpoint on entrance to irq or interrupt handler? The output
indicated execution of instruction 0. Possible NULL pointer
dereference? Any chance the interrupt handler is not add to the irq
function list?
thnx - bob
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev