162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Author: Hanlu Li <lihanlu@loongson.cn> 462306a36Sopenharmony_ci * Huacai Chen <chenhuacai@loongson.cn> 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci#ifndef _UAPI_ASM_SIGCONTEXT_H 962306a36Sopenharmony_ci#define _UAPI_ASM_SIGCONTEXT_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/types.h> 1262306a36Sopenharmony_ci#include <linux/posix_types.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci/* FP context was used */ 1562306a36Sopenharmony_ci#define SC_USED_FP (1 << 0) 1662306a36Sopenharmony_ci/* Address error was due to memory load */ 1762306a36Sopenharmony_ci#define SC_ADDRERR_RD (1 << 30) 1862306a36Sopenharmony_ci/* Address error was due to memory store */ 1962306a36Sopenharmony_ci#define SC_ADDRERR_WR (1 << 31) 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistruct sigcontext { 2262306a36Sopenharmony_ci __u64 sc_pc; 2362306a36Sopenharmony_ci __u64 sc_regs[32]; 2462306a36Sopenharmony_ci __u32 sc_flags; 2562306a36Sopenharmony_ci __u64 sc_extcontext[0] __attribute__((__aligned__(16))); 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#define CONTEXT_INFO_ALIGN 16 2962306a36Sopenharmony_cistruct sctx_info { 3062306a36Sopenharmony_ci __u32 magic; 3162306a36Sopenharmony_ci __u32 size; 3262306a36Sopenharmony_ci __u64 padding; /* padding to 16 bytes */ 3362306a36Sopenharmony_ci}; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci/* FPU context */ 3662306a36Sopenharmony_ci#define FPU_CTX_MAGIC 0x46505501 3762306a36Sopenharmony_ci#define FPU_CTX_ALIGN 8 3862306a36Sopenharmony_cistruct fpu_context { 3962306a36Sopenharmony_ci __u64 regs[32]; 4062306a36Sopenharmony_ci __u64 fcc; 4162306a36Sopenharmony_ci __u32 fcsr; 4262306a36Sopenharmony_ci}; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci/* LSX context */ 4562306a36Sopenharmony_ci#define LSX_CTX_MAGIC 0x53580001 4662306a36Sopenharmony_ci#define LSX_CTX_ALIGN 16 4762306a36Sopenharmony_cistruct lsx_context { 4862306a36Sopenharmony_ci __u64 regs[2*32]; 4962306a36Sopenharmony_ci __u64 fcc; 5062306a36Sopenharmony_ci __u32 fcsr; 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci/* LASX context */ 5462306a36Sopenharmony_ci#define LASX_CTX_MAGIC 0x41535801 5562306a36Sopenharmony_ci#define LASX_CTX_ALIGN 32 5662306a36Sopenharmony_cistruct lasx_context { 5762306a36Sopenharmony_ci __u64 regs[4*32]; 5862306a36Sopenharmony_ci __u64 fcc; 5962306a36Sopenharmony_ci __u32 fcsr; 6062306a36Sopenharmony_ci}; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci/* LBT context */ 6362306a36Sopenharmony_ci#define LBT_CTX_MAGIC 0x42540001 6462306a36Sopenharmony_ci#define LBT_CTX_ALIGN 8 6562306a36Sopenharmony_cistruct lbt_context { 6662306a36Sopenharmony_ci __u64 regs[4]; 6762306a36Sopenharmony_ci __u32 eflags; 6862306a36Sopenharmony_ci __u32 ftop; 6962306a36Sopenharmony_ci}; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#endif /* _UAPI_ASM_SIGCONTEXT_H */ 73