Kernel 2.6.10-rc1 yet not running on ads8272

Mark Chambers markc at mail.com
Tue Nov 30 00:26:26 EST 2004


> Hi all,
> 
> After commenting out the BCSR lines on m82xx_board_init as Dan
> suggested, some problem still prevents kernel 2.6.10-rc1 from
> running in ads8272 board.
> 
> After running MMU_init, next step in head.S is this
> 
> /*
>  * Go back to running unmapped so we can load up new values
>  * for SDR1 (hash table pointer) and the segment registers
>  * and change to using our exception vectors.
>  */
>         lis     r4,2f at h
>         ori     r4,r4,2f at l
>         tophys(r4,r4)
>         li      r3,MSR_KERNEL & ~(MSR_IR|MSR_DR)
>         FIX_SRR1(r3,r5)
>         mtspr   SRR0,r4
>         mtspr   SRR1,r3
>         SYNC
>         RFI
> /* Load up the kernel context */
> 2:      bl      load_up_mmu
> 
> which is not clear for me. Here, the execution flow breaks
> in RFI and never arrives to "bl load_up_mmu". The value of
> SRR0 and SRR1 before RFI is:
> 

RFI = Return From Interrupt.  In normal usage the current
address is copied into SRR0 when an exception occurs so
the processor will return to that point with an RFI.  So this
code is 'faking out' the RFI instruction to return to 2:

Are you maybe trying to trace through this code?  If so,
and depending on your debugger, you may not be able to.
If your debugger uses trace or some other exception to do
single step, once you get past mtspr SRR0,r4 the single
step exception will overwrite the correct SRR0.  You
can see if this is the case by only tracing to mtspr SRR0,r4
and then putting a breakpoint at 2:

Good luck,
Mark Chambers




More information about the Linuxppc-embedded mailing list