0001
0002
0003
0004
0005
0006
0007 #include <asm/page.h>
0008 #include <asm/ppc_asm.h>
0009 #include <asm/asm-offsets.h>
0010
0011
0012
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
0020 rlwinm r0,r0,0,28,26
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)
0037 mtmsr r10
0038 isync
0039 blr
0040 _ASM_NOKPROBE_SYMBOL(_tlbie)
0041 #endif
0042
0043
0044
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
0052 rlwinm r0,r0,0,28,26
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
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)
0076 mtmsr r10
0077 isync
0078 #endif
0079 blr
0080 _ASM_NOKPROBE_SYMBOL(_tlbia)