From: Michal Orzel Date: Wed, 5 May 2021 07:43:06 +0000 (+0200) Subject: arm/page: Get rid of READ/WRITE_SYSREG32 X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~529 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=86faae561cd8eee819e0f42ba7a18dd180aa49d1;p=xen.git arm/page: Get rid of READ/WRITE_SYSREG32 AArch64 registers are 64bit whereas AArch32 registers are 32bit or 64bit. MSR/MRS are expecting 64bit values thus we should get rid of helpers READ/WRITE_SYSREG32 in favour of using READ/WRITE_SYSREG. We should also use register_t type when reading sysregs which can correspond to uint64_t or uint32_t. Even though many AArch64 registers have upper 32bit reserved it does not mean that they can't be widen in the future. Modify accesses to CTR_EL0 to use READ/WRITE_SYSREG. Signed-off-by: Michal Orzel Reviewed-by: Julien Grall --- diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h index 131507a517..c6f9fb0d4e 100644 --- a/xen/include/asm-arm/page.h +++ b/xen/include/asm-arm/page.h @@ -137,10 +137,10 @@ extern size_t dcache_line_bytes; static inline size_t read_dcache_line_bytes(void) { - uint32_t ctr; + register_t ctr; /* Read CTR */ - ctr = READ_SYSREG32(CTR_EL0); + ctr = READ_SYSREG(CTR_EL0); /* Bits 16-19 are the log2 number of words in the cacheline. */ return (size_t) (4 << ((ctr >> 16) & 0xf));