/kernel/linux/linux-6.6/arch/x86/kernel/ |
H A D | signal.c | 45 static inline int is_ia32_compat_frame(struct ksignal *ksig) in is_ia32_compat_frame() argument 48 ksig->ka.sa.sa_flags & SA_IA32_ABI; in is_ia32_compat_frame() 51 static inline int is_ia32_frame(struct ksignal *ksig) in is_ia32_frame() argument 53 return IS_ENABLED(CONFIG_X86_32) || is_ia32_compat_frame(ksig); in is_ia32_frame() 56 static inline int is_x32_frame(struct ksignal *ksig) in is_x32_frame() argument 59 ksig->ka.sa.sa_flags & SA_X32_ABI; in is_x32_frame() 75 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, size_t frame_size, in get_sigframe() argument 78 struct k_sigaction *ka = &ksig->ka; in get_sigframe() 79 int ia32_frame = is_ia32_frame(ksig); in get_sigframe() 208 setup_rt_frame(struct ksignal *ksig, struc argument 227 handle_signal(struct ksignal *ksig, struct pt_regs *regs) handle_signal() argument 307 struct ksignal ksig; arch_do_signal_or_restart() local [all...] |
/kernel/linux/linux-5.10/arch/x86/kernel/ |
H A D | signal.c | 321 __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, in __setup_frame() argument 328 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in __setup_frame() 341 if (ksig->ka.sa.sa_flags & SA_RESTORER) in __setup_frame() 342 restorer = ksig->ka.sa.sa_restorer; in __setup_frame() 359 regs->ip = (unsigned long)ksig->ka.sa.sa_handler; in __setup_frame() 376 static int __setup_rt_frame(int sig, struct ksignal *ksig, in __setup_rt_frame() argument 383 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in __setup_rt_frame() 403 if (ksig->ka.sa.sa_flags & SA_RESTORER) in __setup_rt_frame() 404 restorer = ksig->ka.sa.sa_restorer; in __setup_rt_frame() 419 if (copy_siginfo_to_user(&frame->info, &ksig in __setup_rt_frame() 455 __setup_rt_frame(int sig, struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) __setup_rt_frame() argument 557 x32_setup_rt_frame(struct ksignal *ksig, compat_sigset_t *set, struct pt_regs *regs) x32_setup_rt_frame() argument 682 is_ia32_compat_frame(struct ksignal *ksig) is_ia32_compat_frame() argument 688 is_ia32_frame(struct ksignal *ksig) is_ia32_frame() argument 693 is_x32_frame(struct ksignal *ksig) is_x32_frame() argument 700 setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) setup_rt_frame() argument 723 handle_signal(struct ksignal *ksig, struct pt_regs *regs) handle_signal() argument 803 struct ksignal ksig; arch_do_signal_or_restart() local [all...] |
/kernel/linux/linux-5.10/arch/openrisc/kernel/ |
H A D | signal.c | 131 static inline void __user *get_sigframe(struct ksignal *ksig, in get_sigframe() argument 138 sp = sigsp(sp, ksig); in get_sigframe() 151 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 158 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 164 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 165 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 193 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; /* what we enter NOW */ in setup_rt_frame() 195 regs->gpr[3] = (unsigned long)ksig->sig; /* arg 1: signo */ in setup_rt_frame() 206 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 210 ret = setup_rt_frame(ksig, sigmask_to_sav in handle_signal() 229 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/csky/kernel/ |
H A D | signal.c | 113 static inline void __user *get_sigframe(struct ksignal *ksig, in get_sigframe() argument 128 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 137 setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) in setup_rt_frame() argument 143 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 147 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 168 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 170 regs->a0 = ksig->sig; /* a0: signal number */ in setup_rt_frame() 177 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 182 rseq_signal_deliver(ksig, regs); in handle_signal() 197 if (!(ksig in handle_signal() 217 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/openrisc/kernel/ |
H A D | signal.c | 136 static inline void __user *get_sigframe(struct ksignal *ksig, in get_sigframe() argument 143 sp = sigsp(sp, ksig); in get_sigframe() 156 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 163 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 169 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 170 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 198 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; /* what we enter NOW */ in setup_rt_frame() 200 regs->gpr[3] = (unsigned long)ksig->sig; /* arg 1: signo */ in setup_rt_frame() 211 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 215 ret = setup_rt_frame(ksig, sigmask_to_sav in handle_signal() 234 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/csky/kernel/ |
H A D | signal.c | 113 static inline void __user *get_sigframe(struct ksignal *ksig, in get_sigframe() argument 128 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 137 setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) in setup_rt_frame() argument 142 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 146 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 168 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 170 regs->a0 = ksig->sig; /* a0: signal number */ in setup_rt_frame() 177 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 195 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 208 ret = setup_rt_frame(ksig, oldse in handle_signal() 215 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/um/kernel/ |
H A D | signal.c | 49 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 69 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 82 if ((ksig->ka.sa.sa_flags & SA_ONSTACK) && (sas_ss_flags(sp) == 0)) in handle_signal() 86 if (!(ksig->ka.sa.sa_flags & SA_SIGINFO)) in handle_signal() 87 err = setup_signal_stack_sc(sp, ksig, regs, oldset); in handle_signal() 90 err = setup_signal_stack_si(sp, ksig, regs, oldset); in handle_signal() 92 signal_setup_done(err, ksig, singlestep); in handle_signal() 97 struct ksignal ksig; in do_signal() local 100 while (get_signal(&ksig)) { in do_signal() 103 handle_signal(&ksig, reg in do_signal() [all...] |
/kernel/linux/linux-6.6/arch/um/kernel/ |
H A D | signal.c | 49 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 69 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 82 if ((ksig->ka.sa.sa_flags & SA_ONSTACK) && (sas_ss_flags(sp) == 0)) in handle_signal() 86 if (!(ksig->ka.sa.sa_flags & SA_SIGINFO)) in handle_signal() 87 err = setup_signal_stack_sc(sp, ksig, regs, oldset); in handle_signal() 90 err = setup_signal_stack_si(sp, ksig, regs, oldset); in handle_signal() 92 signal_setup_done(err, ksig, singlestep); in handle_signal() 97 struct ksignal ksig; in do_signal() local 100 while (get_signal(&ksig)) { in do_signal() 103 handle_signal(&ksig, reg in do_signal() [all...] |
/kernel/linux/linux-5.10/arch/sh/kernel/ |
H A D | signal_32.c | 269 static int setup_frame(struct ksignal *ksig, sigset_t *set, in setup_frame() argument 273 int err = 0, sig = ksig->sig; in setup_frame() 275 frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame)); in setup_frame() 288 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_frame() 289 regs->pr = (unsigned long) ksig->ka.sa.sa_restorer; in setup_frame() 319 (struct fdpic_func_descriptor __user *)ksig->ka.sa.sa_handler; in setup_frame() 324 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_frame() 335 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 339 int err = 0, sig = ksig->sig; in setup_rt_frame() 341 frame = get_sigframe(&ksig in setup_rt_frame() 436 handle_signal(struct ksignal *ksig, struct pt_regs *regs, unsigned int save_r0) handle_signal() argument 461 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/sparc/kernel/ |
H A D | signal_32.c | 200 static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) in get_sigframe() argument 212 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 225 static int setup_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_frame() argument 244 get_sigframe(ksig, regs, sigframe_size); in setup_frame() 292 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame() 297 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame() 301 if (ksig->ka.ka_restorer) in setup_frame() 302 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_frame() 320 static int setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_rt_frame() argument 337 get_sigframe(ksig, reg in setup_rt_frame() 418 handle_signal(struct ksignal *ksig, struct pt_regs *regs) handle_signal() argument 457 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/sh/kernel/ |
H A D | signal_32.c | 269 static int setup_frame(struct ksignal *ksig, sigset_t *set, in setup_frame() argument 273 int err = 0, sig = ksig->sig; in setup_frame() 275 frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame)); in setup_frame() 288 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_frame() 289 regs->pr = (unsigned long) ksig->ka.sa.sa_restorer; in setup_frame() 319 (struct fdpic_func_descriptor __user *)ksig->ka.sa.sa_handler; in setup_frame() 324 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_frame() 335 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 339 int err = 0, sig = ksig->sig; in setup_rt_frame() 341 frame = get_sigframe(&ksig in setup_rt_frame() 436 handle_signal(struct ksignal *ksig, struct pt_regs *regs, unsigned int save_r0) handle_signal() argument 461 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/sparc/kernel/ |
H A D | signal_32.c | 200 static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) in get_sigframe() argument 212 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 225 static int setup_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_frame() argument 244 get_sigframe(ksig, regs, sigframe_size); in setup_frame() 292 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame() 297 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame() 301 if (ksig->ka.ka_restorer) in setup_frame() 302 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_frame() 320 static int setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_rt_frame() argument 337 get_sigframe(ksig, reg in setup_rt_frame() 418 handle_signal(struct ksignal *ksig, struct pt_regs *regs) handle_signal() argument 457 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/h8300/kernel/ |
H A D | signal.c | 153 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, size_t frame_size) in get_sigframe() argument 155 return (void __user *)((sigsp(rdusp(), ksig) - frame_size) & -8UL); in get_sigframe() 158 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 165 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 170 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 171 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 184 if (ksig->ka.sa.sa_flags & SA_RESTORER) in setup_rt_frame() 185 ret = (unsigned char *)(ksig->ka.sa.sa_restorer); in setup_rt_frame() 200 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 201 regs->er0 = ksig in setup_rt_frame() 243 handle_signal(struct ksignal *ksig, struct pt_regs *regs) handle_signal() argument 263 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/arm/kernel/ |
H A D | signal.c | 342 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, int framesize) in get_sigframe() argument 344 unsigned long sp = sigsp(regs->ARM_sp, ksig); in get_sigframe() 362 setup_return(struct pt_regs *regs, struct ksignal *ksig, in setup_return() argument 365 unsigned long handler = (unsigned long)ksig->ka.sa.sa_handler; in setup_return() 386 if (ksig->ka.sa.sa_flags & SA_THIRTYTWO) in setup_return() 417 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_return() 418 retcode = (unsigned long)ksig->ka.sa.sa_restorer; in setup_return() 428 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_return() 439 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_return() 476 regs->ARM_r0 = ksig in setup_return() 488 setup_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) setup_frame() argument 509 setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) setup_rt_frame() argument 543 handle_signal(struct ksignal *ksig, struct pt_regs *regs) handle_signal() argument 581 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/arm/kernel/ |
H A D | signal.c | 301 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, int framesize) in get_sigframe() argument 303 unsigned long sp = sigsp(regs->ARM_sp, ksig); in get_sigframe() 321 setup_return(struct pt_regs *regs, struct ksignal *ksig, in setup_return() argument 324 unsigned long handler = (unsigned long)ksig->ka.sa.sa_handler; in setup_return() 345 if (ksig->ka.sa.sa_flags & SA_THIRTYTWO) in setup_return() 376 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_return() 377 retcode = (unsigned long)ksig->ka.sa.sa_restorer; in setup_return() 387 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_return() 398 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_return() 435 regs->ARM_r0 = ksig in setup_return() 447 setup_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) setup_frame() argument 468 setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) setup_rt_frame() argument 502 handle_signal(struct ksignal *ksig, struct pt_regs *regs) handle_signal() argument 540 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/microblaze/kernel/ |
H A D | signal.c | 146 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, size_t frame_size) in get_sigframe() argument 149 unsigned long sp = sigsp(regs->r1, ksig); in get_sigframe() 154 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 158 int err = 0, sig = ksig->sig; in setup_rt_frame() 165 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 170 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 171 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 226 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 266 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 272 ret = setup_rt_frame(ksig, oldse in handle_signal() 288 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/riscv/kernel/ |
H A D | signal.c | 154 static inline void __user *get_sigframe(struct ksignal *ksig, in get_sigframe() argument 169 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 177 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 184 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 188 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 226 regs->epc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 228 regs->a0 = ksig->sig; /* a0: signal number */ in setup_rt_frame() 234 current->comm, task_pid_nr(current), ksig->sig, in setup_rt_frame() 241 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 258 if (!(ksig in handle_signal() 278 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/microblaze/kernel/ |
H A D | signal.c | 146 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, size_t frame_size) in get_sigframe() argument 149 unsigned long sp = sigsp(regs->r1, ksig); in get_sigframe() 154 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 158 int err = 0, sig = ksig->sig; in setup_rt_frame() 163 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 168 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 169 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 220 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 260 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 266 ret = setup_rt_frame(ksig, oldse in handle_signal() 282 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/x86/include/asm/ |
H A D | sighandling.h | 19 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, size_t frame_size, 22 int ia32_setup_frame(struct ksignal *ksig, struct pt_regs *regs); 23 int ia32_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs); 24 int x64_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs); 25 int x32_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs);
|
/kernel/linux/linux-5.10/arch/hexagon/kernel/ |
H A D | signal.c | 28 static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, in get_sigframe() argument 31 unsigned long sp = sigsp(regs->r29, ksig); in get_sigframe() 96 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 103 frame = get_sigframe(ksig, regs, sizeof(struct rt_sigframe)); in setup_rt_frame() 108 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in setup_rt_frame() 125 | (unsigned long long)ksig->sig; in setup_rt_frame() 129 pt_set_elr(regs, (unsigned long)ksig->ka.sa.sa_handler); in setup_rt_frame() 137 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 154 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 174 ret = setup_rt_frame(ksig, sigmask_to_sav in handle_signal() 184 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/c6x/kernel/ |
H A D | signal.c | 128 static inline void __user *get_sigframe(struct ksignal *ksig, in get_sigframe() argument 132 unsigned long sp = sigsp(regs->sp, ksig); in get_sigframe() 141 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 148 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 155 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 193 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame() 196 regs->a4 = ksig->sig; in setup_rt_frame() 236 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs, in handle_signal() argument 251 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 264 ret = setup_rt_frame(ksig, sigmask_to_sav in handle_signal() 273 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/hexagon/kernel/ |
H A D | signal.c | 27 static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, in get_sigframe() argument 30 unsigned long sp = sigsp(regs->r29, ksig); in get_sigframe() 95 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 102 frame = get_sigframe(ksig, regs, sizeof(struct rt_sigframe)); in setup_rt_frame() 107 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in setup_rt_frame() 124 | (unsigned long long)ksig->sig; in setup_rt_frame() 128 pt_set_elr(regs, (unsigned long)ksig->ka.sa.sa_handler); in setup_rt_frame() 136 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 153 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 173 ret = setup_rt_frame(ksig, sigmask_to_sav in handle_signal() 183 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-5.10/arch/s390/kernel/ |
H A D | signal.c | 369 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 388 frame = get_sigframe(&ksig->ka, regs, frame_size); in setup_rt_frame() 398 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_rt_frame() 399 restorer = (unsigned long) ksig->ka.sa.sa_restorer; in setup_rt_frame() 408 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in setup_rt_frame() 430 regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame() 432 regs->gprs[2] = ksig->sig; in setup_rt_frame() 439 static void handle_signal(struct ksignal *ksig, sigset_t *oldset, in handle_signal() argument 445 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal() 446 ret = setup_rt_frame(ksig, oldse in handle_signal() 464 struct ksignal ksig; do_signal() local [all...] |
/kernel/linux/linux-6.6/arch/s390/kernel/ |
H A D | signal.c | 365 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 384 frame = get_sigframe(&ksig->ka, regs, frame_size); in setup_rt_frame() 394 if (ksig->ka.sa.sa_flags & SA_RESTORER) in setup_rt_frame() 395 restorer = (unsigned long) ksig->ka.sa.sa_restorer; in setup_rt_frame() 400 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in setup_rt_frame() 422 regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame() 424 regs->gprs[2] = ksig->sig; in setup_rt_frame() 431 static void handle_signal(struct ksignal *ksig, sigset_t *oldset, in handle_signal() argument 437 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal() 438 ret = setup_rt_frame(ksig, oldse in handle_signal() 457 struct ksignal ksig; arch_do_signal_or_restart() local [all...] |
/kernel/linux/linux-5.10/arch/powerpc/kernel/ |
H A D | signal.c | 177 void __user *get_sigframe(struct ksignal *ksig, unsigned long sp, in get_sigframe() argument 184 oldsp = sigsp(oldsp, ksig); in get_sigframe() 262 struct ksignal ksig = { .sig = 0 }; in do_signal() local 267 get_signal(&ksig); in do_signal() 270 check_syscall_restart(tsk->thread.regs, &ksig.ka, ksig.sig > 0); in do_signal() 272 if (ksig.sig <= 0) { in do_signal() 296 rseq_signal_deliver(&ksig, tsk->thread.regs); in do_signal() 299 if (ksig.ka.sa.sa_flags & SA_SIGINFO) in do_signal() 300 ret = handle_rt_signal32(&ksig, oldse in do_signal() [all...] |