mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
8070361799
The vector extension introduces 32 128-bit vector registers and a set of instruction to operate on the vector registers. The kernel can control the use of vector registers for the problem state program with a bit in control register 0. Once enabled for a process the kernel needs to retain the content of the vector registers on context switch. The signal frame is extended to include the vector registers. Two new register sets NT_S390_VXRS_LOW and NT_S390_VXRS_HIGH are added to the regset interface for the debugger and core dumps. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
/*
|
|
* 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 */
|