summaryrefslogtreecommitdiff
path: root/linux-user/hppa/target_signal.h
blob: af6c2fce589d32c2a645716e71600e38575282fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef HPPA_TARGET_SIGNAL_H
#define HPPA_TARGET_SIGNAL_H

#define TARGET_SIGHUP           1
#define TARGET_SIGINT           2
#define TARGET_SIGQUIT          3
#define TARGET_SIGILL           4
#define TARGET_SIGTRAP          5
#define TARGET_SIGABRT          6
#define TARGET_SIGIOT           6
#define TARGET_SIGSTKFLT        7
#define TARGET_SIGFPE           8
#define TARGET_SIGKILL          9
#define TARGET_SIGBUS          10
#define TARGET_SIGSEGV         11
#define TARGET_SIGXCPU         12
#define TARGET_SIGPIPE         13
#define TARGET_SIGALRM         14
#define TARGET_SIGTERM         15
#define TARGET_SIGUSR1         16
#define TARGET_SIGUSR2         17
#define TARGET_SIGCHLD         18
#define TARGET_SIGPWR          19
#define TARGET_SIGVTALRM       20
#define TARGET_SIGPROF         21
#define TARGET_SIGIO           22
#define TARGET_SIGPOLL         TARGET_SIGIO
#define TARGET_SIGWINCH        23
#define TARGET_SIGSTOP         24
#define TARGET_SIGTSTP         25
#define TARGET_SIGCONT         26
#define TARGET_SIGTTIN         27
#define TARGET_SIGTTOU         28
#define TARGET_SIGURG          29
#define TARGET_SIGXFSZ         30
#define TARGET_SIGSYS          31
#define TARGET_SIGRTMIN        32

#define TARGET_SIG_BLOCK       0
#define TARGET_SIG_UNBLOCK     1
#define TARGET_SIG_SETMASK     2

/* this struct defines a stack used during syscall handling */

typedef struct target_sigaltstack {
    abi_ulong ss_sp;
    abi_int ss_flags;
    abi_ulong ss_size;
} target_stack_t;


/*
 * sigaltstack controls
 */
#define TARGET_SS_ONSTACK	1
#define TARGET_SS_DISABLE	2

#define TARGET_SA_ONSTACK       0x00000001
#define TARGET_SA_RESETHAND     0x00000004
#define TARGET_SA_NOCLDSTOP     0x00000008
#define TARGET_SA_SIGINFO       0x00000010
#define TARGET_SA_NODEFER       0x00000020
#define TARGET_SA_RESTART       0x00000040
#define TARGET_SA_NOCLDWAIT     0x00000080

#define TARGET_MINSIGSTKSZ	2048

/* bit-flags */
#define TARGET_SS_AUTODISARM (1U << 31) /* disable sas during sighandling */
/* mask for all SS_xxx flags */
#define TARGET_SS_FLAG_BITS  TARGET_SS_AUTODISARM

/*
 * We cannot use a bare sigtramp page for hppa-linux.
 *
 * Unlike other guests where we use the instructions at PC to validate
 * an offset from SP, the hppa libgcc signal frame fallback unwinding uses
 * the PC address itself to find the frame.  This is due to the fact that
 * the hppa grows the stack upward, and the frame is of unknown size.
 *
 * TODO: We should be able to use a VDSO to address this, by providing
 * proper unwind info for the sigtramp code, at which point the fallback
 * unwinder will not be used.
 */
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 0

#endif /* HPPA_TARGET_SIGNAL_H */