summaryrefslogtreecommitdiff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2014-01-22 18:43:45 +0100
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2014-01-22 18:44:35 +0100
commit0f0c35e46e9a12459a5ca64be46b6e73aa8d19d7 (patch)
tree42aa60542387b96c6b50389067f8af96c414ab4c /sysdeps/unix
parent4959e284ca9c4ee749e1fe4b95ce682dee110a27 (diff)
S/390: Merge 32 and 64 bit ucontext.h.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h96
-rw-r--r--sysdeps/unix/sysv/linux/s390/sys/ucontext.h (renamed from sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h)8
2 files changed, 6 insertions, 98 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h
deleted file mode 100644
index b563e98f05..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
- Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _SYS_UCONTEXT_H
-#define _SYS_UCONTEXT_H 1
-/* Forward definition to avoid parse errors */
-struct ucontext;
-typedef struct ucontext ucontext_t;
-#include <features.h>
-#include <signal.h>
-
-/* We need the signal context definitions even if they are not used
- included in <signal.h>. */
-#include <bits/sigcontext.h>
-
-/* Type for a program status word. */
-typedef struct
-{
- unsigned long mask;
- unsigned long addr;
-} __attribute__ ((__aligned__(8))) __psw_t;
-
-/* Type for a general-purpose register. */
-typedef unsigned long greg_t;
-
-/* And the whole bunch of them. We should have used `struct s390_regs',
- but to avoid name space pollution and since the tradition says that
- the register set is an array, we make gregset_t a simple array
- that has the same size as s390_regs. This is needed for the
- elf_prstatus structure. */
-#if __WORDSIZE == 64
-# define NGREG 27
-#else
-# define NGREG 36
-#endif
-/* Must match kernels psw_t alignment. */
-typedef greg_t gregset_t[NGREG] __attribute__ ((__aligned__(8)));
-
-typedef union
- {
- double d;
- float f;
- } fpreg_t;
-
-/* Register set for the floating-point registers. */
-typedef struct
- {
- unsigned int fpc;
- fpreg_t fprs[16];
- } fpregset_t;
-
-/* Bit 0 is reserved for the uc_high_gprs field only available in the
- 32 bit version of ucontext_t. This bit will never be set for 64
- bit. */
-#define UCONTEXT_UC_FLAGS_HIGH_GPRS (1UL << 0)
-
-/* A new uc_flags constant will be defined when actually making use of
- the reserved space: UCONTEXT_UCFLAGS_RESERVED (1UL << 1). */
-
-/* Context to describe whole processor state. */
-typedef struct
- {
- __psw_t psw;
- unsigned long gregs[16];
- unsigned int aregs[16];
- fpregset_t fpregs;
- } mcontext_t;
-
-/* Userlevel context. */
-struct ucontext
- {
- unsigned long int uc_flags;
- struct ucontext *uc_link;
- stack_t uc_stack;
- mcontext_t uc_mcontext;
- __sigset_t uc_sigmask;
- char reserved[512];
- };
-
-
-#endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
index 90adc2d1fc..f04bf849d5 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2013 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
This file is part of the GNU C Library.
@@ -65,7 +65,9 @@ typedef struct
} fpregset_t;
/* Bit is set if the uc_high_gprs field contains the upper halfs of
- the 64 bit general purpose registers. */
+ the 64 bit general purpose registers. Since the uc_high_gprs field
+ is only available in the 32 bit version of ucontext_t it will never
+ be set for 64 bit. */
#define UCONTEXT_UC_FLAGS_HIGH_GPRS (1UL << 0)
/* A new uc_flags constant will be defined when actually making use of
@@ -88,7 +90,9 @@ struct ucontext
stack_t uc_stack;
mcontext_t uc_mcontext;
__sigset_t uc_sigmask;
+#ifndef __s390x__
unsigned long uc_high_gprs[16];
+#endif
char __reserved[512];
};