Re: [PATCH v2 1/4] powerpc: Introduce local (non-broadcast) forms of tlb invalidates
From: Kumar Gala <hidden>
Date: 2008-09-03 19:38:17
On Sep 3, 2008, at 11:12 AM, Scott Wood wrote:
On Fri, Aug 29, 2008 at 08:56:50AM -0500, Kumar Gala wrote:quoted
+_GLOBAL(_tlbil_all) +#define MMUCSR0_TLBFI (MMUCSR0_TLB0FI | MMUCSR0_TLB1FI | \ + MMUCSR0_TLB2FI | MMUCSR0_TLB3FI) + li r3,(MMUCSR0_TLBFI)@l + mtspr SPRN_MMUCSR0, r3 +1: + mfspr r3,SPRN_MMUCSR0 + andi. r3,r3,MMUCSR0_TLBFI@l + bne 1b + blr + +/* + * Flush MMU TLB for a particular process id, but only on the local processor + * (no broadcast) + */ +_GLOBAL(_tlbil_pid) + li r3,(MMUCSR0_TLBFI)@l + mtspr SPRN_MMUCSR0, r3 +1: + mfspr r3,SPRN_MMUCSR0 + andi. r1,r2,MMUCSR0_TLBFI@l + bne 1b + blrI'm guessing _tlbil_pid is never called, as it will clobber the stack pointer. Should probably just point both function names at the same implementation, since PID-specific invalidation isn't supported on non-tlbilx cores.
I'd prefer not to go down that path as it makes it a compile time issue and not runtime one in the future. I plan on changing this for tlbilx cores to be a CPU feature. I've fixed the code to just use r3 always. - k