[PATCH 03/23] sim/erc32: Perform pseudo-init of system if binary starts from non-zero address.

Mike Frysinger vapier@gentoo.org
Tue Feb 17 08:59:00 GMT 2015


On 17 Feb 2015 08:44, Jiri Gaisler wrote:
> +extern struct pstate sregs;
> +
> +void
> +boot_init ()

in C, you need to do (void) to avoid ugliness.

also looks like this is missing an update to a header to add the prototype ?

> +{
> +    mec_write(MEC_WCR, 0);	/* zero waitstates */
> +    mec_write(MEC_TRAPD, 0);	/* turn off watch-dog */
> +    mec_write(MEC_RTC_SCALER, sregs.freq-1); /* generate 1 MHz RTC tick */
> +    mec_write(MEC_MEMCFG, (3 << 18) | (4 << 10)); /* 1 MB ROM, 4 MB RAM */
> +    sregs.wim = 2;
> +    sregs.psr = 0x110010e0;
> +    sregs.r[30] = RAM_END;
> +    sregs.r[14] = sregs.r[30] - 96*4;
> +    mec_mcr |= 1;		/* power-down enabled */
> +}

why isn't sregs passed in as an arg ?  looks like both callers have a pointer to 
it already.

> --- a/sim/erc32/func.c
> +++ b/sim/erc32/func.c
> @@ -468,6 +468,7 @@ exec_cmd(sregs, cmd)
>  	    }
>  	    sregs->pc = len & ~3;
>  	    sregs->npc = sregs->pc + 4;
> +	    if ((sregs->pc != 0) && (ebase.simtime == 0)) boot_init();

i know the code base doesn't follow GNU style already, but lets at least start 
moving in that direction.  i.e. uncuddle this:
	if (...)
	  boot_init();

> --- a/sim/erc32/interf.c
> +++ b/sim/erc32/interf.c
> @@ -78,6 +78,7 @@ run_sim(sregs, icount, dis)
>     init_stdio();
>     sregs->starttime = time(NULL);
>     irq = 0;
> +   if ((sregs->pc != 0) && (ebase.simtime == 0)) boot_init();

same here
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20150217/e6a8aa35/attachment.sig>


More information about the Gdb-patches mailing list