diff options
Diffstat (limited to 'arch/riscv64/bits/signal.h')
-rw-r--r-- | arch/riscv64/bits/signal.h | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/arch/riscv64/bits/signal.h b/arch/riscv64/bits/signal.h index 76d7ad80..56f8fe17 100644 --- a/arch/riscv64/bits/signal.h +++ b/arch/riscv64/bits/signal.h @@ -6,46 +6,54 @@ # define SIGSTKSZ 8192 #endif -/* gregs[0] holds the program counter. */ - -#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -typedef unsigned long greg_t; -typedef unsigned long gregset_t[32]; +typedef unsigned long __riscv_mc_gp_state[32]; struct __riscv_mc_f_ext_state { - unsigned int f[32]; - unsigned int fcsr; + unsigned int __f[32]; + unsigned int __fcsr; }; struct __riscv_mc_d_ext_state { - unsigned long long f[32]; - unsigned int fcsr; + unsigned long long __f[32]; + unsigned int __fcsr; }; struct __riscv_mc_q_ext_state { - unsigned long long f[64] __attribute__((aligned(16))); - unsigned int fcsr; - unsigned int reserved[3]; + unsigned long long __f[64] __attribute__((__aligned__(16))); + unsigned int __fcsr; + unsigned int __reserved[3]; }; union __riscv_mc_fp_state { - struct __riscv_mc_f_ext_state f; - struct __riscv_mc_d_ext_state d; - struct __riscv_mc_q_ext_state q; + struct __riscv_mc_f_ext_state __f; + struct __riscv_mc_d_ext_state __d; + struct __riscv_mc_q_ext_state __q; }; -typedef union __riscv_mc_fp_state fpregset_t; +typedef struct mcontext_t { + __riscv_mc_gp_state __gregs; + union __riscv_mc_fp_state __fpregs; +} mcontext_t; + +#if defined(_GNU_SOURCE) +#define REG_PC 0 +#define REG_RA 1 +#define REG_SP 2 +#define REG_TP 4 +#define REG_S0 8 +#define REG_S1 9 +#define REG_A0 10 +#define REG_S2 18 +#endif -typedef struct sigcontext { +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long greg_t; +typedef unsigned long gregset_t[32]; +typedef union __riscv_mc_fp_state fpregset_t; +struct sigcontext { gregset_t gregs; fpregset_t fpregs; -} mcontext_t; - -#else -typedef struct { - unsigned long gregs[32]; - unsigned long long fpregs[66]; -} mcontext_t; +}; #endif struct sigaltstack { @@ -70,7 +78,6 @@ typedef struct __ucontext #define SA_RESTART 0x10000000 #define SA_NODEFER 0x40000000 #define SA_RESETHAND 0x80000000 -#define SA_RESTORER 0x04000000 #endif |