Lines Matching full:regs

37 static inline int rt_restore_ucontext(struct pt_regs *regs,  in rt_restore_ucontext()  argument
52 err |= __get_user(regs->r1, &gregs[0]); in rt_restore_ucontext()
53 err |= __get_user(regs->r2, &gregs[1]); in rt_restore_ucontext()
54 err |= __get_user(regs->r3, &gregs[2]); in rt_restore_ucontext()
55 err |= __get_user(regs->r4, &gregs[3]); in rt_restore_ucontext()
56 err |= __get_user(regs->r5, &gregs[4]); in rt_restore_ucontext()
57 err |= __get_user(regs->r6, &gregs[5]); in rt_restore_ucontext()
58 err |= __get_user(regs->r7, &gregs[6]); in rt_restore_ucontext()
59 err |= __get_user(regs->r8, &gregs[7]); in rt_restore_ucontext()
60 err |= __get_user(regs->r9, &gregs[8]); in rt_restore_ucontext()
61 err |= __get_user(regs->r10, &gregs[9]); in rt_restore_ucontext()
62 err |= __get_user(regs->r11, &gregs[10]); in rt_restore_ucontext()
63 err |= __get_user(regs->r12, &gregs[11]); in rt_restore_ucontext()
64 err |= __get_user(regs->r13, &gregs[12]); in rt_restore_ucontext()
65 err |= __get_user(regs->r14, &gregs[13]); in rt_restore_ucontext()
66 err |= __get_user(regs->r15, &gregs[14]); in rt_restore_ucontext()
83 err |= __get_user(regs->ea, &gregs[27]); in rt_restore_ucontext()
85 err |= __get_user(regs->ra, &gregs[23]); in rt_restore_ucontext()
86 err |= __get_user(regs->sp, &gregs[28]); in rt_restore_ucontext()
88 regs->orig_r2 = -1; /* disable syscall checks */ in rt_restore_ucontext()
94 *pr2 = regs->r2; in rt_restore_ucontext()
103 struct pt_regs *regs = (struct pt_regs *)(sw + 1); in do_rt_sigreturn() local
105 struct rt_sigframe *frame = (struct rt_sigframe *) regs->sp; in do_rt_sigreturn()
117 if (rt_restore_ucontext(regs, sw, &frame->uc, &rval)) in do_rt_sigreturn()
127 static inline int rt_setup_ucontext(struct ucontext *uc, struct pt_regs *regs) in rt_setup_ucontext() argument
129 struct switch_stack *sw = (struct switch_stack *)regs - 1; in rt_setup_ucontext()
134 err |= __put_user(regs->r1, &gregs[0]); in rt_setup_ucontext()
135 err |= __put_user(regs->r2, &gregs[1]); in rt_setup_ucontext()
136 err |= __put_user(regs->r3, &gregs[2]); in rt_setup_ucontext()
137 err |= __put_user(regs->r4, &gregs[3]); in rt_setup_ucontext()
138 err |= __put_user(regs->r5, &gregs[4]); in rt_setup_ucontext()
139 err |= __put_user(regs->r6, &gregs[5]); in rt_setup_ucontext()
140 err |= __put_user(regs->r7, &gregs[6]); in rt_setup_ucontext()
141 err |= __put_user(regs->r8, &gregs[7]); in rt_setup_ucontext()
142 err |= __put_user(regs->r9, &gregs[8]); in rt_setup_ucontext()
143 err |= __put_user(regs->r10, &gregs[9]); in rt_setup_ucontext()
144 err |= __put_user(regs->r11, &gregs[10]); in rt_setup_ucontext()
145 err |= __put_user(regs->r12, &gregs[11]); in rt_setup_ucontext()
146 err |= __put_user(regs->r13, &gregs[12]); in rt_setup_ucontext()
147 err |= __put_user(regs->r14, &gregs[13]); in rt_setup_ucontext()
148 err |= __put_user(regs->r15, &gregs[14]); in rt_setup_ucontext()
157 err |= __put_user(regs->ra, &gregs[23]); in rt_setup_ucontext()
160 err |= __put_user(regs->ea, &gregs[27]); in rt_setup_ucontext()
161 err |= __put_user(regs->sp, &gregs[28]); in rt_setup_ucontext()
165 static inline void *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, in get_sigframe() argument
171 usp = regs->sp; in get_sigframe()
181 struct pt_regs *regs) in setup_rt_frame() argument
186 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame()
194 err |= __save_altstack(&frame->uc.uc_stack, regs->sp); in setup_rt_frame()
195 err |= rt_setup_ucontext(&frame->uc, regs); in setup_rt_frame()
203 regs->ra = (unsigned long) (0x1044); in setup_rt_frame()
206 regs->sp = (unsigned long) frame; in setup_rt_frame()
207 regs->r4 = (unsigned long) ksig->sig; in setup_rt_frame()
208 regs->r5 = (unsigned long) &frame->info; in setup_rt_frame()
209 regs->r6 = (unsigned long) &frame->uc; in setup_rt_frame()
210 regs->ea = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
221 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
227 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal()
232 static int do_signal(struct pt_regs *regs) in do_signal() argument
238 current->thread.kregs = regs; in do_signal()
243 if (regs->orig_r2 >= 0) { in do_signal()
244 continue_addr = regs->ea; in do_signal()
246 retval = regs->r2; in do_signal()
260 regs->r2 = regs->orig_r2; in do_signal()
261 regs->r7 = regs->orig_r7; in do_signal()
262 regs->ea = restart_addr; in do_signal()
269 if (unlikely(restart && regs->ea == restart_addr)) { in do_signal()
274 regs->r2 = EINTR; in do_signal()
275 regs->r7 = 1; in do_signal()
276 regs->ea = continue_addr; in do_signal()
279 handle_signal(&ksig, regs); in do_signal()
286 if (unlikely(restart) && regs->ea == restart_addr) { in do_signal()
287 regs->ea = continue_addr; in do_signal()
288 regs->r2 = __NR_restart_syscall; in do_signal()
299 asmlinkage int do_notify_resume(struct pt_regs *regs) in do_notify_resume() argument
306 if (!user_mode(regs)) in do_notify_resume()
310 int restart = do_signal(regs); in do_notify_resume()
321 tracehook_notify_resume(regs); in do_notify_resume()