본문 바로가기

Programming/ARM

ARM core의 feature enable 여부 확인 방법

ID_AA64MMFR0_EL1, ID_AA64MMFR1_EL1 과 ID_AA64MMFR2_EL1 register값을 확인하면, 어떤 feature 들이 현재 ARM core에서 support 되는지 여부를 알 수 있다.

developer.arm.com/docs/ddi0595/b/aarch64-system-registers/id_aa64mmfr2_el1

developer.arm.com/docs/ddi0595/b/aarch64-system-registers/id_aa64mmfr1_el1

예를들어 현재 사용중인 ARMv8.4-NV 기능 지원 여부를 알고 싶은데, register 값이 ID_AA64MMFR2_EL1: 0x1011 이다.

위 링크한 문서에 따르면 ARMv8.4-NV기능은 아래 bit의 값을 읽고 알 수 있으며, 현재 [27:24]는 모두 0이다.

따라서, 해당 ARM core는  ARMv8.4-NV 기능을 지원하지 않는다.

NV, bits [27:24]


From Armv8.4:

Nested Virtualization. If EL2 is implemented, indicates support for the use of nested virtualization. Defined values are:

All other values are reserved.

In Armv8.2, the only permitted value is 0b0000.

In Armv8.3, the permitted values are:

  • When EL2 is not implemented, 0b0000.
  • When EL2 is implemented, 0b0001.

The feature ARMv8.3-NV implements the functionality identified by the value 0b0001.

In Armv8.4, the permitted values are:

  • When EL2 is not implemented, 0b0000.
  • When EL2 is implemented, 0b0010.

The feature ARMv8.4-NV implements the functionality identified by the value 0b0010.