[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XEN][PATCH 7/8] xen/arm: regs.h split subarch definitions between arm64/arm32
From: Grygorii Strashko <grygorii_strashko@xxxxxxxx> Split subarch definitions between arm64/arm32: hyp_mode() regs_mode_is_user() regs_mode_is_32bit() Signed-off-by: Grygorii Strashko <grygorii_strashko@xxxxxxxx> --- 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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |