Merge tag 'samsung-defconfig-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / arch / nds32 / include / uapi / asm / sigcontext.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 // Copyright (C) 2005-2017 Andes Technology Corporation
3
4 #ifndef _ASMNDS32_SIGCONTEXT_H
5 #define _ASMNDS32_SIGCONTEXT_H
6
7 /*
8  * Signal context structure - contains all info to do with the state
9  * before the signal handler was invoked.  Note: only add new entries
10  * to the end of the structure.
11  */
12 struct fpu_struct {
13         unsigned long long fd_regs[32];
14         unsigned long fpcsr;
15         /*
16          * When CONFIG_SUPPORT_DENORMAL_ARITHMETIC is defined, kernel prevents
17          * hardware from treating the denormalized output as an underflow case
18          * and rounding it to a normal number. Hence kernel enables the UDF and
19          * IEX trap in the fpcsr register to step in the calculation.
20          * However, the UDF and IEX trap enable bit in $fpcsr also lose
21          * their use.
22          *
23          * UDF_IEX_trap replaces the feature of UDF and IEX trap enable bit in
24          * $fpcsr to control the trap of underflow and inexact. The bit filed
25          * of UDF_IEX_trap is the same as $fpcsr, 10th bit is used to enable UDF
26          * exception trapping and 11th bit is used to enable IEX exception
27          * trapping.
28          *
29          * UDF_IEX_trap is only modified through fp_udfiex_crtl syscall.
30          * Therefore, UDF_IEX_trap needn't be saved and restored in each
31          * context switch.
32          */
33         unsigned long UDF_IEX_trap;
34 };
35
36 struct zol_struct {
37         unsigned long nds32_lc; /* $LC */
38         unsigned long nds32_le; /* $LE */
39         unsigned long nds32_lb; /* $LB */
40 };
41
42 struct sigcontext {
43         unsigned long trap_no;
44         unsigned long error_code;
45         unsigned long oldmask;
46         unsigned long nds32_r0;
47         unsigned long nds32_r1;
48         unsigned long nds32_r2;
49         unsigned long nds32_r3;
50         unsigned long nds32_r4;
51         unsigned long nds32_r5;
52         unsigned long nds32_r6;
53         unsigned long nds32_r7;
54         unsigned long nds32_r8;
55         unsigned long nds32_r9;
56         unsigned long nds32_r10;
57         unsigned long nds32_r11;
58         unsigned long nds32_r12;
59         unsigned long nds32_r13;
60         unsigned long nds32_r14;
61         unsigned long nds32_r15;
62         unsigned long nds32_r16;
63         unsigned long nds32_r17;
64         unsigned long nds32_r18;
65         unsigned long nds32_r19;
66         unsigned long nds32_r20;
67         unsigned long nds32_r21;
68         unsigned long nds32_r22;
69         unsigned long nds32_r23;
70         unsigned long nds32_r24;
71         unsigned long nds32_r25;
72         unsigned long nds32_fp; /* $r28 */
73         unsigned long nds32_gp; /* $r29 */
74         unsigned long nds32_lp; /* $r30 */
75         unsigned long nds32_sp; /* $r31 */
76         unsigned long nds32_ipc;
77         unsigned long fault_address;
78         unsigned long used_math_flag;
79         /* FPU Registers */
80         struct fpu_struct fpu;
81         struct zol_struct zol;
82 };
83
84 #endif