root/arch/s390/include/uapi/asm/ucontext.h
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
 *  S390 version
 *
 *  Derived from "include/asm-i386/ucontext.h"
 */

#ifndef _ASM_S390_UCONTEXT_H
#define _ASM_S390_UCONTEXT_H

#define UC_GPRS_HIGH    1       /* uc_mcontext_ext has valid high gprs */
#define UC_VXRS         2       /* uc_mcontext_ext has valid vector regs */

/*
 * The struct ucontext_extended describes how the registers are stored
 * on a rt signal frame. Please note that the structure is not fixed,
 * if new CPU registers are added to the user state the size of the
 * struct ucontext_extended will increase.
 */
struct ucontext_extended {
        unsigned long     uc_flags;
        struct ucontext  *uc_link;
        stack_t           uc_stack;
        _sigregs          uc_mcontext;
        sigset_t          uc_sigmask;
        /* Allow for uc_sigmask growth.  Glibc uses a 1024-bit sigset_t.  */
        unsigned char     __unused[128 - sizeof(sigset_t)];
        _sigregs_ext      uc_mcontext_ext;
};

struct ucontext {
        unsigned long     uc_flags;
        struct ucontext  *uc_link;
        stack_t           uc_stack;
        _sigregs          uc_mcontext;
        sigset_t          uc_sigmask;
        /* Allow for uc_sigmask growth.  Glibc uses a 1024-bit sigset_t.  */
        unsigned char     __unused[128 - sizeof(sigset_t)];
};

#endif /* !_ASM_S390_UCONTEXT_H */