Enabling Helium

Helium is an optional extension to the Armv8.1-M architecture. This means that Helium may or may not be present on your target.

Because of this, you should check whether Helium is available on your target before running Helium code. This applies whether you are using a software model or a hardware target.

Enabling Helium on the ARM_AEMv8M Fixed Virtual Platform

FVP models provide a number of different parameters to configure the optional features of the model.

See the Fast Models Reference Manual for a complete list of all ARM_AEMv8M parameters.

To enable Helium on the ARM_AEMv8M FVP, set the following parameters:

  • cpu0.enable_helium_extension=1
  • cpu0.vfp-present=1
  • cpu0.vfp-enable_at_reset=1

Checking if Helium is present for hardware targets

The Media and VFP Feature Register 1 (MVFR1), describes the features that are provided by the floating-point extension. In particular, the MVFR1.MVE bitfields, bits [11:8], indicate support for the M-profile vector extension.

The possible values of this field are:

  • 0b0000 indicates that Helium instructions are not available.
  • 0b0001 indicates that Helium integer instructions are available, but Helium floating-point instructions are not available.
  • 0b0010 indicates that Helium integer and floating-point instructions are available.

For more information, see the Armv8-M Architecture Reference Manual.

The __ARM_FEATURE_MVE macro provides another mechanism for checking whether Helium is present.

Enabling Helium for hardware targets

For hardware targets, access control registers specify whether Helium instructions are available from privileged and unprivileged code.

  • The Non-secure Access Control Register (NSACR) specifies the Non-secure access permissions for Helium in bitfields CP10 and CP11.
    The possible values of these fields are:
    • 0 - Non-secure accesses to the Floating-point Extension or MVE, unless otherwise specified, generate a NOCP UsageFault.
    • 1 - Non-secure access to the Floating-point Extension or MVE is permitted.
  • The Coprocessor Access Control Register (CPACR) specifies the access privileges for Helium in bit field CP10.
    The possible values of this field are:
    • 0b00 - All accesses to the FP Extension and MVE result in NOCP UsageFault.
    • 0b01 - Unprivileged accesses to the FP Extension and MVE result in NOCP UsageFault.
    • 0b11 - Full access to the FP Extension and MVE.

For more information, see the Armv8-M Architecture Reference Manual.     

Previous Next