From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joakim Tjernlund Date: Sun, 16 Dec 2007 22:27:34 +0100 Subject: [U-Boot-Users] Can U-boot Autodetect arch/ppcversusarch/powerpc from info in the uImage? In-Reply-To: <20071216201444.33E17248AC@gemini.denx.de> References: Your message of "Fri, 14 Dec 2007 16:53:21 +0100." <1197647601.21876.12.camel@gentoo-jocke.transmode.se> <20071216201444.33E17248AC@gemini.denx.de> Message-ID: <012201c8402a$79be7c30$02ac10ac@Jocke> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de > -----Original Message----- > From: wd at denx.de [mailto:wd at denx.de] > Sent: den 16 december 2007 21:15 > To: joakim.tjernlund at transmode.se > Cc: 'Jerry Van Baren'; u-boot-users at lists.sourceforge.net > Subject: Re: [U-Boot-Users] Can U-boot Autodetect > arch/ppcversusarch/powerpc from info in the uImage? > > In message > <1197647601.21876.12.camel@gentoo-jocke.transmode.se> you wrote: > > > > This is what I came up with to make $dtb a hush variable that don't > > end up in the environment: > > > #define FLAG_PARSE_SEMICOLON (1 << 1) > > #define FLAG_EXIT_FROM_LOOP 1 > > int misc_init_r (void) > > { > > char *bootstr, dtb_str[30], workstr[256]; > > > > u_boot_hush_start(); > > Be careful. You are invoking undefined behaviour heare. The idea is > that u_boot_hush_start() is supposed to be called exactly once only. > [Yes, I know from looking at the code that at the moment this seems > to be OK, but ther eis no guarantee for it.] Yes, I suspected this. Maybe it would be a good idea to move the call to u_boot_hush_start() earlier in common code so that there is no need to do it here? > > > sprintf(dtb_str, "dtb=0x%lx", (ulong)dt_blob_start); > > /* Set $dtb in local HUSH env.to my OF tree */ > > if (parse_string_outer(dtb_str, > > FLAG_PARSE_SEMICOLON | > FLAG_EXIT_FROM_LOOP) != 0) { > > /* Add " - $dtb" to $bootcmd if it is missing */ > > bootstr = getenv("bootcmd"); > > if (bootstr && !strstr(bootstr, "- $dtb")) { > > strcpy(workstr, bootstr); > > strcat(workstr, " - $dtb"); > > setenv("bootcmd", workstr); > > } > > } > > return 0; > > } > > > > It is fairly ugly, but it works. Comments? > > I don't understand why you make it so complicated when a preboot > command would do exactly the same? hmm, didn't think of that. Will look into that tmw, thanks > > Best regards, > > Wolfgang Denk