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 16 static union { 17 ucontext_t uc; 18 char buf[1024 * 128]; 19 } context; 20 21 int 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 44 struct 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