Path: blob/master/arch/powerpc/mm/book3s32/nohash_low.S
26481 views
/* SPDX-License-Identifier: GPL-2.0-or-later */1/*2* This file contains low-level assembler routines for managing3* the PowerPC 603 tlb invalidation.4*/56#include <asm/page.h>7#include <asm/ppc_asm.h>8#include <asm/asm-offsets.h>910/*11* Flush an entry from the TLB12*/13#ifdef CONFIG_SMP14_GLOBAL(_tlbie)15lwz r8,TASK_CPU(r2)16oris r8,r8,1117mfmsr r1018rlwinm r0,r10,0,17,15 /* clear bit 16 (MSR_EE) */19rlwinm r0,r0,0,28,26 /* clear DR */20mtmsr r021isync22lis r9,mmu_hash_lock@h23ori r9,r9,mmu_hash_lock@l24tophys(r9,r9)2510: lwarx r7,0,r926cmpwi 0,r7,027bne- 10b28stwcx. r8,0,r929bne- 10b30eieio31tlbie r332sync33TLBSYNC34li r0,035stw r0,0(r9) /* clear mmu_hash_lock */36mtmsr r1037isync38blr39_ASM_NOKPROBE_SYMBOL(_tlbie)40#endif /* CONFIG_SMP */4142/*43* Flush the entire TLB. 603/603e only44*/45_GLOBAL(_tlbia)46#if defined(CONFIG_SMP)47lwz r8,TASK_CPU(r2)48oris r8,r8,1049mfmsr r1050rlwinm r0,r10,0,17,15 /* clear bit 16 (MSR_EE) */51rlwinm r0,r0,0,28,26 /* clear DR */52mtmsr r053isync54lis r9,mmu_hash_lock@h55ori r9,r9,mmu_hash_lock@l56tophys(r9,r9)5710: lwarx r7,0,r958cmpwi 0,r7,059bne- 10b60stwcx. r8,0,r961bne- 10b62#endif /* CONFIG_SMP */63li r5, 3264lis r4, KERNELBASE@h65mtctr r566sync670: tlbie r468addi r4, r4, 0x100069bdnz 0b70sync71#ifdef CONFIG_SMP72TLBSYNC73li r0,074stw r0,0(r9) /* clear mmu_hash_lock */75mtmsr r1076isync77#endif /* CONFIG_SMP */78blr79_ASM_NOKPROBE_SYMBOL(_tlbia)808182