summaryrefslogtreecommitdiff
path: root/arch/i386
diff options
context:
space:
mode:
Diffstat (limited to 'arch/i386')
-rw-r--r--arch/i386/bits/signal.h48
1 files changed, 26 insertions, 22 deletions
diff --git a/arch/i386/bits/signal.h b/arch/i386/bits/signal.h
index 498dd1cc..3caadea2 100644
--- a/arch/i386/bits/signal.h
+++ b/arch/i386/bits/signal.h
@@ -1,17 +1,34 @@
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-struct __fpstate {
- unsigned long __x[7];
- unsigned char __y[80];
- unsigned long __z;
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct _fpstate {
+ unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel;
+ struct {
+ unsigned short significand[4], exponent;
+ } _st[8];
+ unsigned long status;
};
-
+struct sigcontext {
+ unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
+ unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
+ unsigned long trapno, err, eip;
+ unsigned short cs, __csh;
+ unsigned long eflags, esp_at_signal;
+ unsigned short ss, __ssh;
+ struct _fpstate *fpstate;
+ unsigned long oldmask, cr2;
+};
+typedef struct {
+ unsigned gregs[19];
+ struct _fpstate *fpregs;
+ unsigned long oldmask, cr2;
+} mcontext_t;
+#else
typedef struct {
- unsigned long __gregs[19];
- void *__fpregs;
- unsigned long __oldmask, __cr2;
+ unsigned __space[22];
} mcontext_t;
+#endif
typedef struct __ucontext {
unsigned long uc_flags;
@@ -19,7 +36,7 @@ typedef struct __ucontext {
stack_t uc_stack;
mcontext_t uc_mcontext;
sigset_t uc_sigmask;
- struct __fpstate __fpregs_mem;
+ unsigned long __fpregs_mem[28];
} ucontext_t;
#define SA_NOCLDSTOP 1
@@ -31,19 +48,6 @@ typedef struct __ucontext {
#define SA_RESETHAND 0x80000000
#define SA_RESTORER 0x04000000
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-struct sigcontext {
- unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
- unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
- unsigned long trapno, err, eip;
- unsigned short cs, __csh;
- unsigned long eflags, esp_at_signal;
- unsigned short ss, __ssh;
- struct __fpstate *fpstate;
- unsigned long oldmask, cr2;
-};
-#endif
-
#endif
#define SIGHUP 1