/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_SCORE_TLBFLUSH_H #define _ASM_SCORE_TLBFLUSH_H #include <linux/mm.h> /* * TLB flushing: * * - flush_tlb_all() flushes all processes TLB entries * - flush_tlb_mm(mm) flushes the specified mm context TLB entries * - flush_tlb_page(vma, vmaddr) flushes one page * - flush_tlb_range(vma, start, end) flushes a range of pages * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages */ extern void local_flush_tlb_all(void); extern void local_flush_tlb_mm(struct mm_struct *mm); extern void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); extern void local_flush_tlb_kernel_range(unsigned long start, unsigned long end); extern void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page); extern void local_flush_tlb_one(unsigned long vaddr); #define flush_tlb_all() local_flush_tlb_all() #define flush_tlb_mm(mm) local_flush_tlb_mm(mm) #define flush_tlb_range(vma, vmaddr, end) \ local_flush_tlb_range(vma, vmaddr, end) #define flush_tlb_kernel_range(vmaddr, end) \ local_flush_tlb_kernel_range(vmaddr, end) #define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page) #define flush_tlb_one(vaddr) local_flush_tlb_one(vaddr) #ifndef __ASSEMBLY__ static inline unsigned long pevn_get(void) { unsigned long val; __asm__ __volatile__( "mfcr %0, cr11\n" "nop\nnop\n" : "=r" (val)); return val; } static inline void pevn_set(unsigned long val) { __asm__ __volatile__( "mtcr %0, cr11\n" "nop\nnop\nnop\nnop\nnop\n" : : "r" (val)); } static inline void pectx_set(unsigned long val) { __asm__ __volatile__( "mtcr %0, cr12\n" "nop\nnop\nnop\nnop\nnop\n" : : "r" (val)); } static inline unsigned long pectx_get(void) { unsigned long val; __asm__ __volatile__( "mfcr %0, cr12\n" "nop\nnop\n" : "=r" (val)); return val; } static inline unsigned long tlblock_get(void) { unsigned long val; __asm__ __volatile__( "mfcr %0, cr7\n" "nop\nnop\n" : "=r" (val)); return val; } static inline void tlblock_set(unsigned long val) { __asm__ __volatile__( "mtcr %0, cr7\n" "nop\nnop\nnop\nnop\nnop\n" : : "r" (val)); } static inline void tlbpt_set(unsigned long val) { __asm__ __volatile__( "mtcr %0, cr8\n" "nop\nnop\nnop\nnop\nnop\n" : : "r" (val)); } static inline long tlbpt_get(void) { long val; __asm__ __volatile__( "mfcr %0, cr8\n" "nop\nnop\n" : "=r" (val)); return val; } static inline void peaddr_set(unsigned long val) { __asm__ __volatile__( "mtcr %0, cr9\n" "nop\nnop\nnop\nnop\nnop\n" : : "r" (val)); } /* TLB operations. */ static inline void tlb_probe(void) { __asm__ __volatile__("stlb;nop;nop;nop;nop;nop"); } static inline void tlb_read(void) { __asm__ __volatile__("mftlb;nop;nop;nop;nop;nop"); } static inline void tlb_write_indexed(void) { __asm__ __volatile__("mtptlb;nop;nop;nop;nop;nop"); } static inline void tlb_write_random(void) { __asm__ __volatile__("mtrtlb;nop;nop;nop;nop;nop"); } #endif /* Not __ASSEMBLY__ */ #endif /* _ASM_SCORE_TLBFLUSH_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Kbuild | File | 340 B | 0644 |
|
asm-offsets.h | File | 35 B | 0644 |
|
asmmacro.h | File | 2.48 KB | 0644 |
|
atomic.h | File | 187 B | 0644 |
|
bitops.h | File | 266 B | 0644 |
|
bug.h | File | 578 B | 0644 |
|
bugs.h | File | 154 B | 0644 |
|
cache.h | File | 199 B | 0644 |
|
cacheflush.h | File | 1.63 KB | 0644 |
|
checksum.h | File | 5.61 KB | 0644 |
|
cmpxchg.h | File | 1.02 KB | 0644 |
|
delay.h | File | 567 B | 0644 |
|
device.h | File | 162 B | 0644 |
|
div64.h | File | 158 B | 0644 |
|
dma.h | File | 171 B | 0644 |
|
elf.h | File | 2.84 KB | 0644 |
|
emergency-restart.h | File | 206 B | 0644 |
|
exec.h | File | 181 B | 0644 |
|
fixmap.h | File | 2.38 KB | 0644 |
|
ftrace.h | File | 90 B | 0644 |
|
futex.h | File | 158 B | 0644 |
|
hardirq.h | File | 166 B | 0644 |
|
hw_irq.h | File | 90 B | 0644 |
|
io.h | File | 212 B | 0644 |
|
irq.h | File | 794 B | 0644 |
|
irq_regs.h | File | 258 B | 0644 |
|
irqflags.h | File | 1.9 KB | 0644 |
|
kdebug.h | File | 162 B | 0644 |
|
kmap_types.h | File | 178 B | 0644 |
|
linkage.h | File | 189 B | 0644 |
|
local.h | File | 158 B | 0644 |
|
local64.h | File | 33 B | 0644 |
|
mmu.h | File | 157 B | 0644 |
|
mmu_context.h | File | 2.68 KB | 0644 |
|
module.h | File | 949 B | 0644 |
|
page.h | File | 2.84 KB | 0644 |
|
pci.h | File | 81 B | 0644 |
|
percpu.h | File | 162 B | 0644 |
|
pgalloc.h | File | 1.81 KB | 0644 |
|
pgtable-bits.h | File | 990 B | 0644 |
|
pgtable.h | File | 7.29 KB | 0644 |
|
processor.h | File | 2.39 KB | 0644 |
|
ptrace.h | File | 749 B | 0644 |
|
scoreregs.h | File | 1.4 KB | 0644 |
|
segment.h | File | 513 B | 0644 |
|
setup.h | File | 1.01 KB | 0644 |
|
shmparam.h | File | 170 B | 0644 |
|
string.h | File | 327 B | 0644 |
|
switch_to.h | File | 323 B | 0644 |
|
syscalls.h | File | 229 B | 0644 |
|
thread_info.h | File | 2.55 KB | 0644 |
|
timex.h | File | 216 B | 0644 |
|
tlb.h | File | 538 B | 0644 |
|
tlbflush.h | File | 3.02 KB | 0644 |
|
topology.h | File | 170 B | 0644 |
|
uaccess.h | File | 10.78 KB | 0644 |
|
ucontext.h | File | 34 B | 0644 |
|
unaligned.h | File | 174 B | 0644 |
|
user.h | File | 437 B | 0644 |
|