aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-arm
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2013-07-29 13:21:06 +0100
committerIan Campbell <ian.campbell@citrix.com>2013-07-29 16:54:51 +0100
commit7d413e38c7ad250a5163ce64358917a84aa8bfbf (patch)
tree7336ec6b5b9fa5de6ce6819053b637b3e2c994f1 /xen/include/asm-arm
parentc6fd2ed3f69247c53c86fd8966361000fec27d12 (diff)
downloadxen-7d413e38c7ad250a5163ce64358917a84aa8bfbf.tar.gz
xen-7d413e38c7ad250a5163ce64358917a84aa8bfbf.tar.bz2
xen-7d413e38c7ad250a5163ce64358917a84aa8bfbf.zip
xen: arm: Handle SMC from 64-bit guests
Similarly to arm32 guests handle it by injecting an undefined instruction trap. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'xen/include/asm-arm')
-rw-r--r--xen/include/asm-arm/processor.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/xen/include/asm-arm/processor.h b/xen/include/asm-arm/processor.h
index 960b83e8ad..948bf2de9e 100644
--- a/xen/include/asm-arm/processor.h
+++ b/xen/include/asm-arm/processor.h
@@ -83,6 +83,7 @@
#define HCR_SWIO (1<<1) /* Set/Way Invalidation Override */
#define HCR_VM (1<<0) /* Virtual MMU Enable */
+#define HSR_EC_UNKNOWN 0x00
#define HSR_EC_WFI_WFE 0x01
#define HSR_EC_CP15_32 0x03
#define HSR_EC_CP15_64 0x04
@@ -95,9 +96,10 @@
#define HSR_EC_CP14_64 0x0c
#define HSR_EC_SVC32 0x11
#define HSR_EC_HVC32 0x12
-#define HSR_EC_SMC 0x13
+#define HSR_EC_SMC32 0x13
#ifdef CONFIG_ARM_64
#define HSR_EC_HVC64 0x16
+#define HSR_EC_SMC64 0x17
#define HSR_EC_SYSREG 0x18
#endif
#define HSR_EC_INSTR_ABORT_GUEST 0x20
@@ -388,11 +390,21 @@ union hsr {
#define CNTx_CTL_PENDING (1u<<2) /* IRQ pending */
/* Exception Vector offsets */
+/* ... ARM32 */
#define VECTOR32_RST 0
#define VECTOR32_UND 4
#define VECTOR32_SVC 8
#define VECTOR32_PABT 12
#define VECTOR32_DABT 16
+/* ... ARM64 */
+#define VECTOR64_CURRENT_SP0_SYNC 0x000
+#define VECTOR64_CURRENT_SP0_IRQ 0x080
+#define VECTOR64_CURRENT_SP0_FIQ 0x100
+#define VECTOR64_CURRENT_SP0_ERROR 0x180
+#define VECTOR64_CURRENT_SPx_SYNC 0x200
+#define VECTOR64_CURRENT_SPx_IRQ 0x280
+#define VECTOR64_CURRENT_SPx_FIQ 0x300
+#define VECTOR64_CURRENT_SPx_ERROR 0x380
#if defined(CONFIG_ARM_32)
# include <asm/arm32/processor.h>