On Mon, 12 Jun 2023 at 14:18, Aaron Lindsay <aa...@os.amperecomputing.com> wrote: > > On Jun 09 13:49, Richard Henderson wrote: > > On 6/9/23 10:23, Aaron Lindsay wrote: > > > --- a/target/arm/hvf/hvf.c > > > +++ b/target/arm/hvf/hvf.c > > > @@ -847,6 +847,7 @@ static bool > > > hvf_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf) > > > { HV_SYS_REG_ID_AA64DFR1_EL1, &host_isar.id_aa64dfr1 }, > > > { HV_SYS_REG_ID_AA64ISAR0_EL1, &host_isar.id_aa64isar0 }, > > > { HV_SYS_REG_ID_AA64ISAR1_EL1, &host_isar.id_aa64isar1 }, > > > + { HV_SYS_REG_ID_AA64ISAR2_EL1, &host_isar.id_aa64isar2 }, > > > > Sadly not defined for MacOSX13.1.sdk, and it's an enum so you can't #ifdef > > it either. > > > > You'll need a meson probe for it. > > I'm not very familiar with HVF or meson - I am not sure I understand > what you're suggesting here (and a few attempts to grep around for an > example didn't turn up anything that looked helpful). Are you suggesting > some sort of build-time auto-detection, a "dumb" configuration switch > that a user could use to manually enable this, or something else? And/or > is there an example you could point me to of what you're thinking?
So the first thing here is: where is HV_SYS_REG_ID_AA64ISAR2_EL1 defined in the first place? https://developer.apple.com/documentation/hypervisor/hv_sys_reg_t does not list it. If this is really the right name for the value, then: We do our build-time detection of stuff that might or might not be present using meson's facilities or that kind of thing. These are all in meson.build. In this case I think that what you want to use is has_header_symbol(), which checks for presence of some symbol in a given header. There's examples in meson.build, you want something like config_host_data.set('HAVE_HV_SYS_REG_ID_AA64ISAR2_EL1', cc.has_header_symbol('whatever.h', 'HV_SYS_REG_ID_AA64ISAR2_EL1')) which tells meson "if this header has this symbol then define this preprocessor value HAVE_...". Then you can #ifdef on that. (We're inconsistent about whether we use CONFIG_FOO or HAVE_FOO for this sort of test.) Or alternatively, since this is macos specific and Apple are quite careful about API versioning, it may be simpler to use macos's own version macros to ifdef things so we only try to use the enum value when building for a macos version that knows about it. Grepping for 'MAC_OS_VERSION' brings up examples of that approach. thanks -- PMM