Skip to content

Commit

Permalink
[XTENSA] Remove oldmask from sigcontext and fix register flush
Browse files Browse the repository at this point in the history
Remove oldmask from the sigcontext structure. Also update wmask
and windowstart when we flush the AR registers to stack.

Signed-off-by: Chris Zankel <chris@zankel.net>
  • Loading branch information
Chris Zankel committed Feb 14, 2008
1 parent 8d7e824 commit 3befce8
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 10 deletions.
12 changes: 5 additions & 7 deletions arch/xtensa/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -116,6 +114,9 @@ flush_window_regs_user(struct pt_regs *regs)
base += inc;
}

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

return 0;

errout:
Expand All @@ -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;

Expand All @@ -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;
}
Expand Down Expand Up @@ -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 */
Expand Down
3 changes: 0 additions & 3 deletions include/asm-xtensa/sigcontext.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@


struct sigcontext {
unsigned long oldmask;

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

0 comments on commit 3befce8

Please sign in to comment.