Re: Servicing Multiple (nested) TLB Misses
"Toru Nishimura" <[email protected]> Sun, 8 Dec 2002 16:09:01 +0900
| Newsgroups | gmane.os.netbsd.ports.mips |
|---|---|
| Organization | ALKYL Technology |
| Message-ID | <000401c29e88$b380d1a0$0d00a8c0@paq5> |
"Jason R Thorpe" <[email protected]> commented; > > /* detour lw fault during UTLBmiss; MIPS1 only */ > > if (cpu_arch == CPU_ARCH_MIPS1 > > && opc == (0x80000000+sizeof(int)*2)) > > frame->f_pc = 0x80000000+sizeof(int)*7; > > So, I see that you write the TLB entry for the PT page... but then you > skip the "tlbwr" for the original UTLBMiss fault ... so, I guess it > restarts the instruction, faults again, and now the PT page will be > in the TLB ... okay, that makes sense, but the double fault is kind of > unfortunate. It would be nice to instrument how often the double-fault > case happens. Ah, the portion is an excess and can be eliminated. > > In short, it's done just like as what NetBSD/i386 or NetBSD/pc532 > > "fools" their MMU. > > This is precicely how the Alpha works, as well (except the Alpha uses a > 3-level table, rather than 2-level). The Alpha hardware is actually a > software-managed TLB, like MIPS, but the TLB miss handlers are all in > PALcode. The same techniq can be useful for other software managed TLB processors. SH3 and MPC850/860 fall in that category. And I'm watching with a great interest at Steve Woodford's SH5 pmap wondering it can be a basis of 64bit PTR (say, pmap64.c) NetBSD/mips. Toru Nishimura/ALKYL Technology