summaryrefslogtreecommitdiffstats
path: root/libc/include/sys/ucontext.h
diff options
context:
space:
mode:
Diffstat (limited to 'libc/include/sys/ucontext.h')
-rw-r--r--libc/include/sys/ucontext.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/libc/include/sys/ucontext.h b/libc/include/sys/ucontext.h
index f62380d..dd2a0bb 100644
--- a/libc/include/sys/ucontext.h
+++ b/libc/include/sys/ucontext.h
@@ -68,11 +68,9 @@ typedef struct ucontext {
struct ucontext* uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
+ sigset_t uc_sigmask;
// Android has a wrong (smaller) sigset_t on ARM.
- union {
- sigset_t bionic;
- uint32_t kernel[2];
- } uc_sigmask;
+ uint32_t __padding_rt_sigset;
// The kernel adds extra padding after uc_sigmask to match glibc sigset_t on ARM.
char __padding[120];
unsigned long uc_regspace[128] __attribute__((__aligned__(8)));
@@ -80,6 +78,10 @@ typedef struct ucontext {
#elif defined(__aarch64__)
+#define NGREG 34 /* x0..x30 + sp + pc + pstate */
+typedef unsigned long greg_t;
+typedef greg_t gregset_t[NGREG];
+
#include <asm/sigcontext.h>
typedef struct sigcontext mcontext_t;
@@ -152,11 +154,9 @@ typedef struct ucontext {
struct ucontext* uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
+ sigset_t uc_sigmask;
// Android has a wrong (smaller) sigset_t on x86.
- union {
- sigset_t bionic;
- uint32_t kernel[2];
- } uc_sigmask;
+ uint32_t __padding_rt_sigset;
struct _libc_fpstate __fpregs_mem;
} ucontext_t;