| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (C) 2021 ARM Limited |
| * |
| * Verify that using a streaming mode instruction without enabling it |
| * generates a SIGILL. |
| */ |
| |
| #include <signal.h> |
| #include <ucontext.h> |
| #include <sys/prctl.h> |
| |
| #include "test_signals_utils.h" |
| #include "testcases.h" |
| |
| int sme_trap_no_sm_trigger(struct tdescr *td) |
| { |
| /* SMSTART ZA ; ADDHA ZA0.S, P0/M, P0/M, Z0.S */ |
| asm volatile(".inst 0xd503457f ; .inst 0xc0900000"); |
| |
| return 0; |
| } |
| |
| int sme_trap_no_sm_run(struct tdescr *td, siginfo_t *si, ucontext_t *uc) |
| { |
| return 1; |
| } |
| |
| struct tdescr tde = { |
| .name = "SME trap without SM", |
| .descr = "Check that we get a SIGILL if we use streaming mode without enabling it", |
| .timeout = 3, |
| .feats_required = FEAT_SME, /* We need a SMSTART ZA */ |
| .sanity_disabled = true, |
| .trigger = sme_trap_no_sm_trigger, |
| .run = sme_trap_no_sm_run, |
| .sig_ok = SIGILL, |
| }; |