1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Copyright (C) 2021 ARM Limited
4 *
5 * Verify that accessing ZA without enabling it generates a SIGILL.
6 */
7
8 #include <signal.h>
9 #include <ucontext.h>
10 #include <sys/prctl.h>
11
12 #include "test_signals_utils.h"
13 #include "testcases.h"
14
sme_trap_za_trigger(struct tdescr * td)15 int sme_trap_za_trigger(struct tdescr *td)
16 {
17 /* ZERO ZA */
18 asm volatile(".inst 0xc00800ff");
19
20 return 0;
21 }
22
sme_trap_za_run(struct tdescr * td,siginfo_t * si,ucontext_t * uc)23 int sme_trap_za_run(struct tdescr *td, siginfo_t *si, ucontext_t *uc)
24 {
25 return 1;
26 }
27
28 struct tdescr tde = {
29 .name = "SME ZA trap",
30 .descr = "Check that we get a SIGILL if we access ZA without enabling",
31 .timeout = 3,
32 .sanity_disabled = true,
33 .trigger = sme_trap_za_trigger,
34 .run = sme_trap_za_run,
35 .sig_ok = SIGILL,
36 };
37