[PATCH 2/3] arm: implement invalidate_icache_all on ARM11

Ilias Apalodimas ilias.apalodimas at linaro.org
Wed Jun 19 14:22:28 CEST 2024


Hi Heinrich,

On Sun, 16 Jun 2024 at 20:31, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> In EFI sub-system we rely on invalidate_icache_all() to invalidate the
> instruction cache after loading binaries. Add the missing implementation on
> ARM1136, ARM1176.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
>  arch/arm/cpu/arm11/cpu.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/arch/arm/cpu/arm11/cpu.c b/arch/arm/cpu/arm11/cpu.c
> index 01d2e1a125d..4bf0446b543 100644
> --- a/arch/arm/cpu/arm11/cpu.c
> +++ b/arch/arm/cpu/arm11/cpu.c
> @@ -116,3 +116,15 @@ void enable_caches(void)
>  #endif
>  }
>  #endif
> +
> +#if !CONFIG_IS_ENABLED(SYS_ICACHE_OFF)
> +/* Invalidate entire I-cache */
> +void invalidate_icache_all(void)
> +{
> +       unsigned long i = 0;
> +
> +       asm ("mcr p15, 0, %0, c7, c5, 0" : : "r" (i));

This looks correct, but can't we define it as
__asm__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0)); ?

Thanks
/Ilias
> +}
> +#else
> +void invalidate_icache_all(void) {}
> +#endif
> --
> 2.43.0
>


More information about the U-Boot mailing list