|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 06/12] xen/arm64: sysreg: Implement the 32-bit helpers using the 64-bit helpers
On Wed, 27 Mar 2019, Julien Grall wrote:
> Clang is pickier than GCC for the register size in asm statement. It
> expects the register size to match the value size.
>
> The instructions msr/mrs are expecting a 64-bit register. This means the
> implementation of the 32-bit helpers is not correct. The easiest
> solution is to implement the 32-bit helpers using the 64-bit helpers.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> xen/include/asm-arm/arm64/sysregs.h | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/xen/include/asm-arm/arm64/sysregs.h
> b/xen/include/asm-arm/arm64/sysregs.h
> index 08585a969e..c60029d38f 100644
> --- a/xen/include/asm-arm/arm64/sysregs.h
> +++ b/xen/include/asm-arm/arm64/sysregs.h
> @@ -59,14 +59,9 @@
>
> /* Access to system registers */
>
> -#define READ_SYSREG32(name) ({ \
> - uint32_t _r; \
> - asm volatile("mrs %0, "__stringify(name) : "=r" (_r)); \
> - _r; })
> -#define WRITE_SYSREG32(v, name) do { \
> - uint32_t _r = v; \
> - asm volatile("msr "__stringify(name)", %0" : : "r" (_r)); \
> -} while (0)
> +#define READ_SYSREG32(name) ((uint32_t)READ_SYSREG64(name))
> +
> +#define WRITE_SYSREG32(v, name) WRITE_SYSREG64((uint64_t)v, name)
>
> #define WRITE_SYSREG64(v, name) do { \
> uint64_t _r = v; \
> --
> 2.11.0
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |