-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Split asm/tlbflush.h into: asm/nohash/tlbflush.h asm/book3s/32/tlbflush.h asm/book3s/64/tlbflush.h (already existing) Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
- Loading branch information
Christophe Leroy
authored and
Michael Ellerman
committed
Jul 30, 2018
1 parent
45ef599
commit 405cb40
Showing
4 changed files
with
94 additions
and
81 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_POWERPC_BOOK3S_32_TLBFLUSH_H | ||
#define _ASM_POWERPC_BOOK3S_32_TLBFLUSH_H | ||
|
||
#define MMU_NO_CONTEXT (0) | ||
/* | ||
* TLB flushing for "classic" hash-MMU 32-bit CPUs, 6xx, 7xx, 7xxx | ||
*/ | ||
extern void flush_tlb_mm(struct mm_struct *mm); | ||
extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | ||
extern void flush_tlb_page_nohash(struct vm_area_struct *vma, unsigned long addr); | ||
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); | ||
static inline void local_flush_tlb_page(struct vm_area_struct *vma, | ||
unsigned long vmaddr) | ||
{ | ||
flush_tlb_page(vma, vmaddr); | ||
} | ||
static inline void local_flush_tlb_mm(struct mm_struct *mm) | ||
{ | ||
flush_tlb_mm(mm); | ||
} | ||
|
||
#endif /* _ASM_POWERPC_TLBFLUSH_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_POWERPC_BOOK3S_TLBFLUSH_H | ||
#define _ASM_POWERPC_BOOK3S_TLBFLUSH_H | ||
|
||
#ifdef CONFIG_PPC64 | ||
#include <asm/book3s/64/tlbflush.h> | ||
#else | ||
#include <asm/book3s/32/tlbflush.h> | ||
#endif | ||
|
||
#endif /* _ASM_POWERPC_BOOK3S_TLBFLUSH_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_POWERPC_NOHASH_TLBFLUSH_H | ||
#define _ASM_POWERPC_NOHASH_TLBFLUSH_H | ||
|
||
/* | ||
* TLB flushing: | ||
* | ||
* - flush_tlb_mm(mm) flushes the specified mm context TLB's | ||
* - flush_tlb_page(vma, vmaddr) flushes one page | ||
* - local_flush_tlb_mm(mm, full) flushes the specified mm context on | ||
* the local processor | ||
* - local_flush_tlb_page(vma, vmaddr) flushes one page on the local processor | ||
* - flush_tlb_page_nohash(vma, vmaddr) flushes one page if SW loaded TLB | ||
* - flush_tlb_range(vma, start, end) flushes a range of pages | ||
* - flush_tlb_kernel_range(start, end) flushes a range of kernel pages | ||
* | ||
*/ | ||
|
||
/* | ||
* TLB flushing for software loaded TLB chips | ||
* | ||
* TODO: (CONFIG_FSL_BOOKE) determine if flush_tlb_range & | ||
* flush_tlb_kernel_range are best implemented as tlbia vs | ||
* specific tlbie's | ||
*/ | ||
|
||
struct vm_area_struct; | ||
struct mm_struct; | ||
|
||
#define MMU_NO_CONTEXT ((unsigned int)-1) | ||
|
||
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); | ||
|
||
extern void local_flush_tlb_mm(struct mm_struct *mm); | ||
extern void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | ||
|
||
extern void __local_flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, | ||
int tsize, int ind); | ||
|
||
#ifdef CONFIG_SMP | ||
extern void flush_tlb_mm(struct mm_struct *mm); | ||
extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | ||
extern void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, | ||
int tsize, int ind); | ||
#else | ||
#define flush_tlb_mm(mm) local_flush_tlb_mm(mm) | ||
#define flush_tlb_page(vma,addr) local_flush_tlb_page(vma,addr) | ||
#define __flush_tlb_page(mm,addr,p,i) __local_flush_tlb_page(mm,addr,p,i) | ||
#endif | ||
|
||
#endif /* _ASM_POWERPC_NOHASH_TLBFLUSH_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,87 +1,11 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_POWERPC_TLBFLUSH_H | ||
#define _ASM_POWERPC_TLBFLUSH_H | ||
|
||
/* | ||
* TLB flushing: | ||
* | ||
* - flush_tlb_mm(mm) flushes the specified mm context TLB's | ||
* - flush_tlb_page(vma, vmaddr) flushes one page | ||
* - local_flush_tlb_mm(mm, full) flushes the specified mm context on | ||
* the local processor | ||
* - local_flush_tlb_page(vma, vmaddr) flushes one page on the local processor | ||
* - flush_tlb_page_nohash(vma, vmaddr) flushes one page if SW loaded TLB | ||
* - flush_tlb_range(vma, start, end) flushes a range of pages | ||
* - flush_tlb_kernel_range(start, end) flushes a range of kernel pages | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public License | ||
* as published by the Free Software Foundation; either version | ||
* 2 of the License, or (at your option) any later version. | ||
*/ | ||
#ifdef __KERNEL__ | ||
|
||
#ifdef CONFIG_PPC_MMU_NOHASH | ||
/* | ||
* TLB flushing for software loaded TLB chips | ||
* | ||
* TODO: (CONFIG_FSL_BOOKE) determine if flush_tlb_range & | ||
* flush_tlb_kernel_range are best implemented as tlbia vs | ||
* specific tlbie's | ||
*/ | ||
|
||
struct vm_area_struct; | ||
struct mm_struct; | ||
|
||
#define MMU_NO_CONTEXT ((unsigned int)-1) | ||
|
||
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); | ||
|
||
extern void local_flush_tlb_mm(struct mm_struct *mm); | ||
extern void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | ||
|
||
extern void __local_flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, | ||
int tsize, int ind); | ||
|
||
#ifdef CONFIG_SMP | ||
extern void flush_tlb_mm(struct mm_struct *mm); | ||
extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | ||
extern void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, | ||
int tsize, int ind); | ||
#else | ||
#define flush_tlb_mm(mm) local_flush_tlb_mm(mm) | ||
#define flush_tlb_page(vma,addr) local_flush_tlb_page(vma,addr) | ||
#define __flush_tlb_page(mm,addr,p,i) __local_flush_tlb_page(mm,addr,p,i) | ||
#endif | ||
|
||
#elif defined(CONFIG_PPC_STD_MMU_32) | ||
|
||
#define MMU_NO_CONTEXT (0) | ||
/* | ||
* TLB flushing for "classic" hash-MMU 32-bit CPUs, 6xx, 7xx, 7xxx | ||
*/ | ||
extern void flush_tlb_mm(struct mm_struct *mm); | ||
extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | ||
extern void flush_tlb_page_nohash(struct vm_area_struct *vma, unsigned long addr); | ||
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); | ||
static inline void local_flush_tlb_page(struct vm_area_struct *vma, | ||
unsigned long vmaddr) | ||
{ | ||
flush_tlb_page(vma, vmaddr); | ||
} | ||
static inline void local_flush_tlb_mm(struct mm_struct *mm) | ||
{ | ||
flush_tlb_mm(mm); | ||
} | ||
|
||
#elif defined(CONFIG_PPC_BOOK3S_64) | ||
#include <asm/book3s/64/tlbflush.h> | ||
#ifdef CONFIG_PPC_BOOK3S | ||
#include <asm/book3s/tlbflush.h> | ||
#else | ||
#error Unsupported MMU type | ||
#endif | ||
#include <asm/nohash/tlbflush.h> | ||
#endif /* !CONFIG_PPC_BOOK3S */ | ||
|
||
#endif /*__KERNEL__ */ | ||
#endif /* _ASM_POWERPC_TLBFLUSH_H */ |