Blame view
include/asm-arm26/tlb.h
1.86 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 |
#ifndef __ASMARM_TLB_H #define __ASMARM_TLB_H #include <asm/pgalloc.h> #include <asm/tlbflush.h> /* * TLB handling. This allows us to remove pages from the page * tables, and efficiently handle the TLB issues. */ struct mmu_gather { struct mm_struct *mm; |
fc2acab31 [PATCH] mm: tlb_f... |
13 14 |
unsigned int need_flush; unsigned int fullmm; |
1da177e4c Linux-2.6.12-rc2 |
15 |
}; |
15a23ffa2 [PATCH] mm: tlb_g... |
16 |
DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); |
1da177e4c Linux-2.6.12-rc2 |
17 18 19 20 |
static inline struct mmu_gather * tlb_gather_mmu(struct mm_struct *mm, unsigned int full_mm_flush) { |
15a23ffa2 [PATCH] mm: tlb_g... |
21 |
struct mmu_gather *tlb = &get_cpu_var(mmu_gathers); |
1da177e4c Linux-2.6.12-rc2 |
22 23 |
tlb->mm = mm; |
fc2acab31 [PATCH] mm: tlb_f... |
24 25 |
tlb->need_flush = 0; tlb->fullmm = full_mm_flush; |
1da177e4c Linux-2.6.12-rc2 |
26 27 28 29 30 31 32 |
return tlb; } static inline void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) { |
fc2acab31 [PATCH] mm: tlb_f... |
33 34 |
if (tlb->need_flush) flush_tlb_mm(tlb->mm); |
1da177e4c Linux-2.6.12-rc2 |
35 36 37 |
/* keep the page table cache within bounds */ check_pgt_cache(); |
15a23ffa2 [PATCH] mm: tlb_g... |
38 39 |
put_cpu_var(mmu_gathers); |
1da177e4c Linux-2.6.12-rc2 |
40 |
} |
1da177e4c Linux-2.6.12-rc2 |
41 42 43 44 45 46 47 48 49 |
#define tlb_remove_tlb_entry(tlb,ptep,address) do { } while (0) //#define tlb_start_vma(tlb,vma) do { } while (0) //FIXME - ARM32 uses this now that things changed in the kernel. seems like it may be pointless on arm26, however to get things compiling... #define tlb_start_vma(tlb,vma) \ do { \ if (!tlb->fullmm) \ flush_cache_range(vma, vma->vm_start, vma->vm_end); \ } while (0) #define tlb_end_vma(tlb,vma) do { } while (0) |
fc2acab31 [PATCH] mm: tlb_f... |
50 51 52 53 54 55 |
static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page) { tlb->need_flush = 1; free_page_and_swap_cache(page); } |
1da177e4c Linux-2.6.12-rc2 |
56 57 58 59 |
#define pte_free_tlb(tlb,ptep) pte_free(ptep) #define pmd_free_tlb(tlb,pmdp) pmd_free(pmdp) #endif |