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 16static union { 17 ucontext_t uc; 18 char buf[1024 * 128]; 19} context; 20 21int zt_no_regs_run(struct tdescr *td, siginfo_t *si, ucontext_t *uc) 22{ 23 size_t offset; 24 struct _aarch64_ctx *head = GET_BUF_RESV_HEAD(context); 25 26 /* 27 * Get a signal context which should not have a ZT frame and 28 * registers in it. 29 */ 30 if (!get_current_context(td, &context.uc, sizeof(context))) 31 return 1; 32 33 head = get_header(head, ZT_MAGIC, GET_BUF_RESV_SIZE(context), &offset); 34 if (head) { 35 fprintf(stderr, "Got unexpected ZT context\n"); 36 return 1; 37 } 38 39 td->pass = 1; 40 41 return 0; 42} 43 44struct tdescr tde = { 45 .name = "ZT register data not present", 46 .descr = "Validate that ZT is not present when ZA is disabled", 47 .feats_required = FEAT_SME2, 48 .timeout = 3, 49 .sanity_disabled = true, 50 .run = zt_no_regs_run, 51}; 52