mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	arc: add support for TIF_NOTIFY_SIGNAL
Wire up TIF_NOTIFY_SIGNAL handling for arc. Cc: linux-snps-arc@lists.infradead.org Acked-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									88f93de1de
								
							
						
					
					
						commit
						53855e1258
					
				
					 3 changed files with 6 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -79,6 +79,7 @@ static inline __attribute_const__ struct thread_info *current_thread_info(void)
 | 
			
		|||
#define TIF_SIGPENDING		2	/* signal pending */
 | 
			
		||||
#define TIF_NEED_RESCHED	3	/* rescheduling necessary */
 | 
			
		||||
#define TIF_SYSCALL_AUDIT	4	/* syscall auditing active */
 | 
			
		||||
#define TIF_NOTIFY_SIGNAL	5	/* signal notifications exist */
 | 
			
		||||
#define TIF_SYSCALL_TRACE	15	/* syscall trace active */
 | 
			
		||||
 | 
			
		||||
/* true if poll_idle() is polling TIF_NEED_RESCHED */
 | 
			
		||||
| 
						 | 
				
			
			@ -89,11 +90,12 @@ static inline __attribute_const__ struct thread_info *current_thread_info(void)
 | 
			
		|||
#define _TIF_SIGPENDING		(1<<TIF_SIGPENDING)
 | 
			
		||||
#define _TIF_NEED_RESCHED	(1<<TIF_NEED_RESCHED)
 | 
			
		||||
#define _TIF_SYSCALL_AUDIT	(1<<TIF_SYSCALL_AUDIT)
 | 
			
		||||
#define _TIF_NOTIFY_SIGNAL	(1<<TIF_NOTIFY_SIGNAL)
 | 
			
		||||
#define _TIF_MEMDIE		(1<<TIF_MEMDIE)
 | 
			
		||||
 | 
			
		||||
/* work to do on interrupt/exception return */
 | 
			
		||||
#define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
 | 
			
		||||
				 _TIF_NOTIFY_RESUME)
 | 
			
		||||
				 _TIF_NOTIFY_RESUME | _TIF_NOTIFY_SIGNAL)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * _TIF_ALLWORK_MASK includes SYSCALL_TRACE, but we don't need it.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -307,7 +307,8 @@ resume_user_mode_begin:
 | 
			
		|||
	mov r0, sp	; pt_regs for arg to do_signal()/do_notify_resume()
 | 
			
		||||
 | 
			
		||||
	GET_CURR_THR_INFO_FLAGS   r9
 | 
			
		||||
	bbit0  r9, TIF_SIGPENDING, .Lchk_notify_resume
 | 
			
		||||
	and.f  0,  r9, TIF_SIGPENDING|TIF_NOTIFY_SIGNAL
 | 
			
		||||
	bz .Lchk_notify_resume
 | 
			
		||||
 | 
			
		||||
	; Normal Trap/IRQ entry only saves Scratch (caller-saved) regs
 | 
			
		||||
	; in pt_reg since the "C" ABI (kernel code) will automatically
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -362,7 +362,7 @@ void do_signal(struct pt_regs *regs)
 | 
			
		|||
 | 
			
		||||
	restart_scall = in_syscall(regs) && syscall_restartable(regs);
 | 
			
		||||
 | 
			
		||||
	if (get_signal(&ksig)) {
 | 
			
		||||
	if (test_thread_flag(TIF_SIGPENDING) && get_signal(&ksig)) {
 | 
			
		||||
		if (restart_scall) {
 | 
			
		||||
			arc_restart_syscall(&ksig.ka, regs);
 | 
			
		||||
			syscall_wont_restart(regs);	/* No more restarts */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue