aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Turner <andrew@FreeBSD.org>2022-06-29 16:34:41 +0000
committerAndrew Turner <andrew@FreeBSD.org>2022-06-29 16:50:04 +0000
commit66ba742d2e6c950611fa3d557512133b0216daa7 (patch)
tree736ed0f7571756a37615ab449c350af5ab435240
parent48a55bbfe95bc7b32d37673839edc2f365ffc028 (diff)
downloadsrc-66ba742d2e6c950611fa3d557512133b0216daa7.tar.gz
src-66ba742d2e6c950611fa3d557512133b0216daa7.zip
Allow use of the arm64 unnamed register form
On arm64 all registers have a name that encodes op0, op1, CRn, CRm, and op2 that are used to encode the register in the instruction. As some registers we need to access may not be supportedby older compilers, or are only supported when specific extensions are enabled support this alternative form. Sponsored by: The FreeBSD Foundation
-rw-r--r--sys/arm64/include/armreg.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h
index 02f45d66efde..726248a0916b 100644
--- a/sys/arm64/include/armreg.h
+++ b/sys/arm64/include/armreg.h
@@ -57,6 +57,12 @@
#define MRS_REG(reg) \
__MRS_REG(reg##_op0, reg##_op1, reg##_CRn, reg##_CRm, reg##_op2)
+#define __MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) \
+ S##op0##_##op1##_C##crn##_C##crm##_##op2
+#define _MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) \
+ __MRS_REG_ALT_NAME(op0, op1, crn, crm, op2)
+#define MRS_REG_ALT_NAME(reg) \
+ _MRS_REG_ALT_NAME(reg##_op0, reg##_op1, reg##_CRn, reg##_CRm, reg##_op2)
#define READ_SPECIALREG(reg) \