signal.c (f9cd49033b349b8be3bb1f01b39eed837853d880) | signal.c (8b7b80b9ebb46dd88fbb94e918297295cf312b59) |
---|---|
1/* 2 * Common signal handling code for both 32 and 64 bits 3 * 4 * Copyright (c) 2007 Benjamin Herrenschmidt, IBM Coproration 5 * Extracted from signal_32.c and signal_64.c 6 * 7 * This file is subject to the terms and conditions of the GNU General 8 * Public License. See the file README.legal in the main directory of 9 * this archive for more details. 10 */ 11 12#include <linux/tracehook.h> 13#include <linux/signal.h> | 1/* 2 * Common signal handling code for both 32 and 64 bits 3 * 4 * Copyright (c) 2007 Benjamin Herrenschmidt, IBM Coproration 5 * Extracted from signal_32.c and signal_64.c 6 * 7 * This file is subject to the terms and conditions of the GNU General 8 * Public License. See the file README.legal in the main directory of 9 * this archive for more details. 10 */ 11 12#include <linux/tracehook.h> 13#include <linux/signal.h> |
14#include <linux/uprobes.h> |
|
14#include <linux/key.h> 15#include <asm/hw_breakpoint.h> 16#include <asm/uaccess.h> 17#include <asm/unistd.h> 18#include <asm/debug.h> 19 20#include "signal.h" 21 --- 130 unchanged lines hidden (view full) --- 152 test_thread_flag(TIF_SINGLESTEP)); 153 } 154 155 return ret; 156} 157 158void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags) 159{ | 15#include <linux/key.h> 16#include <asm/hw_breakpoint.h> 17#include <asm/uaccess.h> 18#include <asm/unistd.h> 19#include <asm/debug.h> 20 21#include "signal.h" 22 --- 130 unchanged lines hidden (view full) --- 153 test_thread_flag(TIF_SINGLESTEP)); 154 } 155 156 return ret; 157} 158 159void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags) 160{ |
161 if (thread_info_flags & _TIF_UPROBE) { 162 clear_thread_flag(TIF_UPROBE); 163 uprobe_notify_resume(regs); 164 } 165 |
|
160 if (thread_info_flags & _TIF_SIGPENDING) 161 do_signal(regs); 162 163 if (thread_info_flags & _TIF_NOTIFY_RESUME) { 164 clear_thread_flag(TIF_NOTIFY_RESUME); 165 tracehook_notify_resume(regs); 166 } 167} 168 169long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, 170 unsigned long r5, unsigned long r6, unsigned long r7, 171 unsigned long r8, struct pt_regs *regs) 172{ 173 return do_sigaltstack(uss, uoss, regs->gpr[1]); 174} | 166 if (thread_info_flags & _TIF_SIGPENDING) 167 do_signal(regs); 168 169 if (thread_info_flags & _TIF_NOTIFY_RESUME) { 170 clear_thread_flag(TIF_NOTIFY_RESUME); 171 tracehook_notify_resume(regs); 172 } 173} 174 175long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, 176 unsigned long r5, unsigned long r6, unsigned long r7, 177 unsigned long r8, struct pt_regs *regs) 178{ 179 return do_sigaltstack(uss, uoss, regs->gpr[1]); 180} |