Add feature name (FEAT_) support to AArch64 instructions
AArch64 instructions are characterised by a feature name starting with FEAT_
, see:
https://developer.arm.com/downloads/-/exploration-tools/feature-names-for-a-profile
Implementations of the AArch64 architecture are more accurately described by FEAT_
feature names, than by vX.Y versions, see the explanation at https://github.com/DynamoRIO/dynamorio/pull/5334#issuecomment-1033999742
This issue will clarify how FEAT_
should be implemented. The following is proposed:
- A new enum
dr_isa_feat_t
similar todr_isa_mode_t
but for AArch64 only. - API accessor functions
dr_get_isa_feat()
andinstr_set_isa_feat()
. - The AArch64 codec will specify the
FEAT_
for all instructions after base v8.0. - The system registers
ID_AA64ISAR0_EL1
,ID_AA64ISAR1_EL1
andID_AA64PFR0_EL1
will be read on DynamoRIO startup in order to establish whichFEAT_
s are implemented by the h/w. During instruction decode and encode, the instruction'sFEAT_
will be checked against theFEAT_
list implemented by the h/w, delivering an error message if theFEAT_
is not implemented.