summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2015-03-14 17:40:09 +0000
committerRich Felker <dalias@aerifal.cx>2015-03-14 13:55:24 -0400
commit38bf2d7cc3e5eb47d63882a64c8471699c1e7eeb (patch)
tree9ea6728a46ef020e0d14edc801f3948abd2a7fad
parent673cab5c56f6b6a8afb01c4b5341963ff259e996 (diff)
downloadmusl-38bf2d7cc3e5eb47d63882a64c8471699c1e7eeb.tar.gz
aarch64: add struct _aarch64_ctx to signal.h
The unwind code in libgcc uses this type for unwinding across signal handlers. On aarch64 the kernel may place a sequence of structs on the signal stack on top of the ucontext to provide additional information. The unwinder only needs the header, but added all the types the kernel currently defines for this mechanism because they are part of the uapi.
-rw-r--r--arch/aarch64/bits/signal.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/aarch64/bits/signal.h b/arch/aarch64/bits/signal.h
index 95f252f6..430da95a 100644
--- a/arch/aarch64/bits/signal.h
+++ b/arch/aarch64/bits/signal.h
@@ -17,6 +17,23 @@ typedef struct sigcontext
unsigned long sp, pc, pstate;
long double __reserved[256];
} mcontext_t;
+
+#define FPSIMD_MAGIC 0x46508001
+#define ESR_MAGIC 0x45535201
+struct _aarch64_ctx {
+ unsigned int magic;
+ unsigned int size;
+};
+struct fpsimd_context {
+ struct _aarch64_ctx head;
+ unsigned int fpsr;
+ unsigned int fpcr;
+ long double vregs[32];
+};
+struct esr_context {
+ struct _aarch64_ctx head;
+ unsigned long esr;
+};
#else
typedef struct {
long double __regs[18+256];