[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