[U-Boot] [PATCH] arc/cache: really do flush_dcache_all() even if IOC exists

Alexey Brodkin
2016-04-21T17:12:59Z

Hi,

On Mon, 2016-04-18 at 13:28 +0300, Alexey Brodkin wrote:
> flush_dcache_all() is used in the very end of U-Boot self relocation
> to write back all copied and then patched code and data to their
> new location in the very end of available memory space.
>
> Since that has nothing to do with IO (i.e. no external DMA happens
> here) IOC won't help here and we need to write back data cache contents
> manually.
>
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> ---
> ?arch/arc/lib/cache.c | 7 ++-----
> ?1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arc/lib/cache.c b/arch/arc/lib/cache.c
> index 56988dd..d1fb661 100644
> --- a/arch/arc/lib/cache.c
> +++ b/arch/arc/lib/cache.c
> @@ -430,13 +430,10 @@ void invalidate_dcache_all(void)
> ?
> ?void flush_dcache_all(void)
> ?{
> -#ifdef CONFIG_ISA_ARCV2
> - if (!ioc_exists)
> -#endif
> - __dc_entire_op(OP_FLUSH);
> + __dc_entire_op(OP_FLUSH);
> ?
> ?#ifdef CONFIG_ISA_ARCV2
> - if (slc_exists && !ioc_exists)
> + if (slc_exists)
> ? __slc_entire_op(OP_FLUSH);
> ?#endif
> ?}

Applied, thanks!

-Alexey