#include <inttypes.h>
#include <signal.h>
#include <stddef.h>
#include <sys/ucontext.h>

#include <kernel_rt_sigframe.h>

-- Constants used by the rt_sigprocmask call.

SIG_BLOCK
SIG_SETMASK

_NSIG8				(_NSIG / 8)

-- Offsets of the fields in the kernel rt_sigframe_t structure.
#define rt_sigframe(member)	offsetof (kernel_rt_sigframe_t, member)

RT_SIGFRAME_UCONTEXT		rt_sigframe (rs_uc)

RT_SIGFRAME_SIZE		sizeof (kernel_rt_sigframe_t)

-- Offsets of the fields in the ucontext_t structure.
#define ucontext(member)	offsetof (ucontext_t, member)
#define stack(member)		ucontext (uc_stack.member)
#define mcontext(member)	ucontext (uc_mcontext.member)

UCONTEXT_FLAGS			ucontext (uc_flags)
UCONTEXT_LINK			ucontext (uc_link)
UCONTEXT_STACK			ucontext (uc_stack)
UCONTEXT_MCONTEXT		ucontext (uc_mcontext)
UCONTEXT_SIGMASK		ucontext (uc_sigmask)

STACK_SP			stack (ss_sp)
STACK_SIZE			stack (ss_size)
STACK_FLAGS			stack (ss_flags)

MCONTEXT_GREGS			mcontext (gregs)
MCONTEXT_FPREGS			mcontext (fpregs)
MCONTEXT_MDHI			mcontext (mdhi)
MCONTEXT_HI1			mcontext (hi1)
MCONTEXT_HI2			mcontext (hi2)
MCONTEXT_HI3			mcontext (hi3)
MCONTEXT_MDLO			mcontext (mdlo)
MCONTEXT_LO1			mcontext (lo1)
MCONTEXT_LO2			mcontext (lo2)
MCONTEXT_LO3			mcontext (lo3)
MCONTEXT_PC			mcontext (pc)
MCONTEXT_FPC_CSR		mcontext (fpc_csr)
MCONTEXT_USED_MATH		mcontext (used_math)
MCONTEXT_DSP			mcontext (dsp)

UCONTEXT_SIZE			sizeof (ucontext_t)
