nds32: add support for TIF_NOTIFY_SIGNAL
authorJens Axboe <axboe@kernel.dk>
Fri, 9 Oct 2020 21:18:43 +0000 (15:18 -0600)
committerJens Axboe <axboe@kernel.dk>
Sat, 12 Dec 2020 16:17:38 +0000 (09:17 -0700)
Wire up TIF_NOTIFY_SIGNAL handling for nds32.

Cc: Nick Hu <nickhu@andestech.com>
Cc: Greentime Hu <green.hu@gmail.com>
Cc: Vincent Chen <deanbo422@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
arch/nds32/include/asm/thread_info.h
arch/nds32/kernel/ex-exit.S
arch/nds32/kernel/signal.c

index c135111ec44ebb1519c13b616edbda6d85f4f8d3..d3967ad184f03361599f357dd2510f7f92366a9f 100644 (file)
@@ -48,6 +48,7 @@ struct thread_info {
 #define TIF_NEED_RESCHED       2
 #define TIF_SINGLESTEP         3
 #define TIF_NOTIFY_RESUME      4       /* callback before returning to user */
+#define TIF_NOTIFY_SIGNAL      5       /* signal notifications exist */
 #define TIF_SYSCALL_TRACE      8
 #define TIF_POLLING_NRFLAG     17
 #define TIF_MEMDIE             18
@@ -57,6 +58,7 @@ struct thread_info {
 #define _TIF_SIGPENDING                (1 << TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED      (1 << TIF_NEED_RESCHED)
 #define _TIF_NOTIFY_RESUME     (1 << TIF_NOTIFY_RESUME)
+#define _TIF_NOTIFY_SIGNAL     (1 << TIF_NOTIFY_SIGNAL)
 #define _TIF_SINGLESTEP                (1 << TIF_SINGLESTEP)
 #define _TIF_SYSCALL_TRACE     (1 << TIF_SYSCALL_TRACE)
 #define _TIF_POLLING_NRFLAG    (1 << TIF_POLLING_NRFLAG)
index 6a2966c2d8c8f4e2af2dad5ede211de8c8f046fd..b30699911b81ecf63aa26bf2b18a9ef3da03af79 100644 (file)
@@ -120,7 +120,7 @@ work_pending:
        andi    $p1, $r1, #_TIF_NEED_RESCHED
        bnez    $p1, work_resched
 
-       andi    $p1, $r1, #_TIF_SIGPENDING|#_TIF_NOTIFY_RESUME
+       andi    $p1, $r1, #_TIF_SIGPENDING|#_TIF_NOTIFY_RESUME|#_TIF_NOTIFY_SIGNAL
        beqz    $p1, no_work_pending
 
        move    $r0, $sp                        ! 'regs'
index 2acb94812af987882ead1c1ab72c9a99e87d4e75..7e3ca430a2233c7cd530fc7e7192a44f811f4770 100644 (file)
@@ -376,7 +376,7 @@ static void do_signal(struct pt_regs *regs)
 asmlinkage void
 do_notify_resume(struct pt_regs *regs, unsigned int thread_flags)
 {
-       if (thread_flags & _TIF_SIGPENDING)
+       if (thread_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL))
                do_signal(regs);
 
        if (thread_flags & _TIF_NOTIFY_RESUME)