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

arm: initialize the ARM VFP header in the routine restore_fpu()

The ARM VFP header is a part of the VFP frame that makes
it unreasonable to have frame initialization split into
two routines. This patch moerges the ARM version of
the routine sigreturn_prep_fpu_frame() into restore_fpu()
and reduces the former into a stub.
Signed-off-by: 's avatarAlexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 5a63215b
...@@ -195,7 +195,8 @@ int restore_fpu(struct rt_sigframe *sigframe, CoreEntry *core) ...@@ -195,7 +195,8 @@ int restore_fpu(struct rt_sigframe *sigframe, CoreEntry *core)
memcpy(&aux->vfp.ufp.fpregs, CORE_THREAD_ARCH_INFO(core)->fpstate->vfp_regs, sizeof(aux->vfp.ufp.fpregs)); memcpy(&aux->vfp.ufp.fpregs, CORE_THREAD_ARCH_INFO(core)->fpstate->vfp_regs, sizeof(aux->vfp.ufp.fpregs));
aux->vfp.ufp.fpscr = CORE_THREAD_ARCH_INFO(core)->fpstate->fpscr; aux->vfp.ufp.fpscr = CORE_THREAD_ARCH_INFO(core)->fpstate->fpscr;
aux->vfp.magic = VFP_MAGIC;
aux->vfp.size = VFP_STORAGE_SIZE;
return 0; return 0;
} }
...@@ -245,13 +246,3 @@ int restore_gpregs(struct rt_sigframe *f, UserArmRegsEntry *r) ...@@ -245,13 +246,3 @@ int restore_gpregs(struct rt_sigframe *f, UserArmRegsEntry *r)
return 0; return 0;
} }
int sigreturn_prep_fpu_frame(struct rt_sigframe *sigframe, fpu_state_t *fpu_state)
{
struct aux_sigframe *aux = (struct aux_sigframe *)&sigframe->sig.uc.uc_regspace;
aux->vfp.magic = VFP_MAGIC;
aux->vfp.size = VFP_STORAGE_SIZE;
return 0;
}
...@@ -134,7 +134,7 @@ struct rt_sigframe { ...@@ -134,7 +134,7 @@ struct rt_sigframe {
int restore_gpregs(struct rt_sigframe *f, UserArmRegsEntry *r); int restore_gpregs(struct rt_sigframe *f, UserArmRegsEntry *r);
int restore_nonsigframe_gpregs(UserArmRegsEntry *r); int restore_nonsigframe_gpregs(UserArmRegsEntry *r);
int sigreturn_prep_fpu_frame(struct rt_sigframe *sigframe, fpu_state_t *fpu_state); static inline int sigreturn_prep_fpu_frame(struct rt_sigframe *sigframe, fpu_state_t *fpu_state) { return 0; }
static inline void restore_tls(u32 tls) { static inline void restore_tls(u32 tls) {
asm ( asm (
......
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