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