1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2 /*
3  * Author: Hanlu Li <lihanlu@loongson.cn>
4  *         Huacai Chen <chenhuacai@loongson.cn>
5  *
6  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
7  */
8 #ifndef _UAPI_ASM_SIGCONTEXT_H
9 #define _UAPI_ASM_SIGCONTEXT_H
10 
11 #include <linux/types.h>
12 #include <linux/posix_types.h>
13 
14 /* FP context was used */
15 #define SC_USED_FP		(1 << 0)
16 /* Address error was due to memory load */
17 #define SC_ADDRERR_RD		(1 << 30)
18 /* Address error was due to memory store */
19 #define SC_ADDRERR_WR		(1 << 31)
20 
21 struct sigcontext {
22 	__u64	sc_pc;
23 	__u64	sc_regs[32];
24 	__u32	sc_flags;
25 	__u64	sc_extcontext[0] __attribute__((__aligned__(16)));
26 };
27 
28 #define CONTEXT_INFO_ALIGN	16
29 struct sctx_info {
30 	__u32	magic;
31 	__u32	size;
32 	__u64	padding;	/* padding to 16 bytes */
33 };
34 
35 /* FPU context */
36 #define FPU_CTX_MAGIC		0x46505501
37 #define FPU_CTX_ALIGN		8
38 struct fpu_context {
39 	__u64	regs[32];
40 	__u64	fcc;
41 	__u32	fcsr;
42 };
43 
44 #endif /* _UAPI_ASM_SIGCONTEXT_H */
45