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

Reply via email to