1156d7557SWarner Losh /*
2156d7557SWarner Losh  *  arm signal definitions
3156d7557SWarner Losh  *
4156d7557SWarner Losh  *  Copyright (c) 2013 Stacey D. Son
5156d7557SWarner Losh  *
6156d7557SWarner Losh  *  This program is free software; you can redistribute it and/or modify
7156d7557SWarner Losh  *  it under the terms of the GNU General Public License as published by
8156d7557SWarner Losh  *  the Free Software Foundation; either version 2 of the License, or
9156d7557SWarner Losh  *  (at your option) any later version.
10156d7557SWarner Losh  *
11156d7557SWarner Losh  *  This program is distributed in the hope that it will be useful,
12156d7557SWarner Losh  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13156d7557SWarner Losh  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14156d7557SWarner Losh  *  GNU General Public License for more details.
15156d7557SWarner Losh  *
16156d7557SWarner Losh  *  You should have received a copy of the GNU General Public License
17156d7557SWarner Losh  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
18156d7557SWarner Losh  */
19156d7557SWarner Losh #ifndef _TARGET_ARCH_SIGNAL_H_
20156d7557SWarner Losh #define _TARGET_ARCH_SIGNAL_H_
21156d7557SWarner Losh 
22156d7557SWarner Losh #include "cpu.h"
23156d7557SWarner Losh 
24156d7557SWarner Losh #define TARGET_REG_R0   0
25156d7557SWarner Losh #define TARGET_REG_R1   1
26156d7557SWarner Losh #define TARGET_REG_R2   2
27156d7557SWarner Losh #define TARGET_REG_R3   3
28156d7557SWarner Losh #define TARGET_REG_R4   4
29156d7557SWarner Losh #define TARGET_REG_R5   5
30156d7557SWarner Losh #define TARGET_REG_R6   6
31156d7557SWarner Losh #define TARGET_REG_R7   7
32156d7557SWarner Losh #define TARGET_REG_R8   8
33156d7557SWarner Losh #define TARGET_REG_R9   9
34156d7557SWarner Losh #define TARGET_REG_R10  10
35156d7557SWarner Losh #define TARGET_REG_R11  11
36156d7557SWarner Losh #define TARGET_REG_R12  12
37156d7557SWarner Losh #define TARGET_REG_R13  13
38156d7557SWarner Losh #define TARGET_REG_R14  14
39156d7557SWarner Losh #define TARGET_REG_R15  15
40156d7557SWarner Losh #define TARGET_REG_CPSR 16
41156d7557SWarner Losh #define TARGET__NGREG   17
42156d7557SWarner Losh /* Convenience synonyms */
43156d7557SWarner Losh #define TARGET_REG_FP   TARGET_REG_R11
44156d7557SWarner Losh #define TARGET_REG_SP   TARGET_REG_R13
45156d7557SWarner Losh #define TARGET_REG_LR   TARGET_REG_R14
46156d7557SWarner Losh #define TARGET_REG_PC   TARGET_REG_R15
47156d7557SWarner Losh 
48156d7557SWarner Losh #define TARGET_INSN_SIZE    4       /* arm instruction size */
49156d7557SWarner Losh 
50156d7557SWarner Losh /* Size of the signal trampolin code. See _sigtramp(). */
51156d7557SWarner Losh #define TARGET_SZSIGCODE    ((abi_ulong)(9 * TARGET_INSN_SIZE))
52156d7557SWarner Losh 
53156d7557SWarner Losh /* compare to arm/include/_limits.h */
54156d7557SWarner Losh #define TARGET_MINSIGSTKSZ  (1024 * 4)                  /* min sig stack size */
55156d7557SWarner Losh #define TARGET_SIGSTKSZ     (TARGET_MINSIGSTKSZ + 32768)  /* recommended size */
56156d7557SWarner Losh 
5703fd4028SWarner Losh /*
5803fd4028SWarner Losh  * Floating point register state
5903fd4028SWarner Losh  */
6003fd4028SWarner Losh typedef struct target_mcontext_vfp {
6103fd4028SWarner Losh     abi_ullong  mcv_reg[32];
6203fd4028SWarner Losh     abi_ulong   mcv_fpscr;
6303fd4028SWarner Losh } target_mcontext_vfp_t;
6403fd4028SWarner Losh 
6503fd4028SWarner Losh typedef struct target_mcontext {
6603fd4028SWarner Losh     abi_uint    __gregs[TARGET__NGREG];
6703fd4028SWarner Losh 
6803fd4028SWarner Losh     /*
6903fd4028SWarner Losh      * Originally, rest of this structure was named __fpu, 35 * 4 bytes
7003fd4028SWarner Losh      * long, never accessed from kernel.
7103fd4028SWarner Losh      */
7203fd4028SWarner Losh     abi_ulong   mc_vfp_size;
7303fd4028SWarner Losh     abi_ptr     mc_vfp_ptr;
7403fd4028SWarner Losh     abi_int     mc_spare[33];
7503fd4028SWarner Losh } target_mcontext_t;
7603fd4028SWarner Losh 
77*2cb1e643SWarner Losh #define TARGET_MCONTEXT_SIZE 208
78*2cb1e643SWarner Losh #define TARGET_UCONTEXT_SIZE 260
79*2cb1e643SWarner Losh 
8003fd4028SWarner Losh #include "target_os_ucontext.h"
8103fd4028SWarner Losh 
8203fd4028SWarner Losh struct target_sigframe {
8303fd4028SWarner Losh     target_siginfo_t    sf_si;  /* saved siginfo */
8403fd4028SWarner Losh     target_ucontext_t   sf_uc;  /* saved ucontext */
8503fd4028SWarner Losh     target_mcontext_vfp_t sf_vfp; /* actual saved VFP context */
8603fd4028SWarner Losh };
8703fd4028SWarner Losh 
88156d7557SWarner Losh #endif /* !_TARGET_ARCH_SIGNAL_H_ */
89