minor fix for tlb manipulations
M. Warner Losh
imp at bsdimp.com
Sun Apr 27 05:23:46 UTC 2008
In message: <2da2ec620804222103r7e90af37j2d36b0f0bc049abb at mail.gmail.com>
"Naoki Hamada" <nao at 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
Have I missed something in my reading the code and the mips32 specs?
More information about the freebsd-mips