diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h index 01da3ca858..f1b3ab59e2 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2016 Free Software Foundation, Inc. +/* Copyright (C) 1998-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -22,12 +22,19 @@ #define _SYS_UCONTEXT_H 1 #include <features.h> -#include <signal.h> -#include <sys/procfs.h> -/* We need the signal context definitions even if they are not used - included in <signal.h>. */ -#include <bits/sigcontext.h> +#include <bits/types/sigset_t.h> +#include <bits/types/stack_t.h> + +#ifdef __USE_MISC +# define __ctx(fld) fld +#else +# define __ctx(fld) __ ## fld +#endif + +#ifdef __USE_MISC +# include <sys/procfs.h> + typedef elf_greg_t greg_t; @@ -36,21 +43,36 @@ typedef elf_gregset_t gregset_t; /* Structure to describe FPU registers. */ typedef elf_fpregset_t fpregset_t; +#endif /* Context to describe whole processor state. This only describes the core registers; coprocessor registers get saved elsewhere (e.g. in uc_regspace, or somewhere unspecified on the stack during non-RT signal handlers). */ -typedef struct sigcontext mcontext_t; +typedef struct + { + unsigned long long int __ctx(fault_address); + unsigned long long int __ctx(regs)[31]; + unsigned long long int __ctx(sp); + unsigned long long int __ctx(pc); + unsigned long long int __ctx(pstate); + /* This field contains extension records for additional processor + state such as the FP/SIMD state. It has to match the definition + of the corresponding field in the sigcontext struct, see the + arch/arm64/include/uapi/asm/sigcontext.h linux header for details. */ + unsigned char __reserved[4096] __attribute__ ((__aligned__ (16))); + } mcontext_t; /* Userlevel context. */ -typedef struct ucontext +typedef struct ucontext_t { - unsigned long uc_flags; - struct ucontext *uc_link; + unsigned long __ctx(uc_flags); + struct ucontext_t *uc_link; stack_t uc_stack; - __sigset_t uc_sigmask; + sigset_t uc_sigmask; mcontext_t uc_mcontext; } ucontext_t; +#undef __ctx + #endif /* sys/ucontext.h */ |