Lines Matching refs:regs

52 static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf)  in restore_sigframe()  argument
61 err |= __get_user(regs->UCreg_00, &sf->uc.uc_mcontext.regs.UCreg_00); in restore_sigframe()
62 err |= __get_user(regs->UCreg_01, &sf->uc.uc_mcontext.regs.UCreg_01); in restore_sigframe()
63 err |= __get_user(regs->UCreg_02, &sf->uc.uc_mcontext.regs.UCreg_02); in restore_sigframe()
64 err |= __get_user(regs->UCreg_03, &sf->uc.uc_mcontext.regs.UCreg_03); in restore_sigframe()
65 err |= __get_user(regs->UCreg_04, &sf->uc.uc_mcontext.regs.UCreg_04); in restore_sigframe()
66 err |= __get_user(regs->UCreg_05, &sf->uc.uc_mcontext.regs.UCreg_05); in restore_sigframe()
67 err |= __get_user(regs->UCreg_06, &sf->uc.uc_mcontext.regs.UCreg_06); in restore_sigframe()
68 err |= __get_user(regs->UCreg_07, &sf->uc.uc_mcontext.regs.UCreg_07); in restore_sigframe()
69 err |= __get_user(regs->UCreg_08, &sf->uc.uc_mcontext.regs.UCreg_08); in restore_sigframe()
70 err |= __get_user(regs->UCreg_09, &sf->uc.uc_mcontext.regs.UCreg_09); in restore_sigframe()
71 err |= __get_user(regs->UCreg_10, &sf->uc.uc_mcontext.regs.UCreg_10); in restore_sigframe()
72 err |= __get_user(regs->UCreg_11, &sf->uc.uc_mcontext.regs.UCreg_11); in restore_sigframe()
73 err |= __get_user(regs->UCreg_12, &sf->uc.uc_mcontext.regs.UCreg_12); in restore_sigframe()
74 err |= __get_user(regs->UCreg_13, &sf->uc.uc_mcontext.regs.UCreg_13); in restore_sigframe()
75 err |= __get_user(regs->UCreg_14, &sf->uc.uc_mcontext.regs.UCreg_14); in restore_sigframe()
76 err |= __get_user(regs->UCreg_15, &sf->uc.uc_mcontext.regs.UCreg_15); in restore_sigframe()
77 err |= __get_user(regs->UCreg_16, &sf->uc.uc_mcontext.regs.UCreg_16); in restore_sigframe()
78 err |= __get_user(regs->UCreg_17, &sf->uc.uc_mcontext.regs.UCreg_17); in restore_sigframe()
79 err |= __get_user(regs->UCreg_18, &sf->uc.uc_mcontext.regs.UCreg_18); in restore_sigframe()
80 err |= __get_user(regs->UCreg_19, &sf->uc.uc_mcontext.regs.UCreg_19); in restore_sigframe()
81 err |= __get_user(regs->UCreg_20, &sf->uc.uc_mcontext.regs.UCreg_20); in restore_sigframe()
82 err |= __get_user(regs->UCreg_21, &sf->uc.uc_mcontext.regs.UCreg_21); in restore_sigframe()
83 err |= __get_user(regs->UCreg_22, &sf->uc.uc_mcontext.regs.UCreg_22); in restore_sigframe()
84 err |= __get_user(regs->UCreg_23, &sf->uc.uc_mcontext.regs.UCreg_23); in restore_sigframe()
85 err |= __get_user(regs->UCreg_24, &sf->uc.uc_mcontext.regs.UCreg_24); in restore_sigframe()
86 err |= __get_user(regs->UCreg_25, &sf->uc.uc_mcontext.regs.UCreg_25); in restore_sigframe()
87 err |= __get_user(regs->UCreg_26, &sf->uc.uc_mcontext.regs.UCreg_26); in restore_sigframe()
88 err |= __get_user(regs->UCreg_fp, &sf->uc.uc_mcontext.regs.UCreg_fp); in restore_sigframe()
89 err |= __get_user(regs->UCreg_ip, &sf->uc.uc_mcontext.regs.UCreg_ip); in restore_sigframe()
90 err |= __get_user(regs->UCreg_sp, &sf->uc.uc_mcontext.regs.UCreg_sp); in restore_sigframe()
91 err |= __get_user(regs->UCreg_lr, &sf->uc.uc_mcontext.regs.UCreg_lr); in restore_sigframe()
92 err |= __get_user(regs->UCreg_pc, &sf->uc.uc_mcontext.regs.UCreg_pc); in restore_sigframe()
93 err |= __get_user(regs->UCreg_asr, &sf->uc.uc_mcontext.regs.UCreg_asr); in restore_sigframe()
95 err |= !valid_user_regs(regs); in restore_sigframe()
100 asmlinkage int __sys_rt_sigreturn(struct pt_regs *regs) in __sys_rt_sigreturn() argument
112 if (regs->UCreg_sp & 7) in __sys_rt_sigreturn()
115 frame = (struct rt_sigframe __user *)regs->UCreg_sp; in __sys_rt_sigreturn()
120 if (restore_sigframe(regs, &frame->sig)) in __sys_rt_sigreturn()
126 return regs->UCreg_00; in __sys_rt_sigreturn()
133 static int setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, in setup_sigframe() argument
138 err |= __put_user(regs->UCreg_00, &sf->uc.uc_mcontext.regs.UCreg_00); in setup_sigframe()
139 err |= __put_user(regs->UCreg_01, &sf->uc.uc_mcontext.regs.UCreg_01); in setup_sigframe()
140 err |= __put_user(regs->UCreg_02, &sf->uc.uc_mcontext.regs.UCreg_02); in setup_sigframe()
141 err |= __put_user(regs->UCreg_03, &sf->uc.uc_mcontext.regs.UCreg_03); in setup_sigframe()
142 err |= __put_user(regs->UCreg_04, &sf->uc.uc_mcontext.regs.UCreg_04); in setup_sigframe()
143 err |= __put_user(regs->UCreg_05, &sf->uc.uc_mcontext.regs.UCreg_05); in setup_sigframe()
144 err |= __put_user(regs->UCreg_06, &sf->uc.uc_mcontext.regs.UCreg_06); in setup_sigframe()
145 err |= __put_user(regs->UCreg_07, &sf->uc.uc_mcontext.regs.UCreg_07); in setup_sigframe()
146 err |= __put_user(regs->UCreg_08, &sf->uc.uc_mcontext.regs.UCreg_08); in setup_sigframe()
147 err |= __put_user(regs->UCreg_09, &sf->uc.uc_mcontext.regs.UCreg_09); in setup_sigframe()
148 err |= __put_user(regs->UCreg_10, &sf->uc.uc_mcontext.regs.UCreg_10); in setup_sigframe()
149 err |= __put_user(regs->UCreg_11, &sf->uc.uc_mcontext.regs.UCreg_11); in setup_sigframe()
150 err |= __put_user(regs->UCreg_12, &sf->uc.uc_mcontext.regs.UCreg_12); in setup_sigframe()
151 err |= __put_user(regs->UCreg_13, &sf->uc.uc_mcontext.regs.UCreg_13); in setup_sigframe()
152 err |= __put_user(regs->UCreg_14, &sf->uc.uc_mcontext.regs.UCreg_14); in setup_sigframe()
153 err |= __put_user(regs->UCreg_15, &sf->uc.uc_mcontext.regs.UCreg_15); in setup_sigframe()
154 err |= __put_user(regs->UCreg_16, &sf->uc.uc_mcontext.regs.UCreg_16); in setup_sigframe()
155 err |= __put_user(regs->UCreg_17, &sf->uc.uc_mcontext.regs.UCreg_17); in setup_sigframe()
156 err |= __put_user(regs->UCreg_18, &sf->uc.uc_mcontext.regs.UCreg_18); in setup_sigframe()
157 err |= __put_user(regs->UCreg_19, &sf->uc.uc_mcontext.regs.UCreg_19); in setup_sigframe()
158 err |= __put_user(regs->UCreg_20, &sf->uc.uc_mcontext.regs.UCreg_20); in setup_sigframe()
159 err |= __put_user(regs->UCreg_21, &sf->uc.uc_mcontext.regs.UCreg_21); in setup_sigframe()
160 err |= __put_user(regs->UCreg_22, &sf->uc.uc_mcontext.regs.UCreg_22); in setup_sigframe()
161 err |= __put_user(regs->UCreg_23, &sf->uc.uc_mcontext.regs.UCreg_23); in setup_sigframe()
162 err |= __put_user(regs->UCreg_24, &sf->uc.uc_mcontext.regs.UCreg_24); in setup_sigframe()
163 err |= __put_user(regs->UCreg_25, &sf->uc.uc_mcontext.regs.UCreg_25); in setup_sigframe()
164 err |= __put_user(regs->UCreg_26, &sf->uc.uc_mcontext.regs.UCreg_26); in setup_sigframe()
165 err |= __put_user(regs->UCreg_fp, &sf->uc.uc_mcontext.regs.UCreg_fp); in setup_sigframe()
166 err |= __put_user(regs->UCreg_ip, &sf->uc.uc_mcontext.regs.UCreg_ip); in setup_sigframe()
167 err |= __put_user(regs->UCreg_sp, &sf->uc.uc_mcontext.regs.UCreg_sp); in setup_sigframe()
168 err |= __put_user(regs->UCreg_lr, &sf->uc.uc_mcontext.regs.UCreg_lr); in setup_sigframe()
169 err |= __put_user(regs->UCreg_pc, &sf->uc.uc_mcontext.regs.UCreg_pc); in setup_sigframe()
170 err |= __put_user(regs->UCreg_asr, &sf->uc.uc_mcontext.regs.UCreg_asr); in setup_sigframe()
186 struct pt_regs *regs, int framesize) in get_sigframe() argument
188 unsigned long sp = regs->UCreg_sp; in get_sigframe()
211 static int setup_return(struct pt_regs *regs, struct k_sigaction *ka, in setup_return() argument
216 unsigned long asr = regs->UCreg_asr & ~PSR_f; in setup_return()
229 regs->UCreg_00 = usig; in setup_return()
230 regs->UCreg_sp = (unsigned long)frame; in setup_return()
231 regs->UCreg_lr = retcode; in setup_return()
232 regs->UCreg_pc = handler; in setup_return()
233 regs->UCreg_asr = asr; in setup_return()
239 struct pt_regs *regs) in setup_frame() argument
241 struct sigframe __user *frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); in setup_frame()
252 err |= setup_sigframe(frame, regs, set); in setup_frame()
254 err |= setup_return(regs, &ksig->ka, frame->retcode, frame, in setup_frame()
261 struct pt_regs *regs) in setup_rt_frame() argument
264 get_sigframe(&ksig->ka, regs, sizeof(*frame)); in setup_rt_frame()
274 err |= __save_altstack(&frame->sig.uc.uc_stack, regs->UCreg_sp); in setup_rt_frame()
275 err |= setup_sigframe(&frame->sig, regs, set); in setup_rt_frame()
277 err |= setup_return(regs, &ksig->ka, frame->sig.retcode, frame, in setup_rt_frame()
285 regs->UCreg_01 = (unsigned long)&frame->info; in setup_rt_frame()
286 regs->UCreg_02 = (unsigned long)&frame->sig.uc; in setup_rt_frame()
292 static inline void setup_syscall_restart(struct pt_regs *regs) in setup_syscall_restart() argument
294 regs->UCreg_00 = regs->UCreg_ORIG_00; in setup_syscall_restart()
295 regs->UCreg_pc -= 4; in setup_syscall_restart()
301 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs, in handle_signal() argument
313 switch (regs->UCreg_00) { in handle_signal()
316 regs->UCreg_00 = -EINTR; in handle_signal()
320 regs->UCreg_00 = -EINTR; in handle_signal()
325 setup_syscall_restart(regs); in handle_signal()
333 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal()
335 ret = setup_frame(ksig, oldset, regs); in handle_signal()
340 ret |= !valid_user_regs(regs); in handle_signal()
354 static void do_signal(struct pt_regs *regs, int syscall) in do_signal() argument
364 if (!user_mode(regs)) in do_signal()
368 handle_signal(&ksig, regs, syscall); in do_signal()
376 if (regs->UCreg_00 == -ERESTART_RESTARTBLOCK) { in do_signal()
379 regs->UCreg_sp -= 4; in do_signal()
380 usp = (u32 __user *)regs->UCreg_sp; in do_signal()
382 if (put_user(regs->UCreg_pc, usp) == 0) { in do_signal()
383 regs->UCreg_pc = KERN_RESTART_CODE; in do_signal()
385 regs->UCreg_sp += 4; in do_signal()
389 if (regs->UCreg_00 == -ERESTARTNOHAND || in do_signal()
390 regs->UCreg_00 == -ERESTARTSYS || in do_signal()
391 regs->UCreg_00 == -ERESTARTNOINTR) { in do_signal()
392 setup_syscall_restart(regs); in do_signal()
401 asmlinkage void do_notify_resume(struct pt_regs *regs, in do_notify_resume() argument
405 do_signal(regs, syscall); in do_notify_resume()
409 tracehook_notify_resume(regs); in do_notify_resume()