Something like the following may tell you what's going on. - compile with -g if you can and it doesn't remove the fault - reproduce the problem - do an `objdump -dS` on the 'linux' binary (where objdump is your target arch specific version) - lookup the address indicated to you by the Oops' instruction pointer - oh wait, you have a module, so it won't be in the kernel bin...posting anyways, it may help someone some day.
..Chris > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:uclinux-dev- > [EMAIL PROTECTED] On Behalf Of Remco Poelstra > Sent: June 24, 2008 7:07 AM > To: uClinux development list > Subject: [uClinux-dev] Kernel Oops - howto debug > > Hi, > > How do I debug something like this: > Internal error: Oops - undefined instruction: 0 [#1] > Modules linked in: i2s sinus spi rtc sfr lpc2468eth > CPU: 0 > pc : [<a19e671c>] lr : [<a001d3d8>] Not tainted > sp : a01dbf00 ip : a01dbf28 fp : a01dbf24 > r10: a01dbf5c r9 : 00000001 r8 : 00000019 > r7 : 00000000 r6 : 00000000 r5 : a01da000 r4 : a03b8260 > r3 : 40000013 r2 : a01dbf5c r1 : 00000000 r0 : 00000019 > Flags: Nzcv IRQs on FIQs on Mode SVC_32 Segment user > Process swapper (pid: 0, stack limit = 0xa01da194) > Stack: (0xa01dbf00 to 0xa01dc000) > bf00: a01ee088 00000019 a01dbf5c 00000002 a01da000 a01da000 a01dbf40 > a01dbf28 > bf20: a001d62c a001d374 a01da000 a01dbf5c 00000001 a01dbf58 a01dbf44 > a001d7bc > bf40: a001d5d4 e3e04000 a01dbf90 a01dbfcc a01dbf5c a001c2f4 a001d778 > ffffffea > bf60: 00000000 00000000 60000013 a01da000 a001e254 a01da000 00000000 > 00000000 > bf80: a001e254 a01da000 a01dbfcc a01dbf94 a01dbfa4 a001e208 a001e324 > 60000013 > bfa0: e3e04000 a01f57dc a01ed738 a01ee278 a1f5a927 a0205b38 a01ee26c > a1f5aa64 > bfc0: a01dbfdc a01dbfd0 a001c038 a001e2bc a01dbffc a01dbfe0 a00087ec > a001c010 > bfe0: a0008374 a01ee288 00000000 a0205b38 00000000 a01dc000 a1f8953c > a0008678 > Backtrace: > Function entered at [<a001d364>] from [<a001d62c>] > Function entered at [<a001d5c4>] from [<a001d7bc>] > r6 = 00000001 r5 = A01DBF5C r4 = A01DA000 > Function entered at [<a001d768>] from [<a001c2f4>] > r5 = A01DBF90 r4 = E3E04000 > Function entered at [<a001e2ac>] from [<a001c038>] > Function entered at [<a001c000>] from [<a00087ec>] > Function entered at [<a0008668>] from [<a1f8953c>] > Code: 65727563 75642064 676e6972 53324920 (414d4420) > <0>Kernel panic - not syncing: Aiee, killing interrupt handler! > > 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! > > Kind regards, > > Remco Poelstra > > _______________________________________________ > 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 _______________________________________________ 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
