if there's no irq, __irq_svc wouldn't be executed at all.
Where does your kernel source come from? There is some obscure
instruction that shouldn't be there, I think:
13a54: e5878000 str r8, [r7]
Regards,
Erwin
Am Donnerstag, den 02.08.2007, 11:14 +0800 schrieb Darwin Chen:
> Thank you, Erwin,
>
> The kernel with your code is still crashed as following. How to handle the
> case? there is no irq or fiq, I have checked the AIC_ISR, AIC_OISR,
> AIC_ISNR, AIC_IPER, both of them are zero, it means there is no IRQ or FIQ
> occurred. So get_irqnr_and_base returned irqnr(r0) with 0x13. It will be
> handled by bad_irq_desc, is the crash related with this bad_irq_desc?
>
> Unhandled fault: vector exception (0x800) at 0x00000000
> Internal error: : 800 [#1]
> CPU: 0 Not tainted (2.6.22-uc0 #90)
> PC is at __irq_svc+0x54/0x80
> LR is at asm_do_IRQ+0x4c/0x60
> pc : [<00013a54>] lr : [<0001304c>] psr: 60000093
> sp : 00757f68 ip : 00757f48 fp : 007aff14
> r10: 007a6660 r9 : 000003ab r8 : 20000010
> r7 : ef900003 r6 : 00000000 r5 : fff82108 r4 : ffffffff
> r3 : 00000000 r2 : 00000001 r1 : 00757ef0 r0 : 00000013
> Flags: nZCv IRQs off FIQs on Mode SVC_32 Segment kernel
> Process linuxrc (pid: 1, stack limit = 0x00756258)
> Stack: (0x00757f68 to 0x00758000)
> 7f60: 00000000 007aff27 00000001 007a6680 007a6680
> 007a6670
> 7f80: 00000000 ef900003 20000010 000003ab 007a6660 007aff14 007aff18
> 00757fb0
> 7fa0: 007a28a0 00013e4c 20000013 ffffffff 00000000 007aff27 00000001
> 007a6680
> 7fc0: 007a6680 007a6670 00000000 00000000 00000000 00000003 007a6660
> 007aff14
> 7fe0: 007aff18 007aff04 007a0170 007a28a0 20000010 00000000 0f008981
> 42200300
> Backtrace:
> Code: 3afffff9 11a0100d 124fe030 1afffd6a (e5878000)
> Kernel panic - not syncing: Attempted to kill init!
>
> The assemble code is listed:
> 00013a00 <__irq_svc>:
> 13a00: e24dd048 sub sp, sp, #72 ; 0x48
> 13a04: e98d1ffe stmib sp, {r1, r2, r3, r4, r5, r6, r7, r8,
> r9, sl, fp, ip}
> 13a08: e890000e ldmia r0, {r1, r2, r3}
> 13a0c: e28d5034 add r5, sp, #52 ; 0x34
> 13a10: e3e04000 mvn r4, #0 ; 0x0
> 13a14: e28d0048 add r0, sp, #72 ; 0x48
> 13a18: e58d1000 str r1, [sp]
> 13a1c: e1a0100e mov r1, lr
> 13a20: e885001f stmia r5, {r0, r1, r2, r3, r4}
> 13a24: e59f5038 ldr r5, [pc, #56] ; 13a64
> <__irq_svc+0x64>
> 13a28: e5956000 ldr r6, [r5]
> 13a2c: e3a00001 mov r0, #1 ; 0x1
> 13a30: e3160002 tst r6, #2 ; 0x2
> 13a34: 1a000003 bne 13a48 <__irq_svc+0x48>
> 13a38: e2800001 add r0, r0, #1 ; 0x1
> 13a3c: e1a060a6 mov r6, r6, lsr #1
> 13a40: e3500013 cmp r0, #19 ; 0x13
> 13a44: 3afffff9 bcc 13a30 <__irq_svc+0x30>
> 13a48: 11a0100d movne r1, sp
> 13a4c: 124fe030 subne lr, pc, #48 ; 0x30
> 13a50: 1afffd6a bne 13000 <__init_end>
> 13a54: e5878000 str r8, [r7]
> 13a58: e59d0040 ldr r0, [sp, #64]
> 13a5c: e16ff000 msr SPSR_fsxc, r0
> 13a60: e8ddffff ldmia sp, {r0, r1, r2, r3, r4, r5, r6, r7,
> r8, r9, sl, fp, ip, sp, lr, pc}^
> 13a64: fff82108 swinv 0x00f82108
>
> 00013000 <asm_do_IRQ>:
> 13000: e59f204c ldr r2, [pc, #76] ; 13054 <.text+0x54>
> 13004: e0803080 add r3, r0, r0, lsl #1
> 13008: e1a0c00d mov ip, sp
> 1300c: e3500012 cmp r0, #18 ; 0x12
> 13010: e0803103 add r3, r0, r3, lsl #2
> 13014: e92dd8f0 stmdb sp!, {r4, r5, r6, r7, fp, ip, lr,
> pc}
> 13018: e0825103 add r5, r2, r3, lsl #2
> 1301c: e59f6034 ldr r6, [pc, #52] ; 13058 <.text+0x58>
> 13020: 859f5034 ldrhi r5, [pc, #52] ; 1305c <.text+0x5c>
> 13024: e24cb004 sub fp, ip, #4 ; 0x4
> 13028: e1a04000 mov r4, r0
> 1302c: e5967000 ldr r7, [r6]
> 13030: e5861000 str r1, [r6]
> 13034: eb005553 bl 28588 <irq_enter>
> 13038: e1a00004 mov r0, r4
> 1303c: e1a01005 mov r1, r5
> 13040: e1a0e00f mov lr, pc
> 13044: e595f000 ldr pc, [r5]
> 13048: eb005554 bl 285a0 <irq_exit>
> 1304c: e5867000 str r7, [r6]
> 13050: e89da8f0 ldmia sp, {r4, r5, r6, r7, fp, sp, pc}
> 13054: 0011666c andeqs r6, r1, ip, ror #12
> 13058: 001497f8 ldreqsh r9, [r4], -r8
> 1305c: 00114dfc ldreqsh r4, [r1], -ip
>
> Thanks again.
> Darwin.
> -----邮件原件-----
> 发件人: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> org] 代表 Erwin Authried
> 发送时间: 2007年8月2日 2:20
> 收件人: uClinux development list
> 主题: Re: [uClinux-dev] How to implement get_irqnr_and_base?
>
> Hi Darwin,
>
> could you please turn off the HTML crap in your e-mail, it is almost
> unreadable in my mail client.
>
> Your get_irqnr_and_base macro is probably not working. Try the following
> code instead:
>
> Regards,
> Erwin
>
> .macro disable_fiq
> .endm
>
> .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
> ldr \base, =AIC_ISR
> ldr \irqstat, [\base]
> mov \irqnr, #1
> 1001:
> tst \irqstat, #2
> bne 1002f
> add \irqnr, \irqnr, #1
> mov \irqstat, \irqstat, lsr #1
> cmp \irqnr, #19
> bcc 1001b
> 1002: /* EQ will be set if we reach 19 */
> .endm
>
> .macro irq_prio_table
> .endm
>
>
>
> Am Donnerstag, den 02.08.2007, 01:36 +0800 schrieb Darwin Chen:
> > Dear all,
> >
> >
> >
> > I have a big problem about porting Linux-2.6.22.-uc0 to Winbond
> > W90N740. When get_irqnr_and_base is implemented as following, the
> > listed error will occurred. Is this get_irqnr_and_base mistake? The
> > error prompts “Flags: nZCv IRQs off FIQs on Mode SVC_32 Segment
> > kernel”, but the error is occurred in __irq_svc, why does the Flag
> > prompt “IRQs off”?
> >
> >
> >
> > /*
> >
> > * include/asm/arch-w90n740/entry-macro.S
> >
> > *
> >
> > * defines machine dependent entry macros.
> >
> > * included in the arch/arm/kernel/entry-armv.S
> >
> > */
> >
> > #include <asm/mach-types.h>
> >
> > #include <asm/arch/hardware.h>
> >
> > #ifndef CONFIG_ARCH_W90N740
> >
> > #error "Did not defined WINBOND W90N740"
> >
> > #endif
> >
> > .macro get_irqnr_preamble base, tmp
> >
> > /* FIXME */
> >
> > .endm
> >
> >
> >
> > ..macro disable_fiq
> >
> > /* FIXME */
> >
> > ..endm
> >
> >
> >
> > .macro arch_ret_to_user base, tmp
> >
> > /* FIXME */
> >
> > .endm
> >
> >
> >
> > .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
> >
> > mov \irqnr, #0
> >
> > ldr r10, =AIC_IPER
> >
> > ldr r10,[r10]
> >
> > ldr \tmp, =AIC_ISNR
> >
> > ldr \tmp,[\tmp]
> >
> > mov r9,#0
> >
> > add r9,r9, r10, LSR#2
> >
> > cmp r10, \tmp
> >
> > bne 99f
> >
> > mov \irqnr, \tmp
> >
> > 99:
> >
> > .endm
>
>
>
> _______________________________________________
> 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
--
Dipl.-Ing. Erwin Authried
Softwareentwicklung und Systemdesign
_______________________________________________
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