summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/arch/sparc/mm/tlb.c
diff options
context:
space:
mode:
authorSrikant Patnaik2015-01-11 12:28:04 +0530
committerSrikant Patnaik2015-01-11 12:28:04 +0530
commit871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch)
tree8718f573808810c2a1e8cb8fb6ac469093ca2784 /ANDROID_3.4.5/arch/sparc/mm/tlb.c
parent9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff)
downloadFOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz
FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2
FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized. Changes are basically to make it look like kernel structure.
Diffstat (limited to 'ANDROID_3.4.5/arch/sparc/mm/tlb.c')
-rw-r--r--ANDROID_3.4.5/arch/sparc/mm/tlb.c102
1 files changed, 0 insertions, 102 deletions
diff --git a/ANDROID_3.4.5/arch/sparc/mm/tlb.c b/ANDROID_3.4.5/arch/sparc/mm/tlb.c
deleted file mode 100644
index b1f279cd..00000000
--- a/ANDROID_3.4.5/arch/sparc/mm/tlb.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* arch/sparc64/mm/tlb.c
- *
- * Copyright (C) 2004 David S. Miller <davem@redhat.com>
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/percpu.h>
-#include <linux/mm.h>
-#include <linux/swap.h>
-#include <linux/preempt.h>
-
-#include <asm/pgtable.h>
-#include <asm/pgalloc.h>
-#include <asm/tlbflush.h>
-#include <asm/cacheflush.h>
-#include <asm/mmu_context.h>
-#include <asm/tlb.h>
-
-/* Heavily inspired by the ppc64 code. */
-
-static DEFINE_PER_CPU(struct tlb_batch, tlb_batch);
-
-void flush_tlb_pending(void)
-{
- struct tlb_batch *tb = &get_cpu_var(tlb_batch);
-
- if (tb->tlb_nr) {
- flush_tsb_user(tb);
-
- if (CTX_VALID(tb->mm->context)) {
-#ifdef CONFIG_SMP
- smp_flush_tlb_pending(tb->mm, tb->tlb_nr,
- &tb->vaddrs[0]);
-#else
- __flush_tlb_pending(CTX_HWBITS(tb->mm->context),
- tb->tlb_nr, &tb->vaddrs[0]);
-#endif
- }
- tb->tlb_nr = 0;
- }
-
- put_cpu_var(tlb_batch);
-}
-
-void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr,
- pte_t *ptep, pte_t orig, int fullmm)
-{
- struct tlb_batch *tb = &get_cpu_var(tlb_batch);
- unsigned long nr;
-
- vaddr &= PAGE_MASK;
- if (pte_exec(orig))
- vaddr |= 0x1UL;
-
- if (tlb_type != hypervisor &&
- pte_dirty(orig)) {
- unsigned long paddr, pfn = pte_pfn(orig);
- struct address_space *mapping;
- struct page *page;
-
- if (!pfn_valid(pfn))
- goto no_cache_flush;
-
- page = pfn_to_page(pfn);
- if (PageReserved(page))
- goto no_cache_flush;
-
- /* A real file page? */
- mapping = page_mapping(page);
- if (!mapping)
- goto no_cache_flush;
-
- paddr = (unsigned long) page_address(page);
- if ((paddr ^ vaddr) & (1 << 13))
- flush_dcache_page_all(mm, page);
- }
-
-no_cache_flush:
-
- if (fullmm) {
- put_cpu_var(tlb_batch);
- return;
- }
-
- nr = tb->tlb_nr;
-
- if (unlikely(nr != 0 && mm != tb->mm)) {
- flush_tlb_pending();
- nr = 0;
- }
-
- if (nr == 0)
- tb->mm = mm;
-
- tb->vaddrs[nr] = vaddr;
- tb->tlb_nr = ++nr;
- if (nr >= TLB_BATCH_NR)
- flush_tlb_pending();
-
- put_cpu_var(tlb_batch);
-}