From patchwork Mon Dec 28 18:59:17 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John David Anglin X-Patchwork-Id: 70026 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.2) with ESMTP id nBSIxOdL014346 for ; Mon, 28 Dec 2009 18:59:24 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751074AbZL1S7Y (ORCPT ); Mon, 28 Dec 2009 13:59:24 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751122AbZL1S7X (ORCPT ); Mon, 28 Dec 2009 13:59:23 -0500 Received: from hiauly1.hia.nrc.ca ([132.246.100.193]:3890 "EHLO hiauly1.hia.nrc.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751074AbZL1S7X (ORCPT ); Mon, 28 Dec 2009 13:59:23 -0500 Received: by hiauly1.hia.nrc.ca (Postfix, from userid 1000) id 7CF6C4EA9; Mon, 28 Dec 2009 13:59:18 -0500 (EST) Date: Mon, 28 Dec 2009 13:59:17 -0500 From: John David Anglin To: "Carlos O'Donell" Cc: dave.anglin@nrc-cnrc.gc.ca, linux-parisc@vger.kernel.org Subject: Re: futex wait failure Message-ID: <20091228185916.GA13912@hiauly1.hia.nrc.ca> Reply-To: John David Anglin References: <20091223221856.3E76F4E77@hiauly1.hia.nrc.ca> <119aab440912231822m4b2a9c30ja5e17404210e7e50@mail.gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <119aab440912231822m4b2a9c30ja5e17404210e7e50@mail.gmail.com> Organization: nrc.ca User-Agent: Mutt/1.5.16 (2007-06-09) Sender: linux-parisc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S @@ -47,18 +47,17 @@ ENTRY(linux_gateway_page) KILL_INSN .endr - /* ADDRESS 0xb0 to 0xb4, lws uses 1 insns for entry */ + /* ADDRESS 0xb0 to 0xb8, lws uses two insns for entry */ /* Light-weight-syscall entry must always be located at 0xb0 */ /* WARNING: Keep this number updated with table size changes */ #define __NR_lws_entries (2) lws_entry: - /* Unconditional branch to lws_start, located on the - same gateway page */ - b,n lws_start + gate lws_start, %r0 /* increase privilege */ + depi 3, 31, 2, %r31 /* Ensure we return into user mode. */ - /* Fill from 0xb4 to 0xe0 */ - .rept 11 + /* Fill from 0xb8 to 0xe0 */ + .rept 10 KILL_INSN .endr @@ -423,9 +422,6 @@ tracesys_sigexit: *********************************************************/ lws_start: - /* Gate and ensure we return to userspace */ - gate .+8, %r0 - depi 3, 31, 2, %r31 /* Ensure we return to userspace */ #ifdef CONFIG_64BIT /* FIXME: If we are a 64-bit kernel just @@ -473,7 +469,7 @@ lws_exit: /* now reset the lowest bit of sp if it was set */ xor %r30,%r1,%r30 #endif - be,n 0(%sr3, %r31) + be,n 0(%sr7, %r31)