aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Kuo <rkuo@codeaurora.org>2016-10-18 16:21:26 -0500
committerRichard Kuo <rkuo@codeaurora.org>2016-11-14 15:32:46 -0600
commit03750d1609089b74aa3cf9fa6aa4c2c78f826085 (patch)
treeacdd69b6656bcf6ba3b98a3fad5bc2ed8e5eda48
parentf5b82f656444c9406943f92fdad6af03962f500a (diff)
downloadlinux-hexagon-kernel-8996-updates.tar.gz
Hexagon: add/update hypervisor exception codes8996-updates
Signed-off-by: Richard Kuo <rkuo@codeaurora.org>
-rw-r--r--arch/hexagon/include/asm/hexagon_vm.h10
-rw-r--r--arch/hexagon/kernel/traps.c9
2 files changed, 17 insertions, 2 deletions
diff --git a/arch/hexagon/include/asm/hexagon_vm.h b/arch/hexagon/include/asm/hexagon_vm.h
index 01f75844b10fbf..08462d314694af 100644
--- a/arch/hexagon/include/asm/hexagon_vm.h
+++ b/arch/hexagon/include/asm/hexagon_vm.h
@@ -1,7 +1,7 @@
/*
* Declarations for to Hexagon Virtual Machine.
*
- * Copyright (c) 2010-2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2010-2016, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -294,6 +294,7 @@ static inline long __vmintop_clear(long i)
#define HVM_GE_C_XPROT 0x11
#define HVM_GE_C_XUSER 0x12
#define HVM_GE_C_INVI 0x15
+#define HVM_GE_C_COPROC 0x16
#define HVM_GE_C_PRIVI 0x1B
#define HVM_GE_C_XMAL 0x1C
#define HVM_GE_C_WREG 0x1D
@@ -306,6 +307,13 @@ static inline long __vmintop_clear(long i)
#define HVM_GE_C_WUSER 0x25
#define HVM_GE_C_CACHE 0x28
+/* Extended TLB miss cause codes; earlier ones might be deprecated */
+#define HVM_GE_C_TLBMISSX_0 0x60
+#define HVM_GE_C_TLBMISSX_1 0x61
+#define HVM_GE_C_TLBMISSX_ICINVA 0x62
+#define HVM_GE_C_TLBMISSR 0x70
+#define HVM_GE_C_TLBMISSW 0x71
+
/*
* Cause codes for Machine Check
*/
diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c
index b01b06c3ba3cfe..ca428f10feff69 100644
--- a/arch/hexagon/kernel/traps.c
+++ b/arch/hexagon/kernel/traps.c
@@ -1,7 +1,7 @@
/*
* Kernel traps/events for Hexagon processor
*
- * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2010-2014,2016, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -56,12 +56,17 @@ static const char *ex_name(int ex)
switch (ex) {
case HVM_GE_C_XPROT:
case HVM_GE_C_XUSER:
+ case HVM_GE_C_TLBMISSX_0:
+ case HVM_GE_C_TLBMISSX_1:
+ case HVM_GE_C_TLBMISSX_ICINVA:
return "Execute protection fault";
case HVM_GE_C_RPROT:
case HVM_GE_C_RUSER:
+ case HVM_GE_C_TLBMISSR:
return "Read protection fault";
case HVM_GE_C_WPROT:
case HVM_GE_C_WUSER:
+ case HVM_GE_C_TLBMISSW:
return "Write protection fault";
case HVM_GE_C_XMAL:
return "Misaligned instruction";
@@ -80,6 +85,8 @@ static const char *ex_name(int ex)
return "Precise bus error";
case HVM_GE_C_CACHE:
return "Cache error";
+ case HVM_GE_C_COPROC:
+ return "Illegal Coproc instruction";
case 0xdb:
return "Debugger trap";