Lines Matching refs:regs
55 flush_window_regs_user(struct pt_regs *regs) in flush_window_regs_user() argument
57 const unsigned long ws = regs->windowstart; in flush_window_regs_user()
58 const unsigned long wb = regs->windowbase; in flush_window_regs_user()
66 if (regs->wmask == 1) in flush_window_regs_user()
72 base = (XCHAL_NUM_AREGS / 4) - (regs->wmask >> 4); in flush_window_regs_user()
76 if ((regs->wmask & 2) == 0) in flush_window_regs_user()
77 if (__get_user(sp, (int*)(regs->areg[base * 4 + 1] - 12))) in flush_window_regs_user()
94 ®s->areg[(base + 1) * 4], 16)) in flush_window_regs_user()
100 ®s->areg[(base + 1) * 4], 32)) in flush_window_regs_user()
107 sp = regs->areg[((base + inc) * 4 + 1) % XCHAL_NUM_AREGS]; in flush_window_regs_user()
108 if (copy_to_user((void*)(sp - 16), ®s->areg[base * 4], 16)) in flush_window_regs_user()
113 sp = regs->areg[base * 4 + 1]; in flush_window_regs_user()
117 regs->wmask = 1; in flush_window_regs_user()
118 regs->windowstart = 1 << wb; in flush_window_regs_user()
135 setup_sigcontext(struct rt_sigframe __user *frame, struct pt_regs *regs) in setup_sigcontext() argument
141 #define COPY(x) err |= __put_user(regs->x, &sc->sc_##x) in setup_sigcontext()
150 err |= flush_window_regs_user(regs); in setup_sigcontext()
151 err |= __copy_to_user (sc->sc_a, regs->areg, 16 * 4); in setup_sigcontext()
163 err |= __copy_to_user(&frame->xtregs.opt, ®s->xtregs_opt, in setup_sigcontext()
174 restore_sigcontext(struct pt_regs *regs, struct rt_sigframe __user *frame) in restore_sigcontext() argument
181 #define COPY(x) err |= __get_user(regs->x, &sc->sc_##x) in restore_sigcontext()
191 regs->wmask = 1; in restore_sigcontext()
192 regs->windowbase = 0; in restore_sigcontext()
193 regs->windowstart = 1; in restore_sigcontext()
195 regs->syscall = -1; /* disable syscall checks */ in restore_sigcontext()
202 regs->ps = (regs->ps & ~PS_CALLINC_MASK) | (ps & PS_CALLINC_MASK); in restore_sigcontext()
206 if ((regs->lcount > 0) in restore_sigcontext()
207 && ((regs->lbeg > TASK_SIZE) || (regs->lend > TASK_SIZE)) ) in restore_sigcontext()
210 err |= __copy_from_user(regs->areg, sc->sc_a, 16 * 4); in restore_sigcontext()
229 err |= __copy_from_user(®s->xtregs_opt, &frame->xtregs.opt, in restore_sigcontext()
241 long a4, long a5, struct pt_regs *regs) in xtensa_rt_sigreturn() argument
250 if (regs->depc > 64) in xtensa_rt_sigreturn()
253 frame = (struct rt_sigframe __user *) regs->areg[1]; in xtensa_rt_sigreturn()
263 if (restore_sigcontext(regs, frame)) in xtensa_rt_sigreturn()
266 ret = regs->areg[2]; in xtensa_rt_sigreturn()
335 struct pt_regs *regs) in setup_frame() argument
341 sp = regs->areg[1]; in setup_frame()
349 if (regs->depc > 64) in setup_frame()
364 err |= __save_altstack(&frame->uc.uc_stack, regs->areg[1]); in setup_frame()
365 err |= setup_sigcontext(frame, regs); in setup_frame()
388 tp = regs->threadptr; in setup_frame()
389 start_thread(regs, (unsigned long) ksig->ka.sa.sa_handler, in setup_frame()
395 regs->areg[4] = (((unsigned long) ra) & 0x3fffffff) | 0x40000000; in setup_frame()
396 regs->areg[6] = (unsigned long) sig; in setup_frame()
397 regs->areg[7] = (unsigned long) &frame->info; in setup_frame()
398 regs->areg[8] = (unsigned long) &frame->uc; in setup_frame()
399 regs->threadptr = tp; in setup_frame()
403 current->comm, current->pid, sig, frame, regs->pc); in setup_frame()
418 static void do_signal(struct pt_regs *regs) in do_signal() argument
429 if ((signed)regs->syscall >= 0) { in do_signal()
433 switch (regs->areg[2]) { in do_signal()
436 regs->areg[2] = -EINTR; in do_signal()
441 regs->areg[2] = -EINTR; in do_signal()
446 regs->areg[2] = regs->syscall; in do_signal()
447 regs->pc -= 3; in do_signal()
452 if (regs->areg[2] != 0) in do_signal()
459 ret = setup_frame(&ksig, sigmask_to_save(), regs); in do_signal()
468 if ((signed) regs->syscall >= 0) { in do_signal()
470 switch (regs->areg[2]) { in do_signal()
474 regs->areg[2] = regs->syscall; in do_signal()
475 regs->pc -= 3; in do_signal()
478 regs->areg[2] = __NR_restart_syscall; in do_signal()
479 regs->pc -= 3; in do_signal()
492 void do_notify_resume(struct pt_regs *regs) in do_notify_resume() argument
495 do_signal(regs); in do_notify_resume()
498 tracehook_notify_resume(regs); in do_notify_resume()