xref: /qemu/bsd-user/arm/target_arch_signal.h (revision 9c092804)
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  */
199c092804SMarkus Armbruster 
209c092804SMarkus Armbruster #ifndef TARGET_ARCH_SIGNAL_H
219c092804SMarkus Armbruster #define TARGET_ARCH_SIGNAL_H
22156d7557SWarner Losh 
23156d7557SWarner Losh #include "cpu.h"
24156d7557SWarner Losh 
25156d7557SWarner Losh #define TARGET_REG_R0   0
26156d7557SWarner Losh #define TARGET_REG_R1   1
27156d7557SWarner Losh #define TARGET_REG_R2   2
28156d7557SWarner Losh #define TARGET_REG_R3   3
29156d7557SWarner Losh #define TARGET_REG_R4   4
30156d7557SWarner Losh #define TARGET_REG_R5   5
31156d7557SWarner Losh #define TARGET_REG_R6   6
32156d7557SWarner Losh #define TARGET_REG_R7   7
33156d7557SWarner Losh #define TARGET_REG_R8   8
34156d7557SWarner Losh #define TARGET_REG_R9   9
35156d7557SWarner Losh #define TARGET_REG_R10  10
36156d7557SWarner Losh #define TARGET_REG_R11  11
37156d7557SWarner Losh #define TARGET_REG_R12  12
38156d7557SWarner Losh #define TARGET_REG_R13  13
39156d7557SWarner Losh #define TARGET_REG_R14  14
40156d7557SWarner Losh #define TARGET_REG_R15  15
41156d7557SWarner Losh #define TARGET_REG_CPSR 16
42156d7557SWarner Losh #define TARGET__NGREG   17
43156d7557SWarner Losh /* Convenience synonyms */
44156d7557SWarner Losh #define TARGET_REG_FP   TARGET_REG_R11
45156d7557SWarner Losh #define TARGET_REG_SP   TARGET_REG_R13
46156d7557SWarner Losh #define TARGET_REG_LR   TARGET_REG_R14
47156d7557SWarner Losh #define TARGET_REG_PC   TARGET_REG_R15
48156d7557SWarner Losh 
49156d7557SWarner Losh #define TARGET_INSN_SIZE    4       /* arm instruction size */
50156d7557SWarner Losh 
51156d7557SWarner Losh /* Size of the signal trampolin code. See _sigtramp(). */
52156d7557SWarner Losh #define TARGET_SZSIGCODE    ((abi_ulong)(9 * TARGET_INSN_SIZE))
53156d7557SWarner Losh 
54156d7557SWarner Losh /* compare to arm/include/_limits.h */
55156d7557SWarner Losh #define TARGET_MINSIGSTKSZ  (1024 * 4)                  /* min sig stack size */
56156d7557SWarner Losh #define TARGET_SIGSTKSZ     (TARGET_MINSIGSTKSZ + 32768)  /* recommended size */
57156d7557SWarner Losh 
5803fd4028SWarner Losh /*
5903fd4028SWarner Losh  * Floating point register state
6003fd4028SWarner Losh  */
6103fd4028SWarner Losh typedef struct target_mcontext_vfp {
6203fd4028SWarner Losh     abi_ullong  mcv_reg[32];
6303fd4028SWarner Losh     abi_ulong   mcv_fpscr;
6403fd4028SWarner Losh } target_mcontext_vfp_t;
6503fd4028SWarner Losh 
6603fd4028SWarner Losh typedef struct target_mcontext {
6703fd4028SWarner Losh     abi_uint    __gregs[TARGET__NGREG];
6803fd4028SWarner Losh 
6903fd4028SWarner Losh     /*
7003fd4028SWarner Losh      * Originally, rest of this structure was named __fpu, 35 * 4 bytes
7103fd4028SWarner Losh      * long, never accessed from kernel.
7203fd4028SWarner Losh      */
7303fd4028SWarner Losh     abi_ulong   mc_vfp_size;
7403fd4028SWarner Losh     abi_ptr     mc_vfp_ptr;
7503fd4028SWarner Losh     abi_int     mc_spare[33];
7603fd4028SWarner Losh } target_mcontext_t;
7703fd4028SWarner Losh 
782cb1e643SWarner Losh #define TARGET_MCONTEXT_SIZE 208
792cb1e643SWarner Losh #define TARGET_UCONTEXT_SIZE 260
802cb1e643SWarner Losh 
8103fd4028SWarner Losh #include "target_os_ucontext.h"
8203fd4028SWarner Losh 
8303fd4028SWarner Losh struct target_sigframe {
8403fd4028SWarner Losh     target_siginfo_t    sf_si;  /* saved siginfo */
8503fd4028SWarner Losh     target_ucontext_t   sf_uc;  /* saved ucontext */
8603fd4028SWarner Losh     target_mcontext_vfp_t sf_vfp; /* actual saved VFP context */
8703fd4028SWarner Losh };
8803fd4028SWarner Losh 
899c092804SMarkus Armbruster #endif /* TARGET_ARCH_SIGNAL_H */
90