[PATCH 2/3] arm: implement invalidate_icache_all on ARM11
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Wed Jun 19 14:56:24 CEST 2024
On 19.06.24 14:22, Ilias Apalodimas wrote:
> 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)); ?
Both compile to the same code. So we should simplify the expression.
arch/arm/cpu/armv7/cache_v7.c and other modules always uses asm and not
__asm__.
@Tom:
Can we specify what is preferred in doc/develop/codingstyle.rst?
https://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html gives some
background.
Best regards
Heinrich
>
> Thanks
> /Ilias
>> +}
>> +#else
>> +void invalidate_icache_all(void) {}
>> +#endif
>> --
>> 2.43.0
>>
More information about the U-Boot
mailing list