linux-user/aarch64: Signal SEGV_MTESERR for sync tag check fault
authorRichard Henderson <richard.henderson@linaro.org>
Fri, 12 Feb 2021 18:48:58 +0000 (10:48 -0800)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 16 Feb 2021 13:17:02 +0000 (13:17 +0000)
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210212184902.1251044-28-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
linux-user/aarch64/cpu_loop.c
linux-user/aarch64/target_signal.h

index 4e43906e66a76919af5055dee9f2c1ae7d8a5b93..b6a2e65593f03eae359c2569096f43e5d7e0e2a9 100644 (file)
@@ -134,6 +134,9 @@ void cpu_loop(CPUARMState *env)
             case 0x0d ... 0x0f: /* Permission fault, level {1-3} */
                 info.si_code = TARGET_SEGV_ACCERR;
                 break;
+            case 0x11: /* Synchronous Tag Check Fault */
+                info.si_code = TARGET_SEGV_MTESERR;
+                break;
             default:
                 g_assert_not_reached();
             }
index ddd73169f0f09a4611a5ddbf57a16ca34fadf47e..777fb667feadb1c2cfe77bc00320307bfe772d2e 100644 (file)
@@ -21,5 +21,7 @@ typedef struct target_sigaltstack {
 
 #include "../generic/signal.h"
 
+#define TARGET_SEGV_MTESERR  9  /* Synchronous ARM MTE exception */
+
 #define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* AARCH64_TARGET_SIGNAL_H */