powerpc/32s: Inline _tlbie() on non SMP
On non SMP, _tlbie() is just a tlbie plus a sync instruction. Make it static inline. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/475136425541db5c7c8a0395d19d400525b251bc.1603348103.git.christophe.leroy@csgroup.eu
This commit is contained in:
Родитель
cfe32ad0b3
Коммит
b91280f3f3
|
@ -12,7 +12,14 @@ extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
|
|||
unsigned long end);
|
||||
extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void _tlbie(unsigned long address);
|
||||
#else
|
||||
static inline void _tlbie(unsigned long address)
|
||||
{
|
||||
asm volatile ("tlbie %0; sync" : : "r" (address) : "memory");
|
||||
}
|
||||
#endif
|
||||
void _tlbia(void);
|
||||
|
||||
static inline void local_flush_tlb_page(struct vm_area_struct *vma,
|
||||
|
|
|
@ -622,8 +622,8 @@ _ASM_NOKPROBE_SYMBOL(flush_hash_pages)
|
|||
/*
|
||||
* Flush an entry from the TLB
|
||||
*/
|
||||
_GLOBAL(_tlbie)
|
||||
#ifdef CONFIG_SMP
|
||||
_GLOBAL(_tlbie)
|
||||
lwz r8,TASK_CPU(r2)
|
||||
oris r8,r8,11
|
||||
mfmsr r10
|
||||
|
@ -647,12 +647,9 @@ _GLOBAL(_tlbie)
|
|||
stw r0,0(r9) /* clear mmu_hash_lock */
|
||||
mtmsr r10
|
||||
isync
|
||||
#else /* CONFIG_SMP */
|
||||
tlbie r3
|
||||
sync
|
||||
#endif /* CONFIG_SMP */
|
||||
blr
|
||||
_ASM_NOKPROBE_SYMBOL(_tlbie)
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
/*
|
||||
* Flush the entire TLB. 603/603e only
|
||||
|
|
Загрузка…
Ссылка в новой задаче