From owner-p4-projects@FreeBSD.ORG Fri Mar 7 14:19:22 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CFD2610657CE; Fri, 7 Mar 2008 14:19:21 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C7BD1065742 for ; Fri, 7 Mar 2008 14:19:21 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id 780AA8FC17 for ; Fri, 7 Mar 2008 14:19:21 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from zion.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by elvis.mu.org (Postfix) with ESMTP id 1714C1A4D8D; Fri, 7 Mar 2008 06:18:51 -0800 (PST) From: John Baldwin To: "Randall R. Stewart" Date: Fri, 7 Mar 2008 09:17:37 -0500 User-Agent: KMail/1.9.7 References: <200803061950.m26JoDXx034770@repoman.freebsd.org> In-Reply-To: <200803061950.m26JoDXx034770@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200803070917.37450.jhb@freebsd.org> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 137019 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Mar 2008 14:19:22 -0000 On Thursday 06 March 2008 02:50:13 pm Randall R. Stewart wrote: > http://perforce.freebsd.org/chv.cgi?CH=137019 > > Change 137019 by rrs@rrs-mips2-jnpr on 2008/03/06 19:49:46 > > The ast was in the wrong place causing all kinds of pain. You need to disable interrupts before checking for ASTPENDING though. Something like this: 1: disable interrupts check TDF_NEEDRESCHED | TDF_ASTPENDING if not set, branch to 2f enable interrupts call ast branch 1b 2: set exception level > > Affected files ... > > .. //depot/projects/mips2-jnpr/src/sys/mips/mips/exception.S#21 edit > > Differences ... > > ==== //depot/projects/mips2-jnpr/src/sys/mips/mips/exception.S#21 (text+ko) > ==== > > @@ -392,12 +392,6 @@ > jalr k0 > sw a3, STAND_RA_OFFSET + KERN_REG_SIZE(sp) # for debugging > > -/* .set at*/ > - > -/* Should I DO the AST stuff here? */ > - > -/* .set noat*/ > - > RESTORE_CPU # v0 contains the return address. > sync > eret > @@ -497,14 +491,14 @@ > * Restore user registers and return. > * First disable interrupts and set exeption level. > */ > + DO_AST > + > mtc0 zero, COP_0_STATUS_REG # disable int > ITLBNOPFIX > li v0, SR_EXL > mtc0 v0, COP_0_STATUS_REG # set exeption level > ITLBNOPFIX > > - DO_AST > - > /* > * The use of k1 for storing the PCB pointer must be done only > * after interrupts are disabled. Otherwise it will get overwritten -- John Baldwin