fix incorrect SIGSTKFLT on all mips archs
[musl] / arch / mips / bits / signal.h
index aed372e..1b69e76 100644 (file)
@@ -1,9 +1,55 @@
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef unsigned long long greg_t, gregset_t[32];
+typedef struct {
+       union {
+               double fp_dregs[32];
+               struct {
+                       float _fp_fregs;
+                       unsigned _fp_pad;
+               } fp_fregs[32];
+       } fp_r;
+} fpregset_t;
+struct sigcontext {
+       unsigned sc_regmask, sc_status;
+       unsigned long long sc_pc;
+       gregset_t sc_regs;
+       fpregset_t sc_fpregs;
+       unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
+       unsigned long long sc_mdhi, sc_mdlo;
+       unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
+};
 typedef struct {
-       unsigned long __regs[21];
+       unsigned regmask, status;
+       unsigned long long pc;
+       gregset_t gregs;
+       fpregset_t fpregs;
+       unsigned ownedfp, fpc_csr, fpc_eir, used_math, dsp;
+       unsigned long long mdhi, mdlo;
+       unsigned long hi1, lo1, hi2, lo2, hi3, lo3;
 } mcontext_t;
+#else
+typedef struct {
+       unsigned __mc1[2];
+       unsigned long long __mc2[65];
+       unsigned __mc3[5];
+       unsigned long long __mc4[2];
+       unsigned __mc5[6];
+} mcontext_t;
+#endif
+
+struct sigaltstack {
+       void *ss_sp;
+       size_t ss_size;
+       int ss_flags;
+};
 
 typedef struct __ucontext {
        unsigned long uc_flags;
@@ -11,29 +57,32 @@ typedef struct __ucontext {
        stack_t uc_stack;
        mcontext_t uc_mcontext;
        sigset_t uc_sigmask;
-       unsigned long uc_regspace[128];
 } ucontext_t;
 
 #define SA_NOCLDSTOP  1
-#define SA_NOCLDWAIT  2
-#define SA_SIGINFO    4
+#define SA_NOCLDWAIT  0x10000
+#define SA_SIGINFO    8
 #define SA_ONSTACK    0x08000000
 #define SA_RESTART    0x10000000
 #define SA_NODEFER    0x40000000
 #define SA_RESETHAND  0x80000000
 #define SA_RESTORER   0x04000000
 
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-struct sigcontext
-{
-       unsigned sc_regmask, sc_status;
-       unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
-       unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
-       unsigned long long sc_mdhi, sc_mdlo;
-       unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
-};
-#define NSIG      64
-#endif
+#undef SIG_BLOCK
+#undef SIG_UNBLOCK
+#undef SIG_SETMASK
+#define SIG_BLOCK     1
+#define SIG_UNBLOCK   2
+#define SIG_SETMASK   3
+
+#undef SI_ASYNCIO
+#undef SI_MESGQ
+#undef SI_TIMER
+#define SI_ASYNCIO (-2)
+#define SI_MESGQ (-4)
+#define SI_TIMER (-3)
+
+#define __SI_SWAP_ERRNO_CODE
 
 #endif
 
@@ -44,7 +93,7 @@ struct sigcontext
 #define SIGTRAP   5
 #define SIGABRT   6
 #define SIGIOT    SIGABRT
-#define SIGSTKFLT 7
+#define SIGEMT    7
 #define SIGFPE    8
 #define SIGKILL   9
 #define SIGBUS    10
@@ -71,3 +120,5 @@ struct sigcontext
 #define SIGXCPU   30
 #define SIGXFSZ   31
 #define SIGUNUSED SIGSYS
+
+#define _NSIG 128