The source code is downloaded from Linux.org(Linux-2.6.22.tar.gz), and uClinux.org(linux-2.6.22-uc0.big.bz2). And I added the W90N740 supports.
BTW, I have downloaded uClinux-dist-20070130.tar.gz and the latest patch(7.18), but I cann't build the user applications because the toolchains always prompt "Undefined reference to `fork`" or other's error message. I don't have much time to build uClinux-20070130. So I give it up. And using uClinux-dist-2006xx. -----邮件原件----- 发件人: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] org] 代表 Erwin Authried 发送时间: 2007年8月2日 17:04 收件人: uClinux development list 主题: [!! SPAM] Re: [uClinux-dev] How to implement get_irqnr_and_base? 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 _______________________________________________ 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
