1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * This file contains low-level assembler routines for managing 4 * the PowerPC 603 tlb invalidation. 5 */ 6 7 #include <asm/page.h> 8 #include <asm/ppc_asm.h> 9 #include <asm/asm-offsets.h> 10 11 /* 12 * Flush an entry from the TLB 13 */ 14 #ifdef CONFIG_SMP 15 _GLOBAL(_tlbie) 16 lwz r8,TASK_CPU(r2) 17 oris r8,r8,11 18 mfmsr r10 19 rlwinm r0,r10,0,17,15 /* clear bit 16 (MSR_EE) */ 20 rlwinm r0,r0,0,28,26 /* clear DR */ 21 mtmsr r0 22 isync 23 lis r9,mmu_hash_lock@h 24 ori r9,r9,mmu_hash_lock@l 25 tophys(r9,r9) 26 10: lwarx r7,0,r9 27 cmpwi 0,r7,0 28 bne- 10b 29 stwcx. r8,0,r9 30 bne- 10b 31 eieio 32 tlbie r3 33 sync 34 TLBSYNC 35 li r0,0 36 stw r0,0(r9) /* clear mmu_hash_lock */ 37 mtmsr r10 38 isync 39 blr 40 _ASM_NOKPROBE_SYMBOL(_tlbie) 41 #endif /* CONFIG_SMP */ 42 43 /* 44 * Flush the entire TLB. 603/603e only 45 */ 46 _GLOBAL(_tlbia) 47 #if defined(CONFIG_SMP) 48 lwz r8,TASK_CPU(r2) 49 oris r8,r8,10 50 mfmsr r10 51 rlwinm r0,r10,0,17,15 /* clear bit 16 (MSR_EE) */ 52 rlwinm r0,r0,0,28,26 /* clear DR */ 53 mtmsr r0 54 isync 55 lis r9,mmu_hash_lock@h 56 ori r9,r9,mmu_hash_lock@l 57 tophys(r9,r9) 58 10: lwarx r7,0,r9 59 cmpwi 0,r7,0 60 bne- 10b 61 stwcx. r8,0,r9 62 bne- 10b 63 #endif /* CONFIG_SMP */ 64 li r5, 32 65 lis r4, KERNELBASE@h 66 mtctr r5 67 sync 68 0: tlbie r4 69 addi r4, r4, 0x1000 70 bdnz 0b 71 sync 72 #ifdef CONFIG_SMP 73 TLBSYNC 74 li r0,0 75 stw r0,0(r9) /* clear mmu_hash_lock */ 76 mtmsr r10 77 isync 78 #endif /* CONFIG_SMP */ 79 blr 80 _ASM_NOKPROBE_SYMBOL(_tlbia)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.