Commit be2f08ed authored by Alexander Kartashov's avatar Alexander Kartashov Committed by Pavel Emelyanov

sigframe: introduced the macros to access the FPU state

An fpu_state_t instance shouldn't be stored in an ARM sigframe
that makes it necessary to generalize the way the FPU state is
accessed in the routine construct_sigframe()
Signed-off-by: 's avatarAlexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 03a9c6b0
......@@ -125,6 +125,8 @@ struct rt_sigframe {
#define RT_SIGFRAME_UC(rt_sigframe) rt_sigframe->sig.uc
#define RT_SIGFRAME_REGIP(rt_sigframe) (rt_sigframe)->sig.uc.uc_mcontext.arm_ip
#define RT_SIGFRAME_HAS_FPU(rt_sigframe) 1
#define RT_SIGFRAME_FPU(rt_sigframe) ((struct aux_sigframe *)&sigframe->sig.uc.uc_regspace)->vfp
#define SIGFRAME_OFFSET 0
......
......@@ -132,6 +132,8 @@ struct rt_sigframe {
#define RT_SIGFRAME_UC(rt_sigframe) rt_sigframe->uc
#define RT_SIGFRAME_REGIP(rt_sigframe) (rt_sigframe)->uc.uc_mcontext.rip
#define RT_SIGFRAME_HAS_FPU(rt_sigframe) (rt_sigframe)->fpu_state.has_fpu
#define RT_SIGFRAME_FPU(rt_sigframe) (rt_sigframe)->fpu_state
#define SIGFRAME_OFFSET 8
......
......@@ -20,12 +20,11 @@ int construct_sigframe(struct rt_sigframe *sigframe,
} else
memset(blk_sigset, 0, sizeof(k_rtsigset_t));
sigframe->fpu_state.has_fpu = true;
if (restore_fpu(sigframe, core))
return -1;
if (sigframe->fpu_state.has_fpu)
if (sigreturn_prep_fpu_frame(sigframe, &rsigframe->fpu_state))
if (RT_SIGFRAME_HAS_FPU(sigframe))
if (sigreturn_prep_fpu_frame(sigframe, &RT_SIGFRAME_FPU(rsigframe)))
return -1;
if (restore_gpregs(sigframe, CORE_THREAD_ARCH_INFO(core)->gpregs))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment