|
@@ -22,8 +22,6 @@
|
|
|
|
|
|
#include <linux/stringify.h>
|
|
#include <linux/stringify.h>
|
|
|
|
|
|
-#include <asm/opcodes.h>
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* ARMv8 ARM reserves the following encoding for system registers:
|
|
* ARMv8 ARM reserves the following encoding for system registers:
|
|
* (Ref: ARMv8 ARM, Section: "System instruction class encoding overview",
|
|
* (Ref: ARMv8 ARM, Section: "System instruction class encoding overview",
|
|
@@ -37,6 +35,12 @@
|
|
#define sys_reg(op0, op1, crn, crm, op2) \
|
|
#define sys_reg(op0, op1, crn, crm, op2) \
|
|
((((op0)&3)<<19)|((op1)<<16)|((crn)<<12)|((crm)<<8)|((op2)<<5))
|
|
((((op0)&3)<<19)|((op1)<<16)|((crn)<<12)|((crm)<<8)|((op2)<<5))
|
|
|
|
|
|
|
|
+#ifdef __ASSEMBLY__
|
|
|
|
+#define __emit_inst(x) .inst (x)
|
|
|
|
+#else
|
|
|
|
+#define __emit_inst(x) ".inst " __stringify((x)) "\n\t"
|
|
|
|
+#endif
|
|
|
|
+
|
|
#define SYS_MIDR_EL1 sys_reg(3, 0, 0, 0, 0)
|
|
#define SYS_MIDR_EL1 sys_reg(3, 0, 0, 0, 0)
|
|
#define SYS_MPIDR_EL1 sys_reg(3, 0, 0, 0, 5)
|
|
#define SYS_MPIDR_EL1 sys_reg(3, 0, 0, 0, 5)
|
|
#define SYS_REVIDR_EL1 sys_reg(3, 0, 0, 0, 6)
|
|
#define SYS_REVIDR_EL1 sys_reg(3, 0, 0, 0, 6)
|
|
@@ -81,10 +85,10 @@
|
|
#define REG_PSTATE_PAN_IMM sys_reg(0, 0, 4, 0, 4)
|
|
#define REG_PSTATE_PAN_IMM sys_reg(0, 0, 4, 0, 4)
|
|
#define REG_PSTATE_UAO_IMM sys_reg(0, 0, 4, 0, 3)
|
|
#define REG_PSTATE_UAO_IMM sys_reg(0, 0, 4, 0, 3)
|
|
|
|
|
|
-#define SET_PSTATE_PAN(x) __inst_arm(0xd5000000 | REG_PSTATE_PAN_IMM |\
|
|
|
|
- (!!x)<<8 | 0x1f)
|
|
|
|
-#define SET_PSTATE_UAO(x) __inst_arm(0xd5000000 | REG_PSTATE_UAO_IMM |\
|
|
|
|
- (!!x)<<8 | 0x1f)
|
|
|
|
|
|
+#define SET_PSTATE_PAN(x) __emit_inst(0xd5000000 | REG_PSTATE_PAN_IMM | \
|
|
|
|
+ (!!x)<<8 | 0x1f)
|
|
|
|
+#define SET_PSTATE_UAO(x) __emit_inst(0xd5000000 | REG_PSTATE_UAO_IMM | \
|
|
|
|
+ (!!x)<<8 | 0x1f)
|
|
|
|
|
|
/* Common SCTLR_ELx flags. */
|
|
/* Common SCTLR_ELx flags. */
|
|
#define SCTLR_ELx_EE (1 << 25)
|
|
#define SCTLR_ELx_EE (1 << 25)
|