Search code examples
assemblyarm64instruction-set

How to find all privileged instructions in AArch64 (ARM-v8) instruction set?


I want to find all privileged instructions in AArch64 (ARMv8) ISA.

Currently I can only find privileged instruction list on x86 architecture. How can I find the ones on AArch64? Thank you!


Solution

  • There isn't a discrete published list, the Arm Architecture is defined using some very succinct pseudo-code so you could figure out how to parse that, or look at the ISA description XML.

    https://developer.arm.com/downloads/-/exploration-tools

    That said, most truly privileged instructions are aliases of SYS, or are an MRS/MSR with an _EL{1,2,3} register suffix. Anything that isn't usually has an architectural control - SCTLR_EL1.UCI will allow DC and IC (n.b. two SYS aliases) instructions to execute in EL0, for example, otherwise they require executing at least at EL1.

    Since most of the control bits in registers in the architecture are UNKNOWN e.g. SCTLR_EL1.UCI doesn't have a mandated reset value, in that sense the instruction isn't privileged until some software configures it to be so or not so.