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,[EMAIL PROTECTED]
+ 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,[EMAIL PROTECTED]
+ 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
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev