File Index
Files and directories
Sign in
FILE

sme_trap_non_streaming.c

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/arm64/signal/testcases/sme_trap_non_streaming.c C
 1// SPDX-License-Identifier: GPL-2.0
 2/*
 3 * Copyright (C) 2021 ARM Limited
 4 *
 5 * Verify that using an instruction not supported in streaming mode
 6 * traps when in streaming mode.
 7 */
 8
 9#include <signal.h>
10#include <ucontext.h>
11#include <sys/prctl.h>
12
13#include "test_signals_utils.h"
14#include "testcases.h"
15
16int sme_trap_non_streaming_trigger(struct tdescr *td)
17{
18	/*
19	 * The framework will handle SIGILL so we need to exit SM to
20	 * stop any other code triggering a further SIGILL down the
21	 * line from using a streaming-illegal instruction.
22	 */
23	asm volatile(".inst 0xd503437f; /* SMSTART ZA */ \
24		      cnt v0.16b, v0.16b; \
25                      .inst 0xd503447f  /* SMSTOP ZA */");
26
27	return 0;
28}
29
30int sme_trap_non_streaming_run(struct tdescr *td, siginfo_t *si, ucontext_t *uc)
31{
32	return 1;
33}
34
35struct tdescr tde = {
36	.name = "SME SM trap unsupported instruction",
37	.descr = "Check that we get a SIGILL if we use an unsupported instruction in streaming mode",
38	.feats_required = FEAT_SME,
39	.feats_incompatible = FEAT_SME_FA64,
40	.timeout = 3,
41	.sanity_disabled = true,
42	.trigger = sme_trap_non_streaming_trigger,
43	.run = sme_trap_non_streaming_run,
44	.sig_ok = SIGILL,
45};
~/ Read-only file preview.