diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2013-02-22 08:58:24 +0000 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2013-02-22 12:14:56 +0000 |
commit | 75c3b4097c01cb2771feaafe0e8dfa2bda6d02c5 (patch) | |
tree | 3b263eabba4b38ecbdd94def2d0169a6516a4cf5 /xen/include/asm-arm/regs.h | |
parent | 8292f7f101822d13da503f4a67293f985b4e6501 (diff) | |
download | xen-75c3b4097c01cb2771feaafe0e8dfa2bda6d02c5.tar.gz xen-75c3b4097c01cb2771feaafe0e8dfa2bda6d02c5.tar.bz2 xen-75c3b4097c01cb2771feaafe0e8dfa2bda6d02c5.zip |
xen: arm: Fix guest mode for 64-bit
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>
Diffstat (limited to 'xen/include/asm-arm/regs.h')
-rw-r--r-- | xen/include/asm-arm/regs.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/xen/include/asm-arm/regs.h b/xen/include/asm-arm/regs.h index 093caec72b..079c0ca47b 100644 --- a/xen/include/asm-arm/regs.h +++ b/xen/include/asm-arm/regs.h @@ -13,10 +13,16 @@ #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); \ |