Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *  This file contains low-level assembler routines for managing
0004  *  the PowerPC 603 tlb invalidation.
0005  */
0006 
0007 #include <asm/page.h>
0008 #include <asm/ppc_asm.h>
0009 #include <asm/asm-offsets.h>
0010 
0011 /*
0012  * Flush an entry from the TLB
0013  */
0014 #ifdef CONFIG_SMP
0015 _GLOBAL(_tlbie)
0016     lwz r8,TASK_CPU(r2)
0017     oris    r8,r8,11
0018     mfmsr   r10
0019     rlwinm  r0,r10,0,17,15      /* clear bit 16 (MSR_EE) */
0020     rlwinm  r0,r0,0,28,26       /* clear DR */
0021     mtmsr   r0
0022     isync
0023     lis r9,mmu_hash_lock@h
0024     ori r9,r9,mmu_hash_lock@l
0025     tophys(r9,r9)
0026 10: lwarx   r7,0,r9
0027     cmpwi   0,r7,0
0028     bne-    10b
0029     stwcx.  r8,0,r9
0030     bne-    10b
0031     eieio
0032     tlbie   r3
0033     sync
0034     TLBSYNC
0035     li  r0,0
0036     stw r0,0(r9)        /* clear mmu_hash_lock */
0037     mtmsr   r10
0038     isync
0039     blr
0040 _ASM_NOKPROBE_SYMBOL(_tlbie)
0041 #endif /* CONFIG_SMP */
0042 
0043 /*
0044  * Flush the entire TLB. 603/603e only
0045  */
0046 _GLOBAL(_tlbia)
0047 #if defined(CONFIG_SMP)
0048     lwz r8,TASK_CPU(r2)
0049     oris    r8,r8,10
0050     mfmsr   r10
0051     rlwinm  r0,r10,0,17,15      /* clear bit 16 (MSR_EE) */
0052     rlwinm  r0,r0,0,28,26       /* clear DR */
0053     mtmsr   r0
0054     isync
0055     lis r9,mmu_hash_lock@h
0056     ori r9,r9,mmu_hash_lock@l
0057     tophys(r9,r9)
0058 10: lwarx   r7,0,r9
0059     cmpwi   0,r7,0
0060     bne-    10b
0061     stwcx.  r8,0,r9
0062     bne-    10b
0063 #endif /* CONFIG_SMP */
0064     li  r5, 32
0065     lis r4, KERNELBASE@h
0066     mtctr   r5
0067     sync
0068 0:  tlbie   r4
0069     addi    r4, r4, 0x1000
0070     bdnz    0b
0071     sync
0072 #ifdef CONFIG_SMP
0073     TLBSYNC
0074     li  r0,0
0075     stw r0,0(r9)        /* clear mmu_hash_lock */
0076     mtmsr   r10
0077     isync
0078 #endif /* CONFIG_SMP */
0079     blr
0080 _ASM_NOKPROBE_SYMBOL(_tlbia)