[PATCH v2 1/4] powerpc: Introduce local (non-broadcast) forms of tlb invalidates

Kumar Gala galak at kernel.crashing.org
Thu Sep 4 04:51:48 EST 2008


On Sep 3, 2008, at 11:12 AM, Scott Wood wrote:

> On Fri, Aug 29, 2008 at 08:56:50AM -0500, Kumar Gala wrote:
>> +_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 at 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 at l
>> +	bne	1b
>> +	blr
>
> I'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



More information about the Linuxppc-dev mailing list