aarch64: add struct _aarch64_ctx to signal.h
authorSzabolcs Nagy <nsz@port70.net>
Sat, 14 Mar 2015 17:40:09 +0000 (17:40 +0000)
committerRich Felker <dalias@aerifal.cx>
Sat, 14 Mar 2015 17:55:24 +0000 (13:55 -0400)
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.

arch/aarch64/bits/signal.h

index 95f252f69f610f12c9e2159ca05e632635443e29..430da95a05f81a0dc934504cdc6c40a55ed24abb 100644 (file)
@@ -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];