On Tue, 3 Mar 2026 at 07:42, Manos Pitsidianakis
<[email protected]> wrote:
>
> SME2 support adds the following state for HVF guests:
>
> - Vector registers Z0, ... , Z31 (introduced by FEAT_SVE but HVF does
>   not support it)
> - Predicate registers P0, .., P15 (also FEAT_SVE)
> - ZA register
> - ZT0 register
> - PSTATE.{SM,ZA} bits (SVCR pseudo-register)
> - SMPRI_EL1 which handles the PE's priority in the SMCU
> - TPIDR2_EL0 the thread local ID register for SME

Mohamed points out that this breaks the build when compiling
with GCC (which I hadn't noticed because I happen to do my testing
of target-arm with clang on Linux these days):

> --- /dev/null
> +++ b/target/arm/hvf/hvf_sme_stubs.h
> @@ -0,0 +1,158 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +
> +typedef int32_t hv_return_t;
> +typedef uint64_t hv_vcpu_t;


> +typedef __attribute__((ext_vector_type(64))) uint8_t hv_sme_zt0_uchar64_t;

The "ext_vector_type()" attribute is clang specific and gcc
doesn't recognize it.

Since we're defining all these types specifically because the system
headers are not providing them and only for the prototypes, my
preference would be to simply drop the attribute from this
declaration:

typedef uint8_t hv_sme_zt0_uchar64_t;

Could somebody confirm that that works OK on the relevant macos
configurations ?

thanks
-- PMM

Reply via email to