armv8: Fix get_sctlr() return type
authorSam Protsenko <semen.protsenko@linaro.org>
Thu, 7 Nov 2024 02:58:30 +0000 (20:58 -0600)
committerTom Rini <trini@konsulko.com>
Sun, 17 Nov 2024 19:13:22 +0000 (13:13 -0600)
SCTLR_EL2 is a 64-bit register [1]. Return its value as long (64 bit)
instead of int (32 bit) in get_sctlr() to make sure it's not trimmed.

[1] https://developer.arm.com/documentation/ddi0595/2021-06/AArch64-Registers/SCTLR-EL2--System-Control-Register--EL2-?lang=en

Fixes: 0ae7653128c8 ("arm64: core support")
Suggested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
arch/arm/cpu/armv8/cache_v8.c
arch/arm/include/asm/system.h

index e6be635..5d6953f 100644 (file)
@@ -825,7 +825,7 @@ void dcache_enable(void)
 
 void dcache_disable(void)
 {
-       uint32_t sctlr;
+       unsigned long sctlr;
 
        sctlr = get_sctlr();
 
index 52f6c9b..dbf9ab4 100644 (file)
@@ -171,7 +171,7 @@ static inline unsigned int current_el(void)
        return 3 & (el >> 2);
 }
 
-static inline unsigned int get_sctlr(void)
+static inline unsigned long get_sctlr(void)
 {
        unsigned int el;
        unsigned long val;