Lines Matching refs:ksig
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->info)) in __setup_rt_frame()
424 regs->ip = (unsigned long)ksig->ka.sa.sa_handler; in __setup_rt_frame()
455 static int __setup_rt_frame(int sig, struct ksignal *ksig, in __setup_rt_frame() argument
463 if (!(ksig->ka.sa.sa_flags & SA_RESTORER)) in __setup_rt_frame()
466 frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp); in __setup_rt_frame()
479 unsafe_put_user(ksig->ka.sa.sa_restorer, &frame->pretcode, Efault); in __setup_rt_frame()
484 if (ksig->ka.sa.sa_flags & SA_SIGINFO) { in __setup_rt_frame()
485 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in __setup_rt_frame()
498 regs->ip = (unsigned long) ksig->ka.sa.sa_handler; in __setup_rt_frame()
557 static int x32_setup_rt_frame(struct ksignal *ksig, in x32_setup_rt_frame() argument
567 if (!(ksig->ka.sa.sa_flags & SA_RESTORER)) in x32_setup_rt_frame()
570 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in x32_setup_rt_frame()
582 restorer = ksig->ka.sa.sa_restorer; in x32_setup_rt_frame()
588 if (ksig->ka.sa.sa_flags & SA_SIGINFO) { in x32_setup_rt_frame()
589 if (x32_copy_siginfo_to_user(&frame->info, &ksig->info)) in x32_setup_rt_frame()
595 regs->ip = (unsigned long) ksig->ka.sa.sa_handler; in x32_setup_rt_frame()
598 regs->di = ksig->sig; in x32_setup_rt_frame()
682 static inline int is_ia32_compat_frame(struct ksignal *ksig) in is_ia32_compat_frame() argument
685 ksig->ka.sa.sa_flags & SA_IA32_ABI; in is_ia32_compat_frame()
688 static inline int is_ia32_frame(struct ksignal *ksig) in is_ia32_frame() argument
690 return IS_ENABLED(CONFIG_X86_32) || is_ia32_compat_frame(ksig); in is_ia32_frame()
693 static inline int is_x32_frame(struct ksignal *ksig) in is_x32_frame() argument
696 ksig->ka.sa.sa_flags & SA_X32_ABI; in is_x32_frame()
700 setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) in setup_rt_frame() argument
702 int usig = ksig->sig; in setup_rt_frame()
707 rseq_signal_deliver(ksig, regs); in setup_rt_frame()
710 if (is_ia32_frame(ksig)) { in setup_rt_frame()
711 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame()
712 return ia32_setup_rt_frame(usig, ksig, cset, regs); in setup_rt_frame()
714 return ia32_setup_frame(usig, ksig, cset, regs); in setup_rt_frame()
715 } else if (is_x32_frame(ksig)) { in setup_rt_frame()
716 return x32_setup_rt_frame(ksig, cset, regs); in setup_rt_frame()
718 return __setup_rt_frame(ksig->sig, ksig, set, regs); in setup_rt_frame()
723 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
741 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal()
762 failed = (setup_rt_frame(ksig, regs) < 0); in handle_signal()
780 signal_setup_done(failed, ksig, stepping); in handle_signal()
803 struct ksignal ksig; in arch_do_signal_or_restart() local
805 if (has_signal && get_signal(&ksig)) { in arch_do_signal_or_restart()
807 handle_signal(&ksig, regs); in arch_do_signal_or_restart()