18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci* Copyright (C) 2020 Loongson Technology Corporation Limited 48c2ecf20Sopenharmony_ci* 58c2ecf20Sopenharmony_ci* Author: Hanlu Li <lihanlu@loongson.cn> 68c2ecf20Sopenharmony_ci*/ 78c2ecf20Sopenharmony_ci#ifndef _UAPI_ASM_SIGCONTEXT_H 88c2ecf20Sopenharmony_ci#define _UAPI_ASM_SIGCONTEXT_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/types.h> 118c2ecf20Sopenharmony_ci#include <linux/posix_types.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci/* FP context was used */ 148c2ecf20Sopenharmony_ci#define SC_USED_FP (1 << 0) 158c2ecf20Sopenharmony_ci/* Address error was due to memory load */ 168c2ecf20Sopenharmony_ci#define SC_ADDRERR_RD (1 << 30) 178c2ecf20Sopenharmony_ci/* Address error was due to memory store */ 188c2ecf20Sopenharmony_ci#define SC_ADDRERR_WR (1 << 31) 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistruct sigcontext { 218c2ecf20Sopenharmony_ci __u64 sc_pc; 228c2ecf20Sopenharmony_ci __u64 sc_regs[32]; 238c2ecf20Sopenharmony_ci __u32 sc_flags; 248c2ecf20Sopenharmony_ci __u64 sc_extcontext[0] __attribute__((__aligned__(16))); 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci#define CONTEXT_INFO_ALIGN 16 288c2ecf20Sopenharmony_cistruct sctx_info { 298c2ecf20Sopenharmony_ci __u32 magic; 308c2ecf20Sopenharmony_ci __u32 size; 318c2ecf20Sopenharmony_ci __u64 padding; /* padding to 16 bytes */ 328c2ecf20Sopenharmony_ci}; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci/* FPU context */ 358c2ecf20Sopenharmony_ci#define FPU_CTX_MAGIC 0x46505501 368c2ecf20Sopenharmony_ci#define FPU_CTX_ALIGN 8 378c2ecf20Sopenharmony_cistruct fpu_context { 388c2ecf20Sopenharmony_ci __u64 regs[32]; 398c2ecf20Sopenharmony_ci __u64 fcc; 408c2ecf20Sopenharmony_ci __u32 fcsr; 418c2ecf20Sopenharmony_ci}; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci/* LSX context */ 448c2ecf20Sopenharmony_ci#define LSX_CTX_MAGIC 0x53580001 458c2ecf20Sopenharmony_ci#define LSX_CTX_ALIGN 16 468c2ecf20Sopenharmony_cistruct lsx_context { 478c2ecf20Sopenharmony_ci __u64 regs[2*32]; 488c2ecf20Sopenharmony_ci __u64 fcc; 498c2ecf20Sopenharmony_ci __u32 fcsr; 508c2ecf20Sopenharmony_ci}; 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci/* LASX context */ 538c2ecf20Sopenharmony_ci#define LASX_CTX_MAGIC 0x41535801 548c2ecf20Sopenharmony_ci#define LASX_CTX_ALIGN 32 558c2ecf20Sopenharmony_cistruct lasx_context { 568c2ecf20Sopenharmony_ci __u64 regs[4*32]; 578c2ecf20Sopenharmony_ci __u64 fcc; 588c2ecf20Sopenharmony_ci __u32 fcsr; 598c2ecf20Sopenharmony_ci}; 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci/* LBT context */ 628c2ecf20Sopenharmony_ci#define LBT_CTX_MAGIC 0x42540001 638c2ecf20Sopenharmony_ci#define LBT_CTX_ALIGN 8 648c2ecf20Sopenharmony_cistruct lbt_context { 658c2ecf20Sopenharmony_ci __u64 scr[4]; 668c2ecf20Sopenharmony_ci __u32 eflags; 678c2ecf20Sopenharmony_ci}; 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#endif /* _UAPI_ASM_SIGCONTEXT_H */ 70