[U-Boot] ARM v7: Flush icache when executing a program with go
Henrik Nordström
henrik at henriknordstrom.net
Wed May 15 18:34:07 CEST 2013
ons 2013-05-15 klockan 17:11 +0200 skrev Albert ARIBAUD:
> What is the rationale behind putting it in arch/ rather than in common/
> by adding this to the existing common/cmd_boot.c file under ARMv7
> conditionals?
Only because of what I said earlier: blindly calling
invalidate_icache_all() from the go command will cause loud complains on
other arches where the icache is not supported/enabled.
> Also:
>
> > ARM v7 runs with icache enabled. For reliable results the go command
> > needs to flush the icache before jumping or it may risk running
> > cached instructions that differ from what currently is in memory.
>
> IIUC, the issue is due to cache being enabled when doing the go, rather
> than due to armv7 per se.
Not entirely sure what you mean.
> So, should we not have this icache flush conditioned at compile time on
> cache being compiled in, and at run time on cache being enabled? This
> way, we would automatically cater for the same issue appearing in other
> ARM CPUs, and even more, in other architectures.
Except.. see common/cmd_cache.c top of file and you'll see the yelling I
am talking about.
Regards
Henrik
More information about the U-Boot
mailing list