From patchwork Sat Jul 25 06:25:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chung-Lin Tang X-Patchwork-Id: 7846 Received: (qmail 45522 invoked by alias); 25 Jul 2015 06:25:51 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 45509 invoked by uid 89); 25 Jul 2015 06:25:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com To: GNU C Library From: Chung-Lin Tang Subject: [PATCH, nios2] Fix setcontext/swapcontext signal mask setting Message-ID: <55B32BF6.3070404@codesourcery.com> Date: Sat, 25 Jul 2015 14:25:58 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 It appears that I got the order of arguments to rt_sigprocmask wrong for setting the signal mask. Discovered only after the tst-setcontext2 testcase was added. Tested and committed, will probably backport to 2.21 later. Chung-Lin 2015-07-25 Chung-Lin Tang * sysdeps/unix/sysv/linux/nios2/setcontext.S (__setcontext): Fix order of arguments to the rt_sigprocmask syscall. * sysdeps/unix/sysv/linux/nios2/swapcontext.S (__swapcontext): Likewise. diff --git a/sysdeps/unix/sysv/linux/nios2/setcontext.S b/sysdeps/unix/sysv/linux/nios2/setcontext.S index f40b733..8d899d9 100644 --- a/sysdeps/unix/sysv/linux/nios2/setcontext.S +++ b/sysdeps/unix/sysv/linux/nios2/setcontext.S @@ -29,10 +29,10 @@ ENTRY(__setcontext) mov r10, r4 /* Restore signal mask. */ - /* rt_sigprocmask (SIG_SETMASK, NULL, &ucp->uc_sigmask, _NSIG8) */ + /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */ movi r7, _NSIG8 - addi r6, r4, UCONTEXT_SIGMASK - mov r5, zero + addi r5, r4, UCONTEXT_SIGMASK + mov r6, zero movi r4, SIG_SETMASK movi r2, SYS_ify (rt_sigprocmask) trap diff --git a/sysdeps/unix/sysv/linux/nios2/swapcontext.S b/sysdeps/unix/sysv/linux/nios2/swapcontext.S index c2c321d..cfbcf8d 100644 --- a/sysdeps/unix/sysv/linux/nios2/swapcontext.S +++ b/sysdeps/unix/sysv/linux/nios2/swapcontext.S @@ -68,10 +68,10 @@ ENTRY(__swapcontext) bne r5, r6, .Lsigreturn /* Restore signal mask. */ - /* rt_sigprocmask (SIG_SETMASK, NULL, &ucp->uc_sigmask, _NSIG8) */ + /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */ movi r7, _NSIG8 - addi r6, r10, UCONTEXT_SIGMASK - mov r5, zero + addi r5, r10, UCONTEXT_SIGMASK + mov r6, zero movi r4, SIG_SETMASK movi r2, SYS_ify (rt_sigprocmask) trap