Thread (10 messages) 10 messages, 4 authors, 2008-09-04

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
+	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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help