From: Grygorii Strashko <grygorii_strashko@epam.com>
Split subarch definitions between arm64/arm32:
hyp_mode()
regs_mode_is_user()
regs_mode_is_32bit()
Signed-off-by: Grygorii Strashko <grygorii_strashko@epam.com>
---
xen/arch/arm/include/asm/arm32/processor.h | 5 +++++
xen/arch/arm/include/asm/arm64/processor.h | 15 ++++++++++++++
xen/arch/arm/include/asm/regs.h | 24 ----------------------
3 files changed, 20 insertions(+), 24 deletions(-)
diff --git a/xen/arch/arm/include/asm/arm32/processor.h b/xen/arch/arm/include/asm/arm32/processor.h
index 4e679f3273ab..10d5ff5c192e 100644
--- a/xen/arch/arm/include/asm/arm32/processor.h
+++ b/xen/arch/arm/include/asm/arm32/processor.h
@@ -56,6 +56,11 @@ struct cpu_user_regs
uint32_t pad1; /* Doubleword-align the user half of the frame */
};
+#define hyp_mode(r) psr_mode((r)->cpsr, PSR_MODE_HYP)
+#define regs_mode_is_user(r) usr_mode(r)
+
+#define regs_mode_is_32bit(regs) (true)
+
#endif
#endif /* __ASM_ARM_ARM32_PROCESSOR_H */
diff --git a/xen/arch/arm/include/asm/arm64/processor.h b/xen/arch/arm/include/asm/arm64/processor.h
index c749f80ad91b..daf890708d87 100644
--- a/xen/arch/arm/include/asm/arm64/processor.h
+++ b/xen/arch/arm/include/asm/arm64/processor.h
@@ -86,6 +86,21 @@ struct cpu_user_regs
#undef __DECL_REG
+#define hyp_mode(r) \
+ (psr_mode((r)->cpsr, PSR_MODE_EL2h) || \
+ psr_mode((r)->cpsr, PSR_MODE_EL2t))
+
+/*
+ * Trap may have been taken from EL0, which might be in AArch32 usr
+ * mode, or in AArch64 mode (PSR_MODE_EL0t).
+ */
+#define regs_mode_is_user(r) (psr_mode((r)->cpsr, PSR_MODE_EL0t) || usr_mode(r))
+
+static inline bool regs_mode_is_32bit(const struct cpu_user_regs *regs)
+{
+ return !!(regs->cpsr & PSR_MODE_BIT);
+}
+
#endif /* __ASSEMBLY__ */
#endif /* __ASM_ARM_ARM64_PROCESSOR_H */
diff --git a/xen/arch/arm/include/asm/regs.h b/xen/arch/arm/include/asm/regs.h
index 0d9f239a7782..22d3a1688876 100644
--- a/xen/arch/arm/include/asm/regs.h
+++ b/xen/arch/arm/include/asm/regs.h
@@ -13,15 +13,6 @@
#define psr_mode(psr,m) (((psr) & PSR_MODE_MASK) == (m))
-static inline bool regs_mode_is_32bit(const struct cpu_user_regs *regs)
-{
-#ifdef CONFIG_ARM_32
- return true;
-#else
- return !!(regs->cpsr & PSR_MODE_BIT);
-#endif
-}
-
#define usr_mode(r) psr_mode((r)->cpsr,PSR_MODE_USR)
#define fiq_mode(r) psr_mode((r)->cpsr,PSR_MODE_FIQ)
#define irq_mode(r) psr_mode((r)->cpsr,PSR_MODE_IRQ)
@@ -31,21 +22,6 @@ static inline bool regs_mode_is_32bit(const struct cpu_user_regs *regs)
#define und_mode(r) psr_mode((r)->cpsr,PSR_MODE_UND)
#define sys_mode(r) psr_mode((r)->cpsr,PSR_MODE_SYS)
-#ifdef CONFIG_ARM_32
-#define hyp_mode(r) psr_mode((r)->cpsr,PSR_MODE_HYP)
-#define regs_mode_is_user(r) usr_mode(r)
-#else
-#define hyp_mode(r) (psr_mode((r)->cpsr,PSR_MODE_EL2h) || \
- psr_mode((r)->cpsr,PSR_MODE_EL2t))
-
-/*
- * Trap may have been taken from EL0, which might be in AArch32 usr
- * mode, or in AArch64 mode (PSR_MODE_EL0t).
- */
-#define regs_mode_is_user(r) \
- (psr_mode((r)->cpsr,PSR_MODE_EL0t) || usr_mode(r))
-#endif
-
static inline bool guest_mode(const struct cpu_user_regs *r)
{
unsigned long diff = (uintptr_t)guest_cpu_user_regs() - (uintptr_t)(r);
--
2.34.1