brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · e469ae5 Raw
46 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (C) 2021 ARM Limited4 *5 * Verify that using an instruction not supported in streaming mode6 * 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 to20	 * stop any other code triggering a further SIGILL down the21	 * 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};46