static int setup_sigcontext32(struct pt_regs *regs, struct sigcontext32 __user *sc) { int err = 0; int i; err |= __put_user(regs->cp0_epc, &sc->sc_pc); err |= __put_user(0, &sc->sc_regs[0]); for (i = 1; i < 32; i++) err |= __put_user(regs->regs[i], &sc->sc_regs[i]); err |= __put_user(regs->hi, &sc->sc_mdhi); err |= __put_user(regs->lo, &sc->sc_mdlo); if (cpu_has_dsp) { err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); err |= __put_user(mfhi1(), &sc->sc_hi1); err |= __put_user(mflo1(), &sc->sc_lo1); err |= __put_user(mfhi2(), &sc->sc_hi2); err |= __put_user(mflo2(), &sc->sc_lo2); err |= __put_user(mfhi3(), &sc->sc_hi3); err |= __put_user(mflo3(), &sc->sc_lo3); } /* * Save FPU state to signal context. Signal handler * will "inherit" current FPU state. */ err |= protected_save_fp_context(sc); return err; }
int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) { int err = 0; int i; unsigned int used_math; err |= __put_user(regs->cp0_epc, &sc->sc_pc); err |= __put_user(0, &sc->sc_regs[0]); for (i = 1; i < 32; i++) err |= __put_user(regs->regs[i], &sc->sc_regs[i]); #ifdef CONFIG_CPU_HAS_SMARTMIPS err |= __put_user(regs->acx, &sc->sc_acx); #endif err |= __put_user(regs->hi, &sc->sc_mdhi); err |= __put_user(regs->lo, &sc->sc_mdlo); if (cpu_has_dsp) { err |= __put_user(mfhi1(), &sc->sc_hi1); err |= __put_user(mflo1(), &sc->sc_lo1); err |= __put_user(mfhi2(), &sc->sc_hi2); err |= __put_user(mflo2(), &sc->sc_lo2); err |= __put_user(mfhi3(), &sc->sc_hi3); err |= __put_user(mflo3(), &sc->sc_lo3); err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); } used_math = !!used_math(); err |= __put_user(used_math, &sc->sc_used_math); if (used_math) { /* * Save FPU state to signal context. Signal handler * will "inherit" current FPU state. */ err |= protected_save_fp_context(sc); } if (cpu_has_mxu) { unsigned int *regs; regs = __get_mxu_regs(current); for (i = 0; i < NUM_MXU_REGS; i++){ err |= __put_user(regs[i], &sc->sc_mxu[i]); } } return err; }
int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) { int err = 0; int i; unsigned int used_math; err |= __put_user(regs->cp0_epc, &sc->sc_pc); err |= __put_user(0, &sc->sc_regs[0]); for (i = 1; i < 32; i++) err |= __put_user(regs->regs[i], &sc->sc_regs[i]); #ifdef CONFIG_CPU_HAS_SMARTMIPS err |= __put_user(regs->acx, &sc->sc_acx); #endif err |= __put_user(regs->hi, &sc->sc_mdhi); err |= __put_user(regs->lo, &sc->sc_mdlo); if (cpu_has_dsp) { err |= __put_user(mfhi1(), &sc->sc_hi1); err |= __put_user(mflo1(), &sc->sc_lo1); err |= __put_user(mfhi2(), &sc->sc_hi2); err |= __put_user(mflo2(), &sc->sc_lo2); err |= __put_user(mfhi3(), &sc->sc_hi3); err |= __put_user(mflo3(), &sc->sc_lo3); err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); } used_math = used_math() ? USEDMATH_FP : 0; used_math |= thread_msa_context_live() ? USEDMATH_MSA : 0; err |= __put_user(used_math, &sc->sc_used_math); if (used_math) { /* * Save FPU state to signal context. Signal handler * will "inherit" current FPU state. */ err |= protected_save_fp_context(sc, used_math); } return err; }