]> xenbits.xensource.com Git - xen.git/commitdiff
xen: arm: Fix guest mode for 64-bit
authorIan Campbell <ian.campbell@citrix.com>
Fri, 22 Feb 2013 08:58:24 +0000 (08:58 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 22 Feb 2013 12:14:56 +0000 (12:14 +0000)
Need to check for the 64-bit EL2 modes, not 32-bit HYP mode.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
xen/include/asm-arm/regs.h

index 093caec72bb9226fdfa9611a0c3816915d6b6327..079c0ca47bef6eaf32539e340433a89ccf6e8090 100644 (file)
 #define svc_mode(r)     psr_mode((r)->cpsr,PSR_MODE_SVC)
 #define mon_mode(r)     psr_mode((r)->cpsr,PSR_MODE_MON)
 #define abt_mode(r)     psr_mode((r)->cpsr,PSR_MODE_ABT)
-#define hyp_mode(r)     psr_mode((r)->cpsr,PSR_MODE_HYP)
 #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)
+#else
+#define hyp_mode(r)     (psr_mode((r)->cpsr,PSR_MODE_EL2h) || \
+                         psr_mode((r)->cpsr,PSR_MODE_EL2t))
+#endif
+
 #define guest_mode(r)                                                         \
 ({                                                                            \
     unsigned long diff = (char *)guest_cpu_user_regs() - (char *)(r);         \