| /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ |
| /* |
| * Author: Hanlu Li <lihanlu@loongson.cn> |
| * Huacai Chen <chenhuacai@loongson.cn> |
| * |
| * Copyright (C) 2020-2022 Loongson Technology Corporation Limited |
| */ |
| #ifndef _UAPI_ASM_SIGCONTEXT_H |
| #define _UAPI_ASM_SIGCONTEXT_H |
| |
| #include <linux/types.h> |
| #include <linux/posix_types.h> |
| |
| /* FP context was used */ |
| #define SC_USED_FP (1 << 0) |
| /* Address error was due to memory load */ |
| #define SC_ADDRERR_RD (1 << 30) |
| /* Address error was due to memory store */ |
| #define SC_ADDRERR_WR (1 << 31) |
| |
| struct sigcontext { |
| __u64 sc_pc; |
| __u64 sc_regs[32]; |
| __u32 sc_flags; |
| __u64 sc_extcontext[0] __attribute__((__aligned__(16))); |
| }; |
| |
| #define CONTEXT_INFO_ALIGN 16 |
| struct sctx_info { |
| __u32 magic; |
| __u32 size; |
| __u64 padding; /* padding to 16 bytes */ |
| }; |
| |
| /* FPU context */ |
| #define FPU_CTX_MAGIC 0x46505501 |
| #define FPU_CTX_ALIGN 8 |
| struct fpu_context { |
| __u64 regs[32]; |
| __u64 fcc; |
| __u32 fcsr; |
| }; |
| |
| /* LSX context */ |
| #define LSX_CTX_MAGIC 0x53580001 |
| #define LSX_CTX_ALIGN 16 |
| struct lsx_context { |
| __u64 regs[2*32]; |
| __u64 fcc; |
| __u32 fcsr; |
| }; |
| |
| /* LASX context */ |
| #define LASX_CTX_MAGIC 0x41535801 |
| #define LASX_CTX_ALIGN 32 |
| struct lasx_context { |
| __u64 regs[4*32]; |
| __u64 fcc; |
| __u32 fcsr; |
| }; |
| |
| /* LBT context */ |
| #define LBT_CTX_MAGIC 0x42540001 |
| #define LBT_CTX_ALIGN 8 |
| struct lbt_context { |
| __u64 regs[4]; |
| __u32 eflags; |
| __u32 ftop; |
| }; |
| |
| |
| #endif /* _UAPI_ASM_SIGCONTEXT_H */ |