how to use head_fsl_booke.S:abort to restart

Philippe De Muyter phdm at macqel.be
Wed Mar 26 19:05:44 EST 2008


Hi Haiying,

On Tue, Mar 25, 2008 at 04:48:23PM -0400, Haiying Wang wrote:
> Ok, I see the problem here. For 8540/60 which has e500 v1 core, it
> doesn't use RSTCR to assert HRESET_REQ signal to reset the whole system.
> We probably need to add abort() in fsl_rstcr_restart() for those
> silicons:
> 
> diff --git a/arch/powerpc/sysdev/fsl_soc.c
> b/arch/powerpc/sysdev/fsl_soc.c
> index 2c5388c..c2d07cd 100644
> --- a/arch/powerpc/sysdev/fsl_soc.c
> +++ b/arch/powerpc/sysdev/fsl_soc.c
> @@ -1434,7 +1434,8 @@ void fsl_rstcr_restart(char *cmd)
>         if (rstcr)
>                 /* set reset control register */
>                 out_be32(rstcr, 0x2);   /* HRESET_REQ */
> -
> +       else
> +               abort();
>         while (1) ;
>  }
>  #endif

I have a 8540 board, and that works, but as your patch is written,
compilation fails with :

	arch/powerpc/sysdev/fsl_soc.c: In function 'fsl_rstcr_restart':
	arch/powerpc/sysdev/fsl_soc.c:1445: error: implicit declaration
	of function 'abort'
	arch/powerpc/sysdev/fsl_soc.c:1445: warning: incompatible implicit
	declaration of built-in function 'abort'
	make[1]: *** [arch/powerpc/sysdev/fsl_soc.o] Error 1
	make: *** [arch/powerpc/sysdev] Error 2

and if I fix that with :

	 arch_initcall(setup_rstcr);

	+extern void abort(void);
	+
	 void fsl_rstcr_restart(char *cmd)
	 {

it compiles and does reboot, but at startup I still get the following
annoying message :

	rstcr compatible register does not exist!

Philippe



More information about the Linuxppc-dev mailing list