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

Mike Frysinger
2015-02-17T08:59:39Z

[-- Attachment #1: Type: text/plain, Size: 1465 bytes --]

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

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]