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

Reply via email to