diff options
Diffstat (limited to 'libc/sysdeps/linux/arm/sys/ucontext.h')
-rw-r--r-- | libc/sysdeps/linux/arm/sys/ucontext.h | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/libc/sysdeps/linux/arm/sys/ucontext.h b/libc/sysdeps/linux/arm/sys/ucontext.h index 1260ee594..9ecff7b59 100644 --- a/libc/sysdeps/linux/arm/sys/ucontext.h +++ b/libc/sysdeps/linux/arm/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -24,12 +24,15 @@ #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> typedef int greg_t; /* Number of general registers. */ -#define NGREG 16 +#define NGREG 18 /* Container for all general registers. */ typedef elf_gregset_t gregset_t; @@ -74,21 +77,21 @@ enum /* Structure to describe FPU registers. */ typedef elf_fpregset_t fpregset_t; -/* Context to describe whole processor state. */ -typedef struct - { - gregset_t gregs; - fpregset_t fpregs; - } mcontext_t; +/* 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; /* Userlevel context. */ typedef struct ucontext -{ - unsigned long uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - struct sigcontext uc_mcontext; - sigset_t uc_sigmask; /* mask last for extensibility */ -} ucontext_t; + { + unsigned long uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + __sigset_t uc_sigmask; + unsigned long uc_regspace[128] __attribute__((__aligned__(8))); + } ucontext_t; #endif /* sys/ucontext.h */ |