~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/powerpc/mm/book3s32/nohash_low.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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)

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php