Lines Matching refs:regs

55 static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf)  in restore_sigframe()  argument
64 err |= __get_user(regs->UCreg_00, &sf->uc.uc_mcontext.regs.UCreg_00); in restore_sigframe()
65 err |= __get_user(regs->UCreg_01, &sf->uc.uc_mcontext.regs.UCreg_01); in restore_sigframe()
66 err |= __get_user(regs->UCreg_02, &sf->uc.uc_mcontext.regs.UCreg_02); in restore_sigframe()
67 err |= __get_user(regs->UCreg_03, &sf->uc.uc_mcontext.regs.UCreg_03); in restore_sigframe()
68 err |= __get_user(regs->UCreg_04, &sf->uc.uc_mcontext.regs.UCreg_04); in restore_sigframe()
69 err |= __get_user(regs->UCreg_05, &sf->uc.uc_mcontext.regs.UCreg_05); in restore_sigframe()
70 err |= __get_user(regs->UCreg_06, &sf->uc.uc_mcontext.regs.UCreg_06); in restore_sigframe()
71 err |= __get_user(regs->UCreg_07, &sf->uc.uc_mcontext.regs.UCreg_07); in restore_sigframe()
72 err |= __get_user(regs->UCreg_08, &sf->uc.uc_mcontext.regs.UCreg_08); in restore_sigframe()
73 err |= __get_user(regs->UCreg_09, &sf->uc.uc_mcontext.regs.UCreg_09); in restore_sigframe()
74 err |= __get_user(regs->UCreg_10, &sf->uc.uc_mcontext.regs.UCreg_10); in restore_sigframe()
75 err |= __get_user(regs->UCreg_11, &sf->uc.uc_mcontext.regs.UCreg_11); in restore_sigframe()
76 err |= __get_user(regs->UCreg_12, &sf->uc.uc_mcontext.regs.UCreg_12); in restore_sigframe()
77 err |= __get_user(regs->UCreg_13, &sf->uc.uc_mcontext.regs.UCreg_13); in restore_sigframe()
78 err |= __get_user(regs->UCreg_14, &sf->uc.uc_mcontext.regs.UCreg_14); in restore_sigframe()
79 err |= __get_user(regs->UCreg_15, &sf->uc.uc_mcontext.regs.UCreg_15); in restore_sigframe()
80 err |= __get_user(regs->UCreg_16, &sf->uc.uc_mcontext.regs.UCreg_16); in restore_sigframe()
81 err |= __get_user(regs->UCreg_17, &sf->uc.uc_mcontext.regs.UCreg_17); in restore_sigframe()
82 err |= __get_user(regs->UCreg_18, &sf->uc.uc_mcontext.regs.UCreg_18); in restore_sigframe()
83 err |= __get_user(regs->UCreg_19, &sf->uc.uc_mcontext.regs.UCreg_19); in restore_sigframe()
84 err |= __get_user(regs->UCreg_20, &sf->uc.uc_mcontext.regs.UCreg_20); in restore_sigframe()
85 err |= __get_user(regs->UCreg_21, &sf->uc.uc_mcontext.regs.UCreg_21); in restore_sigframe()
86 err |= __get_user(regs->UCreg_22, &sf->uc.uc_mcontext.regs.UCreg_22); in restore_sigframe()
87 err |= __get_user(regs->UCreg_23, &sf->uc.uc_mcontext.regs.UCreg_23); in restore_sigframe()
88 err |= __get_user(regs->UCreg_24, &sf->uc.uc_mcontext.regs.UCreg_24); in restore_sigframe()
89 err |= __get_user(regs->UCreg_25, &sf->uc.uc_mcontext.regs.UCreg_25); in restore_sigframe()
90 err |= __get_user(regs->UCreg_26, &sf->uc.uc_mcontext.regs.UCreg_26); in restore_sigframe()
91 err |= __get_user(regs->UCreg_fp, &sf->uc.uc_mcontext.regs.UCreg_fp); in restore_sigframe()
92 err |= __get_user(regs->UCreg_ip, &sf->uc.uc_mcontext.regs.UCreg_ip); in restore_sigframe()
93 err |= __get_user(regs->UCreg_sp, &sf->uc.uc_mcontext.regs.UCreg_sp); in restore_sigframe()
94 err |= __get_user(regs->UCreg_lr, &sf->uc.uc_mcontext.regs.UCreg_lr); in restore_sigframe()
95 err |= __get_user(regs->UCreg_pc, &sf->uc.uc_mcontext.regs.UCreg_pc); in restore_sigframe()
96 err |= __get_user(regs->UCreg_asr, &sf->uc.uc_mcontext.regs.UCreg_asr); in restore_sigframe()
98 err |= !valid_user_regs(regs); in restore_sigframe()
103 asmlinkage int __sys_rt_sigreturn(struct pt_regs *regs) in __sys_rt_sigreturn() argument
115 if (regs->UCreg_sp & 7) in __sys_rt_sigreturn()
118 frame = (struct rt_sigframe __user *)regs->UCreg_sp; in __sys_rt_sigreturn()
123 if (restore_sigframe(regs, &frame->sig)) in __sys_rt_sigreturn()
129 return regs->UCreg_00; in __sys_rt_sigreturn()
136 static int setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, in setup_sigframe() argument
141 err |= __put_user(regs->UCreg_00, &sf->uc.uc_mcontext.regs.UCreg_00); in setup_sigframe()
142 err |= __put_user(regs->UCreg_01, &sf->uc.uc_mcontext.regs.UCreg_01); in setup_sigframe()
143 err |= __put_user(regs->UCreg_02, &sf->uc.uc_mcontext.regs.UCreg_02); in setup_sigframe()
144 err |= __put_user(regs->UCreg_03, &sf->uc.uc_mcontext.regs.UCreg_03); in setup_sigframe()
145 err |= __put_user(regs->UCreg_04, &sf->uc.uc_mcontext.regs.UCreg_04); in setup_sigframe()
146 err |= __put_user(regs->UCreg_05, &sf->uc.uc_mcontext.regs.UCreg_05); in setup_sigframe()
147 err |= __put_user(regs->UCreg_06, &sf->uc.uc_mcontext.regs.UCreg_06); in setup_sigframe()
148 err |= __put_user(regs->UCreg_07, &sf->uc.uc_mcontext.regs.UCreg_07); in setup_sigframe()
149 err |= __put_user(regs->UCreg_08, &sf->uc.uc_mcontext.regs.UCreg_08); in setup_sigframe()
150 err |= __put_user(regs->UCreg_09, &sf->uc.uc_mcontext.regs.UCreg_09); in setup_sigframe()
151 err |= __put_user(regs->UCreg_10, &sf->uc.uc_mcontext.regs.UCreg_10); in setup_sigframe()
152 err |= __put_user(regs->UCreg_11, &sf->uc.uc_mcontext.regs.UCreg_11); in setup_sigframe()
153 err |= __put_user(regs->UCreg_12, &sf->uc.uc_mcontext.regs.UCreg_12); in setup_sigframe()
154 err |= __put_user(regs->UCreg_13, &sf->uc.uc_mcontext.regs.UCreg_13); in setup_sigframe()
155 err |= __put_user(regs->UCreg_14, &sf->uc.uc_mcontext.regs.UCreg_14); in setup_sigframe()
156 err |= __put_user(regs->UCreg_15, &sf->uc.uc_mcontext.regs.UCreg_15); in setup_sigframe()
157 err |= __put_user(regs->UCreg_16, &sf->uc.uc_mcontext.regs.UCreg_16); in setup_sigframe()
158 err |= __put_user(regs->UCreg_17, &sf->uc.uc_mcontext.regs.UCreg_17); in setup_sigframe()
159 err |= __put_user(regs->UCreg_18, &sf->uc.uc_mcontext.regs.UCreg_18); in setup_sigframe()
160 err |= __put_user(regs->UCreg_19, &sf->uc.uc_mcontext.regs.UCreg_19); in setup_sigframe()
161 err |= __put_user(regs->UCreg_20, &sf->uc.uc_mcontext.regs.UCreg_20); in setup_sigframe()
162 err |= __put_user(regs->UCreg_21, &sf->uc.uc_mcontext.regs.UCreg_21); in setup_sigframe()
163 err |= __put_user(regs->UCreg_22, &sf->uc.uc_mcontext.regs.UCreg_22); in setup_sigframe()
164 err |= __put_user(regs->UCreg_23, &sf->uc.uc_mcontext.regs.UCreg_23); in setup_sigframe()
165 err |= __put_user(regs->UCreg_24, &sf->uc.uc_mcontext.regs.UCreg_24); in setup_sigframe()
166 err |= __put_user(regs->UCreg_25, &sf->uc.uc_mcontext.regs.UCreg_25); in setup_sigframe()
167 err |= __put_user(regs->UCreg_26, &sf->uc.uc_mcontext.regs.UCreg_26); in setup_sigframe()
168 err |= __put_user(regs->UCreg_fp, &sf->uc.uc_mcontext.regs.UCreg_fp); in setup_sigframe()
169 err |= __put_user(regs->UCreg_ip, &sf->uc.uc_mcontext.regs.UCreg_ip); in setup_sigframe()
170 err |= __put_user(regs->UCreg_sp, &sf->uc.uc_mcontext.regs.UCreg_sp); in setup_sigframe()
171 err |= __put_user(regs->UCreg_lr, &sf->uc.uc_mcontext.regs.UCreg_lr); in setup_sigframe()
172 err |= __put_user(regs->UCreg_pc, &sf->uc.uc_mcontext.regs.UCreg_pc); in setup_sigframe()
173 err |= __put_user(regs->UCreg_asr, &sf->uc.uc_mcontext.regs.UCreg_asr); in setup_sigframe()
189 struct pt_regs *regs, int framesize) in get_sigframe() argument
191 unsigned long sp = regs->UCreg_sp; in get_sigframe()
214 static int setup_return(struct pt_regs *regs, struct k_sigaction *ka, in setup_return() argument
219 unsigned long asr = regs->UCreg_asr & ~PSR_f; in setup_return()
232 regs->UCreg_00 = usig; in setup_return()
233 regs->UCreg_sp = (unsigned long)frame; in setup_return()
234 regs->UCreg_lr = retcode; in setup_return()
235 regs->UCreg_pc = handler; in setup_return()
236 regs->UCreg_asr = asr; in setup_return()
242 struct pt_regs *regs) in setup_frame() argument
244 struct sigframe __user *frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); in setup_frame()
255 err |= setup_sigframe(frame, regs, set); in setup_frame()
257 err |= setup_return(regs, &ksig->ka, frame->retcode, frame, in setup_frame()
264 struct pt_regs *regs) in setup_rt_frame() argument
267 get_sigframe(&ksig->ka, regs, sizeof(*frame)); in setup_rt_frame()
277 err |= __save_altstack(&frame->sig.uc.uc_stack, regs->UCreg_sp); in setup_rt_frame()
278 err |= setup_sigframe(&frame->sig, regs, set); in setup_rt_frame()
280 err |= setup_return(regs, &ksig->ka, frame->sig.retcode, frame, in setup_rt_frame()
288 regs->UCreg_01 = (unsigned long)&frame->info; in setup_rt_frame()
289 regs->UCreg_02 = (unsigned long)&frame->sig.uc; in setup_rt_frame()
295 static inline void setup_syscall_restart(struct pt_regs *regs) in setup_syscall_restart() argument
297 regs->UCreg_00 = regs->UCreg_ORIG_00; in setup_syscall_restart()
298 regs->UCreg_pc -= 4; in setup_syscall_restart()
304 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs, in handle_signal() argument
316 switch (regs->UCreg_00) { in handle_signal()
319 regs->UCreg_00 = -EINTR; in handle_signal()
323 regs->UCreg_00 = -EINTR; in handle_signal()
328 setup_syscall_restart(regs); in handle_signal()
336 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal()
338 ret = setup_frame(ksig, oldset, regs); in handle_signal()
343 ret |= !valid_user_regs(regs); in handle_signal()
357 static void do_signal(struct pt_regs *regs, int syscall) in do_signal() argument
367 if (!user_mode(regs)) in do_signal()
371 handle_signal(&ksig, regs, syscall); in do_signal()
379 if (regs->UCreg_00 == -ERESTART_RESTARTBLOCK) { in do_signal()
382 regs->UCreg_sp -= 4; in do_signal()
383 usp = (u32 __user *)regs->UCreg_sp; in do_signal()
385 if (put_user(regs->UCreg_pc, usp) == 0) { in do_signal()
386 regs->UCreg_pc = KERN_RESTART_CODE; in do_signal()
388 regs->UCreg_sp += 4; in do_signal()
392 if (regs->UCreg_00 == -ERESTARTNOHAND || in do_signal()
393 regs->UCreg_00 == -ERESTARTSYS || in do_signal()
394 regs->UCreg_00 == -ERESTARTNOINTR) { in do_signal()
395 setup_syscall_restart(regs); in do_signal()
404 asmlinkage void do_notify_resume(struct pt_regs *regs, in do_notify_resume() argument
408 do_signal(regs, syscall); in do_notify_resume()
412 tracehook_notify_resume(regs); in do_notify_resume()