mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 08:11:08 +00:00
S/390: Merge 32 and 64 bit ucontext.h.
This commit is contained in:
parent
4959e284ca
commit
0f0c35e46e
@ -1,3 +1,10 @@
|
|||||||
|
2014-01-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Merge into
|
||||||
|
s390/sys/ucontext.h.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: New file.
|
||||||
|
|
||||||
2014-01-20 H.J. Lu <hongjiu.lu@intel.com>
|
2014-01-20 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
[BZ #15605]
|
[BZ #15605]
|
||||||
|
@ -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 */
|
|
@ -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).
|
Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -65,7 +65,9 @@ typedef struct
|
|||||||
} fpregset_t;
|
} fpregset_t;
|
||||||
|
|
||||||
/* Bit is set if the uc_high_gprs field contains the upper halfs of
|
/* 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)
|
#define UCONTEXT_UC_FLAGS_HIGH_GPRS (1UL << 0)
|
||||||
|
|
||||||
/* A new uc_flags constant will be defined when actually making use of
|
/* A new uc_flags constant will be defined when actually making use of
|
||||||
@ -88,7 +90,9 @@ struct ucontext
|
|||||||
stack_t uc_stack;
|
stack_t uc_stack;
|
||||||
mcontext_t uc_mcontext;
|
mcontext_t uc_mcontext;
|
||||||
__sigset_t uc_sigmask;
|
__sigset_t uc_sigmask;
|
||||||
|
#ifndef __s390x__
|
||||||
unsigned long uc_high_gprs[16];
|
unsigned long uc_high_gprs[16];
|
||||||
|
#endif
|
||||||
char __reserved[512];
|
char __reserved[512];
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user