Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Apr 2008 08:38:43 -0400
From:      "Andrew Duane" <aduane@juniper.net>
To:        "M. Warner Losh" <imp@bsdimp.com>, <nao@tom-yam.or.jp>
Cc:        freebsd-mips@freebsd.org
Subject:   RE: minor fix for tlb manipulations
Message-ID:  <0FCFCF6165E968449991746EB91D614D142EFA@antipi.jnpr.net>
References:  <2da2ec620804222103r7e90af37j2d36b0f0bc049abb@mail.gmail.com> <20080426.232158.1683324026.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Our version of the MIPS code does in fact use the number of pairs, not =
number of entries, so we are not affected by this issue. I'm not sure =
how the "virgin" FreeBSD code works, though, we've modified this section =
somewhat.

-----Original Message-----
From: owner-freebsd-mips@freebsd.org on behalf of M. Warner Losh
Sent: Sun 4/27/2008 1:21 AM
To: nao@tom-yam.or.jp
Cc: freebsd-mips@freebsd.org
Subject: Re: minor fix for tlb manipulations
=20
In message: =
<2da2ec620804222103r7e90af37j2d36b0f0bc049abb@mail.gmail.com>
            "Naoki Hamada" <nao@tom-yam.or.jp> 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
_______________________________________________
freebsd-mips@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mips
To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0FCFCF6165E968449991746EB91D614D142EFA>