static int target_restore_sigframe(CPUARMState *env,

                                   struct target_rt_sigframe *sf)

{

    sigset_t set;

    int i;

    struct target_aux_context *aux =

        (struct target_aux_context *)sf->uc.tuc_mcontext.__reserved;

    uint32_t magic, size, fpsr, fpcr;

    uint64_t pstate;



    target_to_host_sigset(&set, &sf->uc.tuc_sigmask);

    sigprocmask(SIG_SETMASK, &set, NULL);



    for (i = 0; i < 31; i++) {

        __get_user(env->xregs[i], &sf->uc.tuc_mcontext.regs[i]);

    }



    __get_user(env->xregs[31], &sf->uc.tuc_mcontext.sp);

    __get_user(env->pc, &sf->uc.tuc_mcontext.pc);

    __get_user(pstate, &sf->uc.tuc_mcontext.pstate);

    pstate_write(env, pstate);



    __get_user(magic, &aux->fpsimd.head.magic);

    __get_user(size, &aux->fpsimd.head.size);



    if (magic != TARGET_FPSIMD_MAGIC

        || size != sizeof(struct target_fpsimd_context)) {

        return 1;

    }



    for (i = 0; i < 32; i++) {

#ifdef TARGET_WORDS_BIGENDIAN

        __get_user(env->vfp.regs[i * 2], &aux->fpsimd.vregs[i * 2 + 1]);

        __get_user(env->vfp.regs[i * 2 + 1], &aux->fpsimd.vregs[i * 2]);

#else

        __get_user(env->vfp.regs[i * 2], &aux->fpsimd.vregs[i * 2]);

        __get_user(env->vfp.regs[i * 2 + 1], &aux->fpsimd.vregs[i * 2 + 1]);

#endif

    }

    __get_user(fpsr, &aux->fpsimd.fpsr);

    vfp_set_fpsr(env, fpsr);

    __get_user(fpcr, &aux->fpsimd.fpcr);

    vfp_set_fpcr(env, fpcr);



    return 0;

}

static int target_restore_sigframe(CPUARMState *env,

                                   struct target_rt_sigframe *sf)

{

    sigset_t set;

    int i;

    struct target_aux_context *aux =

        (struct target_aux_context *)sf->uc.tuc_mcontext.__reserved;

    uint32_t magic, size, fpsr, fpcr;

    uint64_t pstate;



    target_to_host_sigset(&set, &sf->uc.tuc_sigmask);

    sigprocmask(SIG_SETMASK, &set, NULL);



    for (i = 0; i < 31; i++) {

        __get_user(env->xregs[i], &sf->uc.tuc_mcontext.regs[i]);

    }



    __get_user(env->xregs[31], &sf->uc.tuc_mcontext.sp);

    __get_user(env->pc, &sf->uc.tuc_mcontext.pc);

    __get_user(pstate, &sf->uc.tuc_mcontext.pstate);

    pstate_write(env, pstate);



    __get_user(magic, &aux->fpsimd.head.magic);

    __get_user(size, &aux->fpsimd.head.size);



    if (magic != TARGET_FPSIMD_MAGIC

        || size != sizeof(struct target_fpsimd_context)) {

        return 1;

    }



    for (i = 0; i < 32; i++) {

#ifdef TARGET_WORDS_BIGENDIAN

        __get_user(env->vfp.regs[i * 2], &aux->fpsimd.vregs[i * 2 + 1]);

        __get_user(env->vfp.regs[i * 2 + 1], &aux->fpsimd.vregs[i * 2]);

#else

        __get_user(env->vfp.regs[i * 2], &aux->fpsimd.vregs[i * 2]);

        __get_user(env->vfp.regs[i * 2 + 1], &aux->fpsimd.vregs[i * 2 + 1]);

#endif

    }

    __get_user(fpsr, &aux->fpsimd.fpsr);

    vfp_set_fpsr(env, fpsr);

    __get_user(fpcr, &aux->fpsimd.fpcr);

    vfp_set_fpcr(env, fpcr);



    return 0;

}

static int FUNC_0(CPUARMState *VAR_0,

                                   struct target_rt_sigframe *VAR_1)

{

    sigset_t set;

    int VAR_2;

    struct target_aux_context *VAR_3 =

        (struct target_aux_context *)VAR_1->uc.tuc_mcontext.__reserved;

    uint32_t magic, size, fpsr, fpcr;

    uint64_t pstate;



    target_to_host_sigset(&set, &VAR_1->uc.tuc_sigmask);

    sigprocmask(SIG_SETMASK, &set, NULL);



    for (VAR_2 = 0; VAR_2 < 31; VAR_2++) {

        __get_user(VAR_0->xregs[VAR_2], &VAR_1->uc.tuc_mcontext.regs[VAR_2]);

    }



    __get_user(VAR_0->xregs[31], &VAR_1->uc.tuc_mcontext.sp);

    __get_user(VAR_0->pc, &VAR_1->uc.tuc_mcontext.pc);

    __get_user(pstate, &VAR_1->uc.tuc_mcontext.pstate);

    pstate_write(VAR_0, pstate);



    __get_user(magic, &VAR_3->fpsimd.head.magic);

    __get_user(size, &VAR_3->fpsimd.head.size);



    if (magic != TARGET_FPSIMD_MAGIC

        || size != sizeof(struct target_fpsimd_context)) {

        return 1;

    }



    for (VAR_2 = 0; VAR_2 < 32; VAR_2++) {

#ifdef TARGET_WORDS_BIGENDIAN

        __get_user(VAR_0->vfp.regs[VAR_2 * 2], &VAR_3->fpsimd.vregs[VAR_2 * 2 + 1]);

        __get_user(VAR_0->vfp.regs[VAR_2 * 2 + 1], &VAR_3->fpsimd.vregs[VAR_2 * 2]);

#else

        __get_user(VAR_0->vfp.regs[VAR_2 * 2], &VAR_3->fpsimd.vregs[VAR_2 * 2]);

        __get_user(VAR_0->vfp.regs[VAR_2 * 2 + 1], &VAR_3->fpsimd.vregs[VAR_2 * 2 + 1]);

#endif

    }

    __get_user(fpsr, &VAR_3->fpsimd.fpsr);

    vfp_set_fpsr(VAR_0, fpsr);

    __get_user(fpcr, &VAR_3->fpsimd.fpcr);

    vfp_set_fpcr(VAR_0, fpcr);



    return 0;

}

static int FUNC_0(CPUARMState *VAR_0,
struct target_rt_sigframe *VAR_1)
{ sigset_t set; int VAR_2; struct target_aux_context *VAR_3 =
(struct target_aux_context *)VAR_1->uc.tuc_mcontext.__reserved; uint32_t magic, size, fpsr, fpcr; uint64_t pstate; target_to_host_sigset(&set, &VAR_1->uc.tuc_sigmask); sigprocmask(SIG_SETMASK, &set, NULL); for (VAR_2 = 0; VAR_2 < 31; VAR_2++) { __get_user(VAR_0->xregs[VAR_2], &VAR_1->uc.tuc_mcontext.regs[VAR_2]); } __get_user(VAR_0->xregs[31], &VAR_1->uc.tuc_mcontext.sp); __get_user(VAR_0->pc, &VAR_1->uc.tuc_mcontext.pc); __get_user(pstate, &VAR_1->uc.tuc_mcontext.pstate); pstate_write(VAR_0, pstate); __get_user(magic, &VAR_3->fpsimd.head.magic); __get_user(size, &VAR_3->fpsimd.head.size); if (magic != TARGET_FPSIMD_MAGIC
|| size != sizeof(struct target_fpsimd_context)) { return 1; } for (VAR_2 = 0; VAR_2 < 32; VAR_2++) { #ifdef TARGET_WORDS_BIGENDIAN
__get_user(VAR_0->vfp.regs[VAR_2 * 2], &VAR_3->fpsimd.vregs[VAR_2 * 2 + 1]); __get_user(VAR_0->vfp.regs[VAR_2 * 2 + 1], &VAR_3->fpsimd.vregs[VAR_2 * 2]); #else
__get_user(VAR_0->vfp.regs[VAR_2 * 2], &VAR_3->fpsimd.vregs[VAR_2 * 2]); __get_user(VAR_0->vfp.regs[VAR_2 * 2 + 1], &VAR_3->fpsimd.vregs[VAR_2 * 2 + 1]); #endif
} __get_user(fpsr, &VAR_3->fpsimd.fpsr); vfp_set_fpsr(VAR_0, fpsr); __get_user(fpcr, &VAR_3->fpsimd.fpcr); vfp_set_fpcr(VAR_0, fpcr); return 0; }