|
[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
Hi,
On 27/03/2019 19:15, Andrew Cooper wrote:
> On 27/03/2019 18:45, 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>
>
> (I don't have an opinion on how to fix the issue, but)
>
> Are SYSREGS actually always 64 bits even on arm32, and these helpers
> just a shorthand for the lower 32 bits, or is this an
> effectively-unnecessary constraint imposed by Clang?
This code is Arm64 specific. On Arm64, system registers are always
64-bits, and therefore the instructions msr/mrs require a 64-bit register.
So the complain from Clang is valid here. It happens that some of the
registers have the top 32-bit RES0 in current architecture. One could
argue that this is not very future-proof and we should get rid of {READ,
WRITE)_SYSREG32.
Unfortunately, the callers are expecting a 32-bit value. I need to
investigate all the callers to ensure no one is transforming the value
to 64-bit again. I don't really want to block clang support on that, so
I have added an action for fixing this later on.
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |