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