fix wrong sigaction syscall ABI on mips*, or1k, microblaze, riscv64
[musl] / arch / mips / bits / signal.h
index 48bd110..a3b3857 100644 (file)
@@ -1,6 +1,11 @@
 #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 {
@@ -12,18 +17,20 @@ typedef struct {
                } fp_fregs[32];
        } fp_r;
 } fpregset_t;
-struct sigcontext
-{
+struct sigcontext {
        unsigned sc_regmask, sc_status;
-       unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
+       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
-{
+typedef struct {
        unsigned regmask, status;
-       unsigned long long pc, regs[32], fpregs[32];
+       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;
@@ -59,7 +66,6 @@ typedef struct __ucontext {
 #define SA_RESTART    0x10000000
 #define SA_NODEFER    0x40000000
 #define SA_RESETHAND  0x80000000
-#define SA_RESTORER   0x04000000
 
 #undef SIG_BLOCK
 #undef SIG_UNBLOCK
@@ -68,6 +74,15 @@ typedef struct __ucontext {
 #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
 
 #define SIGHUP    1
@@ -77,7 +92,7 @@ typedef struct __ucontext {
 #define SIGTRAP   5
 #define SIGABRT   6
 #define SIGIOT    SIGABRT
-#define SIGSTKFLT 7
+#define SIGEMT    7
 #define SIGFPE    8
 #define SIGKILL   9
 #define SIGBUS    10