From owner-p4-projects@FreeBSD.ORG Mon Nov 10 21:17:32 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BD5FF16A4D0; Mon, 10 Nov 2003 21:17:31 -0800 (PST) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 815C016A4CE for ; Mon, 10 Nov 2003 21:17:31 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 02DCE43FDD for ; Mon, 10 Nov 2003 21:17:31 -0800 (PST) (envelope-from jmallett@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.9/8.12.9) with ESMTP id hAB5HUXJ001410 for ; Mon, 10 Nov 2003 21:17:30 -0800 (PST) (envelope-from jmallett@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.9/8.12.9/Submit) id hAB5HUlZ001407 for perforce@freebsd.org; Mon, 10 Nov 2003 21:17:30 -0800 (PST) (envelope-from jmallett@freebsd.org) Date: Mon, 10 Nov 2003 21:17:30 -0800 (PST) Message-Id: <200311110517.hAB5HUlZ001407@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jmallett@freebsd.org using -f From: Juli Mallett To: Perforce Change Reviews Subject: PERFORCE change 41960 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Nov 2003 05:17:32 -0000 X-List-Received-Date: Tue, 11 Nov 2003 05:17:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=41960 Change 41960 by jmallett@jmallett_dalek on 2003/11/10 21:17:17 Repeat after me: shifting right N bits minus enough to offset is not the same as shifting right N bits and then left an offset. It's important not to get those alignment errors. While here, allow one of the TLBLo's to be invalid. Arrrrrrrrrrrrrgh! Now get to pmap_pinit(). Affected files ... .. //depot/projects/mips/sys/mips/mips/exception.S#9 edit Differences ... ==== //depot/projects/mips/sys/mips/mips/exception.S#9 (text+ko) ==== @@ -180,7 +180,8 @@ * Shift right logical to get a page index, but leaving * enough bits to index an array of 64 bit values. */ - dsrl k0, PAGE_SHIFT - 3 + dsrl k0, PAGE_SHIFT + dsll k0, 3 dla k1, kptmap /* * Find the page table, and index it. @@ -189,27 +190,26 @@ addu k1, k0 ld k0, 0(k1) /* Even PTE. */ andi k0, PG_V /* Check validity. */ + bne k0, zero, 2f /* Valid. */ + nop + ld k0, 8(k1) /* Odd PTE. */ + andi k0, PG_V /* Check validity. */ beq k0, zero, 1f /* Invalid. */ nop /* * Valid PTE. Write the pair. */ - ld k0, 0(k1) /* Even PTE. */ +2: ld k0, 0(k1) /* Even PTE. */ ld k1, 8(k1) /* Odd PTE. */ /* * Write TLB entry. */ dmtc0 k0, MIPS_COP_0_TLB_LO0 - nop - nop dmtc0 k1, MIPS_COP_0_TLB_LO1 - nop - nop tlbwr nop nop nop - nop eret 1: j BadPTE nop