1b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
2b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*--------------------------------------------------------------------*/
3b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*--- s390x/Linux-specific kernel interface.     vki-s390x-linux.h ---*/
4b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*--------------------------------------------------------------------*/
59ad441ffec97db647fee3725b3424284fb913e14Howard Hinnant
69ad441ffec97db647fee3725b3424284fb913e14Howard Hinnant/*
7b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   This file is part of Valgrind, a dynamic binary instrumentation
8b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   framework.
9b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
10b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   Copyright IBM Corp. 2010-2015
11b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
12b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   This program is free software; you can redistribute it and/or
13b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   modify it under the terms of the GNU General Public License as
14b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   published by the Free Software Foundation; either version 2 of the
15b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   License, or (at your option) any later version.
16b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines   This program is distributed in the hope that it will be useful, but
182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines   WITHOUT ANY WARRANTY; without even the implied warranty of
19b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   General Public License for more details.
21b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
22cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar   You should have received a copy of the GNU General Public License
23b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   along with this program; if not, write to the Free Software
24b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
25b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   02111-1307, USA.
26b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
27b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   The GNU General Public License is contained in the file COPYING.
28b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar*/
29b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
30b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* Contributed by Florian Krohm and Volker Sameske */
31b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
32b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef __VKI_S390X_LINUX_H
33b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __VKI_S390X_LINUX_H
34b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
35b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __force
36b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
37b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
38b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/types.h
39b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
40b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
41b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef __signed__ char __vki_s8;
42b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned char __vki_u8;
43b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
44b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef __signed__ short __vki_s16;
45cff5248a12a36a7225b707b23ac088f5ba214f8aDaniel Dunbartypedef unsigned short __vki_u16;
46cff5248a12a36a7225b707b23ac088f5ba214f8aDaniel Dunbar
47cff5248a12a36a7225b707b23ac088f5ba214f8aDaniel Dunbartypedef __signed__ int __vki_s32;
48b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned int __vki_u32;
49b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
50b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef __signed__ long __vki_s64;
51b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned long __vki_u64;
52b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
53b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned short vki_u16;
54b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
55b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned int vki_u32;
56b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
57b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
58b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/page.h
59b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
60b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
61b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* PAGE_SHIFT determines the page size */
62b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PAGE_SHIFT  12
63b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PAGE_SIZE   (1UL << VKI_PAGE_SHIFT)
64b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
65b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
66b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/siginfo.h
67b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
68b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
69b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* We need that to ensure that sizeof(siginfo) == 128. */
70b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifdef __s390x__
71b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __VKI_ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
72b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif
73b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
74b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
75b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/sigcontext.h
76b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
77b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
78b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __VKI_NUM_GPRS 16
79b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __VKI_NUM_FPRS 16
80b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __VKI_NUM_ACRS 16
81b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
82b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
83b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
84b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* Has to be at least _NSIG_WORDS from asm/signal.h */
85b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_SIGCONTEXT_NSIG	64
86b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_SIGCONTEXT_NSIG_BPW	32
87b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* Size of stack frame allocated when calling signal handler. */
88b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __VKI_SIGNAL_FRAMESIZE	96
89b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
90b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#else /* VGA_s390x */
91b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
92b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* Has to be at least _NSIG_WORDS from asm/signal.h */
93b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_SIGCONTEXT_NSIG	64
94b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_SIGCONTEXT_NSIG_BPW	64
95b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* Size of stack frame allocated when calling signal handler. */
96b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define __VKI_SIGNAL_FRAMESIZE	160
97b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
98b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* VGA_s390x */
99b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
100b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
101b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_SIGCONTEXT_NSIG_WORDS	(_VKI_SIGCONTEXT_NSIG / _VKI_SIGCONTEXT_NSIG_BPW)
102b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_SIGMASK_COPY_SIZE	(sizeof(unsigned long)*_VKI_SIGCONTEXT_NSIG_WORDS)
103b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
104b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
105b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
106b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long mask;
107b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long addr;
108b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} __attribute__ ((aligned(8))) _vki_psw_t;
109b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
110b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
111b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
112b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	_vki_psw_t psw;
113b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long gprs[__VKI_NUM_GPRS];
114b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned int  acrs[__VKI_NUM_ACRS];
115b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} _vki_s390_regs_common;
116b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
117b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
118b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
119b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned int fpc;
120b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	double   fprs[__VKI_NUM_FPRS];
121b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} _vki_s390_fp_regs;
122b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
123b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
124b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
125b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	_vki_s390_regs_common regs;
126b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	_vki_s390_fp_regs     fpregs;
127b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} _vki_sigregs;
128b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
129b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
130b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_sigcontext
131b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
132b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long   oldmask[_VKI_SIGCONTEXT_NSIG_WORDS];
133b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	_vki_sigregs    __user *sregs;
134b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
135b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
136b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
137b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
138b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/signal.h
139b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
140b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
141b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_NSIG           _VKI_SIGCONTEXT_NSIG
142b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_NSIG_BPW       _VKI_SIGCONTEXT_NSIG_BPW
143b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_NSIG_WORDS     _VKI_SIGCONTEXT_NSIG_WORDS
144b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
145b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned long vki_old_sigset_t;
146b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
147b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct {
148b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long sig[_VKI_NSIG_WORDS];
149b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_sigset_t;
150b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
151b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGHUP           1
152b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGINT           2
153b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGQUIT          3
154b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGILL           4
155b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGTRAP          5
156b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGABRT          6
157b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGIOT           6
158b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGBUS           7
159b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGFPE           8
160b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGKILL          9
161b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGUSR1         10
162b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGSEGV         11
163b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGUSR2         12
164b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGPIPE         13
165b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGALRM         14
166b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGTERM         15
167b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGSTKFLT       16
168b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGCHLD         17
169b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGCONT         18
170b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGSTOP         19
171b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGTSTP         20
172b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGTTIN         21
173b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGTTOU         22
174b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGURG          23
175b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGXCPU         24
176b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGXFSZ         25
177b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGVTALRM       26
178b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGPROF         27
179b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGWINCH        28
180b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGIO           29
181b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGPOLL         VKI_SIGIO
182b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*
183b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGLOST         29
184b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar*/
185b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGPWR          30
186b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGSYS	    31
187b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGUNUSED       31
188b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
189b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* These should not be considered constants from userland.  */
190b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGRTMIN        32
191b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGRTMAX        _VKI_NSIG
192b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
193b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*
194b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_FLAGS values:
195b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar *
196b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_ONSTACK indicates that a registered stack_t will be used.
197b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
198b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_RESTART flag to get restarting signals (which were the default long ago)
199b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
200b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_RESETHAND clears the handler when the signal is delivered.
201b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
202b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_NODEFER prevents the current signal from being masked in the handler.
203b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar *
204b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
205b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * Unix names RESETHAND and NODEFER respectively.
206b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar */
207b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_NOCLDSTOP    0x00000001
208b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_NOCLDWAIT    0x00000002
209b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_SIGINFO      0x00000004
210b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_ONSTACK      0x08000000
211b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_RESTART      0x10000000
212b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_NODEFER      0x40000000
213b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_RESETHAND    0x80000000
214b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
215b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_NOMASK       VKI_SA_NODEFER
216b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_ONESHOT      VKI_SA_RESETHAND
217b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_INTERRUPT    0x20000000 /* dummy -- ignored */
218b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
219b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SA_RESTORER     0x04000000
220b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
221b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*
222b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * sigaltstack controls
223b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar */
224b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SS_ONSTACK      1
225b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SS_DISABLE      2
226b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
227b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MINSIGSTKSZ     2048
228b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIGSTKSZ        8192
229b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
230b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
231b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* Next lines asm-generic/signal.h */
232b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIG_BLOCK          0 /* for blocking signals */
233b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIG_UNBLOCK        1 /* for unblocking signals */
234b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIG_SETMASK        2 /* for setting the signal mask */
235b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
236b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef void __vki_signalfn_t(int);
237b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef __vki_signalfn_t __user *__vki_sighandler_t;
238b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
239b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* default signal handling */
240b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIG_DFL ((__force __vki_sighandler_t)0)
241b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* ignore signal */
242b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIG_IGN ((__force __vki_sighandler_t)1)
243b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* error return from signal */
244b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIG_ERR ((__force __vki_sighandler_t)-1)
245b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* Back to asm-s390/signal.h */
246b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
247b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_old_sigaction {
248b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // [[Nb: a 'k' prefix is added to "sa_handler" because
249b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // bits/sigaction.h (which gets dragged in somehow via signal.h)
250b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // #defines it as something else.  Since that is done for glibc's
251b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // purposes, which we don't care about here, we use our own name.]]
252b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        __vki_sighandler_t ksa_handler;
253b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        vki_old_sigset_t sa_mask;
254b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long sa_flags;
255b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        void (*sa_restorer)(void);
256b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
257b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
258b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_sigaction {
259b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // [[See comment about extra 'k' above]]
260b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        __vki_sighandler_t ksa_handler;
261b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // Yes, the reserved field is really glibc specific. The kernel
262b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // doesn't have it and uses an unsigned long for sa_flags.
263b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // The glibc and the kernel agreed this is fine and the
264b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // __glibc_reserved0 field can be undefined.
265b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        // See https://sourceware.org/ml/libc-alpha/2014-09/msg00161.html
266b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        int __glibc_reserved0;
267b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        int sa_flags;
268b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        void (*sa_restorer)(void);
269b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        vki_sigset_t sa_mask;               /* mask last for extensibility */
270b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
271b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
272b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_k_sigaction {
273b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        struct vki_sigaction sa;
274b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
275b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
276b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
277b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* On Linux we use the same type for passing sigactions to
278b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   and from the kernel.  Hence: */
279b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef  struct vki_sigaction  vki_sigaction_toK_t;
280b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef  struct vki_sigaction  vki_sigaction_fromK_t;
281b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
282b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
283b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct vki_sigaltstack {
284b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	void __user *ss_sp;
285b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	int ss_flags;
286b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_size_t ss_size;
287b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_stack_t;
288b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
289b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
290b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
291b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/mman.h
292b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
293b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
294b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PROT_NONE   0x0             /* No page permissions */
295b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PROT_READ   0x1             /* page can be read */
296b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PROT_WRITE  0x2             /* page can be written */
297b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PROT_EXEC   0x4             /* page can be executed */
298b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PROT_GROWSDOWN 0x01000000   /* mprotect flag: extend
299b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar					   change to start of
300b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar					   growsdown vma */
301b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PROT_GROWSUP   0x02000000   /* mprotect flag:
302b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar					   extend change to end
303b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar					   of growsup vma */
304b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
305b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MAP_SHARED		0x0001  /* Share changes */
306b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MAP_PRIVATE 	0x0002	/*  */
307b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MAP_FIXED   	0x0010	/*  */
308b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MAP_ANONYMOUS	0x0020	/*  */
309b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
310b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
311b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
312b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/fcntl.h
313b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
314b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
315b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_RDONLY        00000000
316b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_WRONLY        00000001
317b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_RDWR          00000002
318b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_ACCMODE       00000003
319b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_CREAT         00000100        /* not fcntl */
320b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_EXCL          00000200        /* not fcntl */
321b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_NOCTTY        00000400        /* not fcntl */
322b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_TRUNC         00001000        /* not fcntl */
323b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_APPEND        00002000
324b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_O_NONBLOCK      00004000
325b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
326b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_AT_FDCWD            -100
327b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
328b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_DUPFD	0	/* dup */
329b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_GETFD	1	/* get close_on_exec */
330b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_SETFD	2	/* set/clear close_on_exec */
331b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_GETFL	3	/* get file->f_flags */
332b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_SETFL	4	/* set file->f_flags */
333b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_GETLK	5
334b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_SETLK	6
335b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_SETLKW	7
336b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_SETOWN	8	/* for sockets. */
337b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_GETOWN	9	/* for sockets. */
338b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_SETSIG	10	/* for sockets. */
339b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_GETSIG	11	/* for sockets. */
340b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
341b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_SETOWN_EX		15
342b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_GETOWN_EX		16
343b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
344b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_OFD_GETLK		36
345b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_OFD_SETLK		37
346b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_OFD_SETLKW	38
347b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
348b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_OWNER_TID		0
349b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_OWNER_PID		1
350b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_OWNER_PGRP	2
351b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
352b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_f_owner_ex {
353b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	int	type;
354b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_pid_t	pid;
355b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
356b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
357b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_FD_CLOEXEC  1  /* actually anything with low bit set goes */
358b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
359b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_F_LINUX_SPECIFIC_BASE   1024
360b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
361b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
362b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
363b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390x/resource.h
364b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
365b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
366b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// which just does #include <asm-generic/resource.h>
367b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
368b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_RLIMIT_DATA             2       /* max data size */
369b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_RLIMIT_STACK            3       /* max stack size */
370b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_RLIMIT_CORE             4       /* max core file size */
371b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_RLIMIT_NOFILE           7       /* max number of open files */
372b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
373b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
374b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
375b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/socket.h
376b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
377b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
378b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SOL_SOCKET      1
379b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
380b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SO_TYPE         3
381b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
382b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SO_ATTACH_FILTER        26
383b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
384b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
385b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/sockios.h
386b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
387b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
388b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIOCSPGRP       0x8902
389b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIOCGPGRP       0x8904
390b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIOCATMARK      0x8905
391b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIOCGSTAMP      0x8906          /* Get stamp (timeval) */
392b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* since 2.6.22 */
393b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SIOCGSTAMPNS    0x8907          /* Get stamp (timespec) */
394b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
395b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
396b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
397b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/stat.h
398b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
399b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
400b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
401b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_stat {
402b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short st_dev;
403b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short __pad1;
404b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_ino;
405b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short st_mode;
406b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short st_nlink;
407b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short st_uid;
408b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short st_gid;
409b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short st_rdev;
410b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned short __pad2;
411b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_size;
412b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_blksize;
413b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_blocks;
414b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_atime;
415b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_atime_nsec;
416b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_mtime;
417b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_mtime_nsec;
418b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_ctime;
419b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_ctime_nsec;
420b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  __unused4;
421b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  __unused5;
422b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
423b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
424b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* This matches struct stat64 in glibc2.1, hence the absolutely
425b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * insane amounts of padding around dev_t's.
426b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar */
427b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_stat64 {
428b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long long	st_dev;
429b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int    __pad1;
430b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   __st_ino;
431b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int    st_mode;
432b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int    st_nlink;
433b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_uid;
434b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_gid;
435b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long long	st_rdev;
436b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int    __pad3;
437b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        long long	st_size;
438b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_blksize;
439b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned char   __pad4[4];
440b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   __pad5;     /* future possible st_blocks high bits */
441b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_blocks;  /* Number 512-byte blocks allocated. */
442b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_atime;
443b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_atime_nsec;
444b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_mtime;
445b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_mtime_nsec;
446b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_ctime;
447b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long   st_ctime_nsec;  /* will be high 32 bits of ctime someday */
448b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long long	st_ino;
449b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
450b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
451b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#else
452b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
453b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_stat {
454b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_dev;
455b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_ino;
456b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_nlink;
457b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int   st_mode;
458b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int   st_uid;
459b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int   st_gid;
460b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned int   __pad1;
461b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_rdev;
462b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_size;
463b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_atime;
464b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  st_atime_nsec;
465b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_mtime;
466b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  st_mtime_nsec;
467b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_ctime;
468b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  st_ctime_nsec;
469b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  st_blksize;
470b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        long           st_blocks;
471b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long  __unused0[3];
472b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
473b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
474b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* VGA_s390x */
475b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
476b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
477b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
478b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/statfs.h
479b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
480b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
481b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_statfs {
482b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        int  f_type;
483b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        int  f_bsize;
484b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        long f_blocks;
485b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        long f_bfree;
486b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        long f_bavail;
487b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        long f_files;
488b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        long f_ffree;
489b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        __vki_kernel_fsid_t f_fsid;
490b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        int  f_namelen;
491b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        int  f_frsize;
492b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        int  f_spare[5];
493b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
494b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
495b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
496b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
497b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/termios.h
498b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
499b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
500b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_winsize {
501b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short ws_row;
502b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short ws_col;
503b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short ws_xpixel;
504b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short ws_ypixel;
505b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
506b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
507b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_NCC 8
508b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_termio {
509b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short c_iflag;		/* input mode flags */
510b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short c_oflag;		/* output mode flags */
511b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short c_cflag;		/* control mode flags */
512b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short c_lflag;		/* local mode flags */
513b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned char c_line;		/* line discipline */
514b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned char c_cc[VKI_NCC];	/* control characters */
515b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
516b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
517b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
518b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
519b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/termbits.h
520b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
521b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
522b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned char   vki_cc_t;
523b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef unsigned int    vki_tcflag_t;
524b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
525b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_NCCS 19
526b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_termios {
527b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_tcflag_t c_iflag;		/* input mode flags */
528b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_tcflag_t c_oflag;		/* output mode flags */
529b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_tcflag_t c_cflag;		/* control mode flags */
530b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_tcflag_t c_lflag;		/* local mode flags */
531b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_cc_t c_line;		/* line discipline */
532b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_cc_t c_cc[VKI_NCCS];	/* control characters */
533b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
534b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
535b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
536b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
537b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/ioctl.h
538b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
539b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
540b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_NRBITS		8
541b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_TYPEBITS	8
542b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_SIZEBITS	14
543b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_DIRBITS	2
544b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
545b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_NRMASK		((1 << _VKI_IOC_NRBITS)-1)
546b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_TYPEMASK	((1 << _VKI_IOC_TYPEBITS)-1)
547b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_SIZEMASK	((1 << _VKI_IOC_SIZEBITS)-1)
548b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_DIRMASK	((1 << _VKI_IOC_DIRBITS)-1)
549b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
550b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_NRSHIFT	0
551b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_TYPESHIFT	(_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
552b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_SIZESHIFT	(_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
553b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_DIRSHIFT	(_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
554b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
555b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_NONE	0U
556b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_WRITE	1U
557b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_READ	2U
558b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
559b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC(dir,type,nr,size) \
560b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	(((dir)  << _VKI_IOC_DIRSHIFT) | \
561b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 ((type) << _VKI_IOC_TYPESHIFT) | \
562b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 ((nr)   << _VKI_IOC_NRSHIFT) | \
563b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 ((size) << _VKI_IOC_SIZESHIFT))
564b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
565b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* used to create numbers */
566b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IO(type,nr)	_VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
567b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
568b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOW(type,nr,size)	_VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
569b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOWR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
570b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
571b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* used to decode ioctl numbers.. */
572b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_DIR(nr)	(((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
573b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_TYPE(nr)	(((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK)
574b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_NR(nr)		(((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK)
575b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define _VKI_IOC_SIZE(nr)	(((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
576b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
577b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
578b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/ioctls.h
579b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
580b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
581b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* 0x54 is just a magic number to make these relatively unique ('T') */
582b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
583b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCGETS	0x5401
584b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSETS	0x5402
585b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSETSW	0x5403
586b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSETSF	0x5404
587b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCGETA	0x5405
588b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSETA	0x5406
589b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSETAW	0x5407
590b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSETAF	0x5408
591b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSBRK	0x5409
592b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCXONC	0x540A
593b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCFLSH	0x540B
594b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
595b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCSCTTY	0x540E
596b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCGPGRP	0x540F
597b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCSPGRP	0x5410
598b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCOUTQ	0x5411
599b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
600b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCGWINSZ	0x5413
601b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCSWINSZ	0x5414
602b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCMGET	0x5415
603b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCMBIS	0x5416
604b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCMBIC	0x5417
605b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCMSET	0x5418
606b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
607b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_FIONREAD	0x541B
608b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCLINUX	0x541C
609b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
610b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_FIONBIO	0x5421
611b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCNOTTY	0x5422
612b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
613b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TCSBRKP	0x5425	/* Needed for POSIX tcsendbreak() */
614b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
615b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCGPTN	_VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
616b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCSPTLCK	_VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
617b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
618b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_FIONCLEX	0x5450
619b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_FIOCLEX	0x5451
620b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_FIOASYNC	0x5452
621b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
622b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCSERGETLSR       0x5459 /* Get line status register */
623b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
624b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCGICOUNT	0x545D	/* read serial port inline interrupt counts */
625b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
626b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
627b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.39-rc2/arch/s390/include/asm/ioctls.h
628b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
629b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
630b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_FIOQSIZE 0x545E
631b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
632b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
633b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/poll.h
634b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
635b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
636b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_pollfd {
637b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	int fd;
638b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	short events;
639b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	short revents;
640b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
641b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
642b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_POLLIN          0x0001
643b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
644b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
645b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/ptrace.h
646b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
647b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_NUM_GPRS	16
648b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_NUM_FPRS	16
649b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_NUM_CRS	16
650b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_NUM_ACRS	16
651b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
652b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef union
653b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
654b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	float   f;
655b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	double  d;
656b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        __vki_u64   ui;
657b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	struct
658b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	{
659b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar		__vki_u32 hi;
660b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar		__vki_u32 lo;
661b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	} fp;
662b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_freg_t;
663b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
664b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
665b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
666b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_u32   fpc;
667b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_freg_t  fprs[VKI_NUM_FPRS];
668b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_s390_fp_regs;
669b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
670b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
671b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
672b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long mask;
673b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar        unsigned long addr;
674b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} __attribute__ ((aligned(8))) vki_psw_t;
675b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
676b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
677b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
678b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_psw_t psw;
679b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long gprs[VKI_NUM_GPRS];
680b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned int  acrs[VKI_NUM_ACRS];
681b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long orig_gpr2;
682b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_s390_regs;
683b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
684b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*
685b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * Now for the program event recording (trace) definitions.
686b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar */
687b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
688b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
689b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long cr[3];
690b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_per_cr_words;
691b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
692b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef	struct
693b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
694b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifdef VGA_s390x
695b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned                       : 32;
696b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* VGA_s390x */
697b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned em_branching          : 1;
698b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned em_instruction_fetch  : 1;
699b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	/*
700b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * Switching on storage alteration automatically fixes
701b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * the storage alteration event bit in the users std.
702b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 */
703b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned em_storage_alteration : 1;
704b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned em_gpr_alt_unused     : 1;
705b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned em_store_real_address : 1;
706b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned                       : 3;
707b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned branch_addr_ctl       : 1;
708b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned                       : 1;
709b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned storage_alt_space_ctl : 1;
710b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned                       : 21;
711b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long starting_addr;
712b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long ending_addr;
713b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_per_cr_bits;
714b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
715b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
716b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
717b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short perc_atmid;
718b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long address;
719b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned char access_id;
720b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_per_lowcore_words;
721b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
722b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
723b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
724b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned perc_branching          : 1;
725b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned perc_instruction_fetch  : 1;
726b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned perc_storage_alteration : 1;
727b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned perc_gpr_alt_unused     : 1;
728b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned perc_store_real_address : 1;
729b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned                         : 3;
730b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned atmid_psw_bit_31        : 1;
731b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned atmid_validity_bit      : 1;
732b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned atmid_psw_bit_32        : 1;
733b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned atmid_psw_bit_5         : 1;
734b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned atmid_psw_bit_16        : 1;
735b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned atmid_psw_bit_17        : 1;
736b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned si                      : 2;
737b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long address;
738b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned                         : 4;
739b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned access_id               : 4;
740b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_per_lowcore_bits;
741b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
742b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
743b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
744b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	union {
745b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar		vki_per_cr_words   words;
746b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar		vki_per_cr_bits    bits;
747b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	} control_regs;
748b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	/*
749b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * Use these flags instead of setting em_instruction_fetch
750b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * directly they are used so that single stepping can be
751b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * switched on & off while not affecting other tracing
752b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 */
753b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned  single_step       : 1;
754b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned  instruction_fetch : 1;
755b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned                    : 30;
756b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	/*
757b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * These addresses are copied into cr10 & cr11 if single
758b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * stepping is switched off
759b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 */
760b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long starting_addr;
761b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long ending_addr;
762b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	union {
763b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar		vki_per_lowcore_words words;
764b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar		vki_per_lowcore_bits  bits;
765b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	} lowcore;
766b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_per_struct;
767b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
768b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*
769b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * The user_regs_struct defines the way the user registers are
770b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * store on the stack for signal handling.
771b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar */
772b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_user_regs_struct
773b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
774b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_psw_t psw;
775b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long gprs[VKI_NUM_GPRS];
776b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned int  acrs[VKI_NUM_ACRS];
777b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long orig_gpr2;
778b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_s390_fp_regs fp_regs;
779b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	/*
780b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * These per registers are in here so that gdb can modify them
781b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * itself as there is no "official" ptrace interface for hardware
782b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 * watchpoints. This is the way intel does it.
783b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	 */
784b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_per_struct per_info;
785b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long ieee_instruction_pointer;
786b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	/* Used to give failing instruction back to user for ieee exceptions */
787b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
788b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
789b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef struct
790b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
791b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned int  vki_len;
792b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long vki_kernel_addr;
793b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long vki_process_addr;
794b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} vki_ptrace_area;
795b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
796b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*
797b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar * S/390 specific non posix ptrace requests
798b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar */
799b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PTRACE_PEEKUSR_AREA       0x5000
800b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_PTRACE_POKEUSR_AREA       0x5001
801b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
802b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
803b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-3.18/include/asm-s390/elf.h
804b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
805b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
806b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef vki_s390_fp_regs vki_elf_fpregset_t;
807b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartypedef vki_s390_regs vki_elf_gregset_t;
808b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
809b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_HWCAP_S390_TE           1024
810b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_HWCAP_S390_VXRS         2048
811b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
812b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
813b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
814b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/ucontext.h
815b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
816b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
817b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_ucontext {
818b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	      uc_flags;
819b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	struct vki_ucontext  *uc_link;
820b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_stack_t	      uc_stack;
821b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	_vki_sigregs          uc_mcontext;
822b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_sigset_t	      uc_sigmask; /* mask last for extensibility */
823b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
824b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
825b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
826b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/ipcbuf.h
827b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
828b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
829b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_ipc64_perm
830b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{
831b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_key_t	key;
832b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_uid32_t	uid;
833b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_gid32_t	gid;
834b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_uid32_t	cuid;
835b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_gid32_t	cgid;
836b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_mode_t	mode;
837b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short		__pad1;
838b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short		seq;
839b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
840b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned short		__pad2;
841b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
842b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		__unused1;
843b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		__unused2;
844b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
845b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
846b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
847b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
848b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/sembuf.h
849b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
850b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
851b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_semid64_ds {
852b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	struct vki_ipc64_perm sem_perm;		/* permissions .. see ipc.h */
853b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t   sem_otime;	/* last semop time */
854b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
855b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused1;
856b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
857b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t   sem_ctime;	/* last change time */
858b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
859b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused2;
860b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
861b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	sem_nsems;		/* no. of semaphores in array */
862b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused3;
863b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused4;
864b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
865b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
866b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
867b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
868b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/msgbuf.h
869b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
870b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
871b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_msqid64_ds {
872b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	struct vki_ipc64_perm msg_perm;
873b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t msg_stime;	/* last msgsnd time */
874b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
875b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused1;
876b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
877b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t msg_rtime;	/* last msgrcv time */
878b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
879b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused2;
880b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
881b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t msg_ctime;	/* last change time */
882b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
883b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused3;
884b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
885b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  msg_cbytes;	/* current number of bytes on queue */
886b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  msg_qnum;	/* number of messages in queue */
887b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  msg_qbytes;	/* max number of bytes on queue */
888b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_pid_t msg_lspid;	/* pid of last msgsnd */
889b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_pid_t msg_lrpid;	/* last receive pid */
890b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  __unused4;
891b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long  __unused5;
892b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
893b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
894b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
895b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
896b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/ipc.h
897b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
898b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
899b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_ipc_kludge {
900b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	struct vki_msgbuf __user *msgp;
901b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	long msgtyp;
902b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
903b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
904b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SEMOP	 1
905b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SEMGET	 2
906b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SEMCTL	 3
907b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SEMTIMEDOP	 4
908b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MSGSND	11
909b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MSGRCV	12
910b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MSGGET	13
911b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MSGCTL	14
912b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SHMAT	21
913b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SHMDT	22
914b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SHMGET	23
915b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SHMCTL	24
916b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
917b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
918b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
919b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.16.60/include/asm-s390/shmbuf.h
920b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
921b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
922b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_shmid64_ds {
923b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	struct vki_ipc64_perm	shm_perm;	/* operation perms */
924b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	vki_size_t		shm_segsz;	/* size of segment (bytes) */
925b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t	shm_atime;	/* last attach time */
926b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
927b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		__unused1;
928b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
929b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t	shm_dtime;	/* last detach time */
930b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
931b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		__unused2;
932b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
933b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_time_t	shm_ctime;	/* last change time */
934b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#ifndef VGA_s390x
935b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		__unused3;
936b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif /* ! VGA_s390x */
937b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_pid_t	shm_cpid;	/* pid of creator */
938b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	__vki_kernel_pid_t	shm_lpid;	/* pid of last operator */
939b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		shm_nattch;	/* no. of current attaches */
940b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		__unused4;
941b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long		__unused5;
942b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
943b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
944b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarstruct vki_shminfo64 {
945b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	shmmax;
946b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	shmmin;
947b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	shmmni;
948b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	shmseg;
949b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	shmall;
950b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused1;
951b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused2;
952b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused3;
953b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	unsigned long	__unused4;
954b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar};
955b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
956b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
957b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
958b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// The following are defined in the VKI namespace but are nowhere found
959b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// in the linux headers.
960b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
961b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_BIG_ENDIAN      1
962b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MAX_PAGE_SHIFT  VKI_PAGE_SHIFT
963b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MAX_PAGE_SIZE   VKI_PAGE_SIZE
964b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
965b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
966b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.35.4/arch/s390x/include/asm/shmparam.h
967b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
968b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
969b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_SHMLBA  VKI_PAGE_SIZE
970b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
971b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/* If a system call returns a value >= VKI_MAX_ERRNO then that is considered
972b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar   an error condition. I.e. the system call failed. */
973b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_MAX_ERRNO       -125
974b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
975b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
976b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-2.6.8.1/include/asm-generic/errno.h
977b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
978b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
979b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define	VKI_ENOSYS       38  /* Function not implemented */
980b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define	VKI_EOVERFLOW    75  /* Value too large for defined data type */
981b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
982b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
983b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
984b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//----------------------------------------------------------------------
985b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
986b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCGSERIAL     0x541E
987b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#define VKI_TIOCSSERIAL     0x541F
988b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
989b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#endif // __VKI_S390X_LINUX_H
990b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
991b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*--------------------------------------------------------------------*/
992b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*--- end                                                          ---*/
993b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar/*--------------------------------------------------------------------*/
994b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar