xref: /openbmc/linux/arch/loongarch/include/uapi/asm/sigcontext.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1b74baf4aSHuacai Chen /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2b74baf4aSHuacai Chen /*
3b74baf4aSHuacai Chen  * Author: Hanlu Li <lihanlu@loongson.cn>
4b74baf4aSHuacai Chen  *         Huacai Chen <chenhuacai@loongson.cn>
5b74baf4aSHuacai Chen  *
6b74baf4aSHuacai Chen  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
7b74baf4aSHuacai Chen  */
8b74baf4aSHuacai Chen #ifndef _UAPI_ASM_SIGCONTEXT_H
9b74baf4aSHuacai Chen #define _UAPI_ASM_SIGCONTEXT_H
10b74baf4aSHuacai Chen 
11b74baf4aSHuacai Chen #include <linux/types.h>
12b74baf4aSHuacai Chen #include <linux/posix_types.h>
13b74baf4aSHuacai Chen 
14b74baf4aSHuacai Chen /* FP context was used */
15b74baf4aSHuacai Chen #define SC_USED_FP		(1 << 0)
16b74baf4aSHuacai Chen /* Address error was due to memory load */
17b74baf4aSHuacai Chen #define SC_ADDRERR_RD		(1 << 30)
18b74baf4aSHuacai Chen /* Address error was due to memory store */
19b74baf4aSHuacai Chen #define SC_ADDRERR_WR		(1 << 31)
20b74baf4aSHuacai Chen 
21b74baf4aSHuacai Chen struct sigcontext {
22b74baf4aSHuacai Chen 	__u64	sc_pc;
23b74baf4aSHuacai Chen 	__u64	sc_regs[32];
24b74baf4aSHuacai Chen 	__u32	sc_flags;
25b74baf4aSHuacai Chen 	__u64	sc_extcontext[0] __attribute__((__aligned__(16)));
26b74baf4aSHuacai Chen };
27b74baf4aSHuacai Chen 
28b74baf4aSHuacai Chen #define CONTEXT_INFO_ALIGN	16
29b74baf4aSHuacai Chen struct sctx_info {
30b74baf4aSHuacai Chen 	__u32	magic;
31b74baf4aSHuacai Chen 	__u32	size;
32b74baf4aSHuacai Chen 	__u64	padding;	/* padding to 16 bytes */
33b74baf4aSHuacai Chen };
34b74baf4aSHuacai Chen 
35b74baf4aSHuacai Chen /* FPU context */
36b74baf4aSHuacai Chen #define FPU_CTX_MAGIC		0x46505501
37b74baf4aSHuacai Chen #define FPU_CTX_ALIGN		8
38b74baf4aSHuacai Chen struct fpu_context {
39b74baf4aSHuacai Chen 	__u64	regs[32];
40b74baf4aSHuacai Chen 	__u64	fcc;
41b74baf4aSHuacai Chen 	__u32	fcsr;
42b74baf4aSHuacai Chen };
43b74baf4aSHuacai Chen 
4461650023SHuacai Chen /* LSX context */
4561650023SHuacai Chen #define LSX_CTX_MAGIC		0x53580001
4661650023SHuacai Chen #define LSX_CTX_ALIGN		16
4761650023SHuacai Chen struct lsx_context {
4861650023SHuacai Chen 	__u64	regs[2*32];
4961650023SHuacai Chen 	__u64	fcc;
5061650023SHuacai Chen 	__u32	fcsr;
5161650023SHuacai Chen };
5261650023SHuacai Chen 
5361650023SHuacai Chen /* LASX context */
5461650023SHuacai Chen #define LASX_CTX_MAGIC		0x41535801
5561650023SHuacai Chen #define LASX_CTX_ALIGN		32
5661650023SHuacai Chen struct lasx_context {
5761650023SHuacai Chen 	__u64	regs[4*32];
5861650023SHuacai Chen 	__u64	fcc;
5961650023SHuacai Chen 	__u32	fcsr;
6061650023SHuacai Chen };
6161650023SHuacai Chen 
62*bd3c5798SQi Hu /* LBT context */
63*bd3c5798SQi Hu #define LBT_CTX_MAGIC		0x42540001
64*bd3c5798SQi Hu #define LBT_CTX_ALIGN		8
65*bd3c5798SQi Hu struct lbt_context {
66*bd3c5798SQi Hu 	__u64	regs[4];
67*bd3c5798SQi Hu 	__u32	eflags;
68*bd3c5798SQi Hu 	__u32	ftop;
69*bd3c5798SQi Hu };
70*bd3c5798SQi Hu 
71*bd3c5798SQi Hu 
72b74baf4aSHuacai Chen #endif /* _UAPI_ASM_SIGCONTEXT_H */
73