sigcontext.h revision 87fa4f8d01b4876a9153e6ad02021c9bfb8ef1ae
1/* 2 * Copyright (C) 2012 ARM Ltd. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16#ifndef _UAPI__ASM_SIGCONTEXT_H 17#define _UAPI__ASM_SIGCONTEXT_H 18 19#include <linux/types.h> 20 21/* 22 * Signal context structure - contains all info to do with the state 23 * before the signal handler was invoked. 24 */ 25struct sigcontext { 26 __u64 fault_address; 27 /* AArch64 registers */ 28 __u64 regs[31]; 29 __u64 sp; 30 __u64 pc; 31 __u64 pstate; 32 /* 4K reserved for FP/SIMD state and future expansion */ 33 __u8 __reserved[4096] __attribute__((__aligned__(16))); 34}; 35 36/* 37 * Header to be used at the beginning of structures extending the user 38 * context. Such structures must be placed after the rt_sigframe on the stack 39 * and be 16-byte aligned. The last structure must be a dummy one with the 40 * magic and size set to 0. 41 */ 42struct _aarch64_ctx { 43 __u32 magic; 44 __u32 size; 45}; 46 47#define FPSIMD_MAGIC 0x46508001 48 49struct fpsimd_context { 50 struct _aarch64_ctx head; 51 __u32 fpsr; 52 __u32 fpcr; 53 __uint128_t vregs[32]; 54}; 55 56 57#endif /* _UAPI__ASM_SIGCONTEXT_H */ 58