Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3befce8f authored by Chris Zankel's avatar Chris Zankel
Browse files

[XTENSA] Remove oldmask from sigcontext and fix register flush



Remove oldmask from the sigcontext structure. Also update wmask
and windowstart when we flush the AR registers to stack.

Signed-off-by: default avatarChris Zankel <chris@zankel.net>
parent 8d7e8240
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -49,8 +49,6 @@ struct rt_sigframe
/* 
 * Flush register windows stored in pt_regs to stack.
 * Returns 1 for errors.
 *
 * Note that windowbase, windowstart, and wmask are not updated!
 */

int
@@ -116,6 +114,9 @@ flush_window_regs_user(struct pt_regs *regs)
		base += inc;
	}

	regs->wmask = 1;
	regs->windowstart = 1 << wb;

	return 0;

errout:
@@ -132,7 +133,7 @@ flush_window_regs_user(struct pt_regs *regs)

static int
setup_sigcontext(struct sigcontext __user *sc, cp_state_t *cpstate,
		 struct pt_regs *regs, unsigned long mask)
		 struct pt_regs *regs)
{
	int err = 0;

@@ -155,8 +156,6 @@ setup_sigcontext(struct sigcontext __user *sc, cp_state_t *cpstate,
	err |= save_cpextra(cpstate);
	err |= __put_user(err ? NULL : cpstate, &sc->sc_cpstate);
#endif
	/* non-iBCS2 extensions.. */
	err |= __put_user(mask, &sc->oldmask);

	return err;
}
@@ -360,8 +359,7 @@ static void setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
	err |= __put_user(sas_ss_flags(regs->areg[1]),
			  &frame->uc.uc_stack.ss_flags);
	err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
	err |= setup_sigcontext(&frame->uc.uc_mcontext, &frame->cpstate,
			        regs, set->sig[0]);
	err |= setup_sigcontext(&frame->uc.uc_mcontext, &frame->cpstate, regs);
	err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));

	/* Create sys_rt_sigreturn syscall in stack frame */
+0 −3
Original line number Diff line number Diff line
@@ -13,9 +13,6 @@


struct sigcontext {
	unsigned long	oldmask;

	/* CPU registers */
	unsigned long sc_pc;
	unsigned long sc_ps;
	unsigned long sc_lbeg;