From owner-freebsd-mips@FreeBSD.ORG Sun Apr 27 05:23:46 2008 Return-Path: Delivered-To: freebsd-mips@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 508441065672 for ; Sun, 27 Apr 2008 05:23:46 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 1276E8FC15 for ; Sun, 27 Apr 2008 05:23:45 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.2/8.14.1) with ESMTP id m3R5KwYq062349; Sat, 26 Apr 2008 23:21:01 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Sat, 26 Apr 2008 23:21:58 -0600 (MDT) Message-Id: <20080426.232158.1683324026.imp@bsdimp.com> To: nao@tom-yam.or.jp From: "M. Warner Losh" In-Reply-To: <2da2ec620804222103r7e90af37j2d36b0f0bc049abb@mail.gmail.com> References: <2da2ec620804222103r7e90af37j2d36b0f0bc049abb@mail.gmail.com> X-Mailer: Mew version 5.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-mips@FreeBSD.org Subject: Re: minor fix for tlb manipulations X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Apr 2008 05:23:46 -0000 In message: <2da2ec620804222103r7e90af37j2d36b0f0bc049abb@mail.gmail.com> "Naoki Hamada" writes: : I found a slight problem in tlb.S which tries to manipulate : no-existing tlbs. The argument of Mips_TLBFlush() and mips_TBIAP() is : the number of tlbs to deal with, but both functions process the same : number of tlb pairs, so twice the number of actual tlbs. I believe that the argument is the number of pairs to invalidate, at least in the case of Mips_TLBFlush. The number passed in is the MMUSize field from CO_Config1, which indicates the number of pairs that exist in the tlb. True, each iteration of the loop invalidates a pair of TLB entires, I think that the code is correct as it is. The MMUSize field returns the number of pairs, so I don't think any biasing is needed. The current Mips_TLBFlush function matches the InitTLB function given in the MIPS32 Architecture for Programmers, Volume III. : TLBWI entry of "MIPS32 Architecture For Programmers Volume II: The : MIPS32 Instruction Set" states that "The operation is UNDEFINED if the : contents of the Index register are greater than or equal to the number : of TLB entries in the processor." It seems to do no harm to my system, : but your mileage may vary. Correct. However, the count is the number of pairs, not the total number. Have I missed something in my reading the code and the mips32 specs? Warner