From owner-cvs-all Wed Apr 18 15:37:37 2001 Delivered-To: cvs-all@freebsd.org Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by hub.freebsd.org (Postfix) with ESMTP id EABF737B423; Wed, 18 Apr 2001 15:37:31 -0700 (PDT) (envelope-from bde@zeta.org.au) Received: from bde.zeta.org.au (bde.zeta.org.au [203.2.228.102]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id IAA11137; Thu, 19 Apr 2001 08:37:29 +1000 Date: Thu, 19 Apr 2001 08:36:24 +1000 (EST) From: Bruce Evans X-Sender: bde@besplex.bde.org To: John Baldwin Cc: Doug Rabson , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/alpha/alpha exception.s In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Wed, 18 Apr 2001, John Baldwin wrote: > Ok, I've read more of exception.s and my head feels better, sort of. The > problem with t7 being that we might get an interrupt after we restore the > registers and thus we trash the t7 right before the rti PAL call? Hmmm. > I think we only need to raise the IPL just before we do the bsr to > exception_restore_regs(), so it would only be raised for the length of the > register restore and the call_pal. I wonder if x86 has the same race condition > with %fs. We might need to be doing a 'cli' in doreti_exit just before we pop > %fs. I don't think so. %fs is invalid at various times, including at the start of Xintr* for an interrupt from user mode and at the end of doreti for return to user mode, but it will be loaded in Xintr* if there is another interrupt. OTOH, it is a bug that interrupts sometimes aren't already disabled when doreti_exit is reached. ASTs must be checked for atomically with returning, like they used to be, so that we never return to user mode with an AST pending. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message