ppc rfi in head.s result in a reset?

View: New views
2 Messages — Rating Filter:   Alert me  

ppc rfi in head.s result in a reset?

by wilbur.chan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

ppc 6xx

In platform_init function of  sandpoint.c , I delete the code of
getting command line from uboot, and set command_line to a fixed value
, which are like this:

            sandpoint.c-->  platform_init
                 #if 0
                 if (r3 && r6) {
                /* copy board info structure */
                memcpy( (void *)__res,(void *)(r3+KERNELBASE), sizeof(bd_t) );
                /* copy command line */
                *(char *)(r7+KERNELBASE) = 0;
                strcpy(cmd_line, (char *)(r6+KERNELBASE));
        }
                #endif
                strcpy(cmd_line, "xxx");


But I found that , when calling start_kernel in head.S (by rfi
instruction), the borad was reset into uboot, that is :

                li              r4,MSR_KERNEL
        FIX_SRR1(r4,r5)
        lis r3,start_kernel@h
        ori r3,r3,start_kernel@l
        mtspr SPRN_SRR0,r3
        mtspr SPRN_SRR1,r4
        SYNC
        RFI              //reset,why?


The RFI  instruction  here, caused the board reset to uboot.  Can
someone give me some advice on how could this happened?

Thank you
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@...
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: ppc rfi in head.s result in a reset?

by Tonyliu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

wilbur.chan wrote:

> ppc 6xx
>
> In platform_init function of  sandpoint.c , I delete the code of
> getting command line from uboot, and set command_line to a fixed value
> , which are like this:
>
>             sandpoint.c-->  platform_init
>                  #if 0
>                  if (r3 && r6) {
> /* copy board info structure */
> memcpy( (void *)__res,(void *)(r3+KERNELBASE), sizeof(bd_t) );
> /* copy command line */
> *(char *)(r7+KERNELBASE) = 0;
> strcpy(cmd_line, (char *)(r6+KERNELBASE));
> }
>                 #endif
>                 strcpy(cmd_line, "xxx");
>
>  
Which version your kernel is ? I cant find sandpoint.c in powerpc git tree.
And I suspect it's conditional  "if (r3 && r6)" to copy cmd_line, and
your change makes it unconditioned. Maybe it
will affect something.

Tony

> But I found that , when calling start_kernel in head.S (by rfi
> instruction), the borad was reset into uboot, that is :
>
>                 li              r4,MSR_KERNEL
> FIX_SRR1(r4,r5)
> lis r3,start_kernel@h
> ori r3,r3,start_kernel@l
> mtspr SPRN_SRR0,r3
> mtspr SPRN_SRR1,r4
> SYNC
> RFI              //reset,why?
>
>
> The RFI  instruction  here, caused the board reset to uboot.  Can
> someone give me some advice on how could this happened?
>
> Thank you
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@...
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
>  


--
Tony Liu | Liu Bo
-------------------------------------------------------------
WIND RIVER | China Development Center
Tel: 86-10-8477-8542 ext: 8542 |  Fax: 86-10-64790367
(M): 86-136-7117-3612
Address: 15/F, Wangjing TowerB, Chaoyang District, Beijing, P.R.China



_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@...
https://lists.ozlabs.org/listinfo/linuxppc-dev