summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/arch/m68k/mm
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/arch/m68k/mm')
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/Makefile11
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/cache.c136
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/fault.c197
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/hwtest.c85
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/init.c5
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/init_mm.c176
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/init_no.c145
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/kmap.c367
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/mcfmmu.c199
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/memory.c298
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/motorola.c320
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/sun3kmap.c161
-rw-r--r--ANDROID_3.4.5/arch/m68k/mm/sun3mmu.c102
13 files changed, 0 insertions, 2202 deletions
diff --git a/ANDROID_3.4.5/arch/m68k/mm/Makefile b/ANDROID_3.4.5/arch/m68k/mm/Makefile
deleted file mode 100644
index cfbf3205..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Makefile for the linux m68k-specific parts of the memory manager.
-#
-
-obj-y := init.o
-
-obj-$(CONFIG_MMU) += cache.o fault.o
-obj-$(CONFIG_MMU_MOTOROLA) += kmap.o memory.o motorola.o hwtest.o
-obj-$(CONFIG_MMU_SUN3) += sun3kmap.o sun3mmu.o hwtest.o
-obj-$(CONFIG_MMU_COLDFIRE) += kmap.o memory.o mcfmmu.o
-
diff --git a/ANDROID_3.4.5/arch/m68k/mm/cache.c b/ANDROID_3.4.5/arch/m68k/mm/cache.c
deleted file mode 100644
index 3d84c1f2..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/cache.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * linux/arch/m68k/mm/cache.c
- *
- * Instruction cache handling
- *
- * Copyright (C) 1995 Hamish Macdonald
- */
-
-#include <linux/module.h>
-#include <asm/pgalloc.h>
-#include <asm/traps.h>
-
-
-static unsigned long virt_to_phys_slow(unsigned long vaddr)
-{
- if (CPU_IS_060) {
- unsigned long paddr;
-
- /* The PLPAR instruction causes an access error if the translation
- * is not possible. To catch this we use the same exception mechanism
- * as for user space accesses in <asm/uaccess.h>. */
- asm volatile (".chip 68060\n"
- "1: plpar (%0)\n"
- ".chip 68k\n"
- "2:\n"
- ".section .fixup,\"ax\"\n"
- " .even\n"
- "3: sub.l %0,%0\n"
- " jra 2b\n"
- ".previous\n"
- ".section __ex_table,\"a\"\n"
- " .align 4\n"
- " .long 1b,3b\n"
- ".previous"
- : "=a" (paddr)
- : "0" (vaddr));
- return paddr;
- } else if (CPU_IS_040) {
- unsigned long mmusr;
-
- asm volatile (".chip 68040\n\t"
- "ptestr (%1)\n\t"
- "movec %%mmusr, %0\n\t"
- ".chip 68k"
- : "=r" (mmusr)
- : "a" (vaddr));
-
- if (mmusr & MMU_R_040)
- return (mmusr & PAGE_MASK) | (vaddr & ~PAGE_MASK);
- } else {
- unsigned short mmusr;
- unsigned long *descaddr;
-
- asm volatile ("ptestr %3,%2@,#7,%0\n\t"
- "pmove %%psr,%1"
- : "=a&" (descaddr), "=m" (mmusr)
- : "a" (vaddr), "d" (get_fs().seg));
- if (mmusr & (MMU_I|MMU_B|MMU_L))
- return 0;
- descaddr = phys_to_virt((unsigned long)descaddr);
- switch (mmusr & MMU_NUM) {
- case 1:
- return (*descaddr & 0xfe000000) | (vaddr & 0x01ffffff);
- case 2:
- return (*descaddr & 0xfffc0000) | (vaddr & 0x0003ffff);
- case 3:
- return (*descaddr & PAGE_MASK) | (vaddr & ~PAGE_MASK);
- }
- }
- return 0;
-}
-
-/* Push n pages at kernel virtual address and clear the icache */
-/* RZ: use cpush %bc instead of cpush %dc, cinv %ic */
-void flush_icache_range(unsigned long address, unsigned long endaddr)
-{
- if (CPU_IS_COLDFIRE) {
- unsigned long start, end;
- start = address & ICACHE_SET_MASK;
- end = endaddr & ICACHE_SET_MASK;
- if (start > end) {
- flush_cf_icache(0, end);
- end = ICACHE_MAX_ADDR;
- }
- flush_cf_icache(start, end);
- } else if (CPU_IS_040_OR_060) {
- address &= PAGE_MASK;
-
- do {
- asm volatile ("nop\n\t"
- ".chip 68040\n\t"
- "cpushp %%bc,(%0)\n\t"
- ".chip 68k"
- : : "a" (virt_to_phys_slow(address)));
- address += PAGE_SIZE;
- } while (address < endaddr);
- } else {
- unsigned long tmp;
- asm volatile ("movec %%cacr,%0\n\t"
- "orw %1,%0\n\t"
- "movec %0,%%cacr"
- : "=&d" (tmp)
- : "di" (FLUSH_I));
- }
-}
-EXPORT_SYMBOL(flush_icache_range);
-
-void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
- unsigned long addr, int len)
-{
- if (CPU_IS_COLDFIRE) {
- unsigned long start, end;
- start = addr & ICACHE_SET_MASK;
- end = (addr + len) & ICACHE_SET_MASK;
- if (start > end) {
- flush_cf_icache(0, end);
- end = ICACHE_MAX_ADDR;
- }
- flush_cf_icache(start, end);
-
- } else if (CPU_IS_040_OR_060) {
- asm volatile ("nop\n\t"
- ".chip 68040\n\t"
- "cpushp %%bc,(%0)\n\t"
- ".chip 68k"
- : : "a" (page_to_phys(page)));
- } else {
- unsigned long tmp;
- asm volatile ("movec %%cacr,%0\n\t"
- "orw %1,%0\n\t"
- "movec %0,%%cacr"
- : "=&d" (tmp)
- : "di" (FLUSH_I));
- }
-}
-
diff --git a/ANDROID_3.4.5/arch/m68k/mm/fault.c b/ANDROID_3.4.5/arch/m68k/mm/fault.c
deleted file mode 100644
index 6b020a84..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/fault.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * linux/arch/m68k/mm/fault.c
- *
- * Copyright (C) 1995 Hamish Macdonald
- */
-
-#include <linux/mman.h>
-#include <linux/mm.h>
-#include <linux/kernel.h>
-#include <linux/ptrace.h>
-#include <linux/interrupt.h>
-#include <linux/module.h>
-
-#include <asm/setup.h>
-#include <asm/traps.h>
-#include <asm/uaccess.h>
-#include <asm/pgalloc.h>
-
-extern void die_if_kernel(char *, struct pt_regs *, long);
-
-int send_fault_sig(struct pt_regs *regs)
-{
- siginfo_t siginfo = { 0, 0, 0, };
-
- siginfo.si_signo = current->thread.signo;
- siginfo.si_code = current->thread.code;
- siginfo.si_addr = (void *)current->thread.faddr;
-#ifdef DEBUG
- printk("send_fault_sig: %p,%d,%d\n", siginfo.si_addr, siginfo.si_signo, siginfo.si_code);
-#endif
-
- if (user_mode(regs)) {
- force_sig_info(siginfo.si_signo,
- &siginfo, current);
- } else {
- if (handle_kernel_fault(regs))
- return -1;
-
- //if (siginfo.si_signo == SIGBUS)
- // force_sig_info(siginfo.si_signo,
- // &siginfo, current);
-
- /*
- * Oops. The kernel tried to access some bad page. We'll have to
- * terminate things with extreme prejudice.
- */
- if ((unsigned long)siginfo.si_addr < PAGE_SIZE)
- printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference");
- else
- printk(KERN_ALERT "Unable to handle kernel access");
- printk(" at virtual address %p\n", siginfo.si_addr);
- die_if_kernel("Oops", regs, 0 /*error_code*/);
- do_exit(SIGKILL);
- }
-
- return 1;
-}
-
-/*
- * This routine handles page faults. It determines the problem, and
- * then passes it off to one of the appropriate routines.
- *
- * error_code:
- * bit 0 == 0 means no page found, 1 means protection fault
- * bit 1 == 0 means read, 1 means write
- *
- * If this routine detects a bad access, it returns 1, otherwise it
- * returns 0.
- */
-int do_page_fault(struct pt_regs *regs, unsigned long address,
- unsigned long error_code)
-{
- struct mm_struct *mm = current->mm;
- struct vm_area_struct * vma;
- int write, fault;
-
-#ifdef DEBUG
- printk ("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n",
- regs->sr, regs->pc, address, error_code,
- current->mm->pgd);
-#endif
-
- /*
- * If we're in an interrupt or have no user
- * context, we must not take the fault..
- */
- if (in_atomic() || !mm)
- goto no_context;
-
- down_read(&mm->mmap_sem);
-
- vma = find_vma(mm, address);
- if (!vma)
- goto map_err;
- if (vma->vm_flags & VM_IO)
- goto acc_err;
- if (vma->vm_start <= address)
- goto good_area;
- if (!(vma->vm_flags & VM_GROWSDOWN))
- goto map_err;
- if (user_mode(regs)) {
- /* Accessing the stack below usp is always a bug. The
- "+ 256" is there due to some instructions doing
- pre-decrement on the stack and that doesn't show up
- until later. */
- if (address + 256 < rdusp())
- goto map_err;
- }
- if (expand_stack(vma, address))
- goto map_err;
-
-/*
- * Ok, we have a good vm_area for this memory access, so
- * we can handle it..
- */
-good_area:
-#ifdef DEBUG
- printk("do_page_fault: good_area\n");
-#endif
- write = 0;
- switch (error_code & 3) {
- default: /* 3: write, present */
- /* fall through */
- case 2: /* write, not present */
- if (!(vma->vm_flags & VM_WRITE))
- goto acc_err;
- write++;
- break;
- case 1: /* read, present */
- goto acc_err;
- case 0: /* read, not present */
- if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE)))
- goto acc_err;
- }
-
- /*
- * If for any reason at all we couldn't handle the fault,
- * make sure we exit gracefully rather than endlessly redo
- * the fault.
- */
-
- fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0);
-#ifdef DEBUG
- printk("handle_mm_fault returns %d\n",fault);
-#endif
- if (unlikely(fault & VM_FAULT_ERROR)) {
- if (fault & VM_FAULT_OOM)
- goto out_of_memory;
- else if (fault & VM_FAULT_SIGBUS)
- goto bus_err;
- BUG();
- }
- if (fault & VM_FAULT_MAJOR)
- current->maj_flt++;
- else
- current->min_flt++;
-
- up_read(&mm->mmap_sem);
- return 0;
-
-/*
- * We ran out of memory, or some other thing happened to us that made
- * us unable to handle the page fault gracefully.
- */
-out_of_memory:
- up_read(&mm->mmap_sem);
- if (!user_mode(regs))
- goto no_context;
- pagefault_out_of_memory();
- return 0;
-
-no_context:
- current->thread.signo = SIGBUS;
- current->thread.faddr = address;
- return send_fault_sig(regs);
-
-bus_err:
- current->thread.signo = SIGBUS;
- current->thread.code = BUS_ADRERR;
- current->thread.faddr = address;
- goto send_sig;
-
-map_err:
- current->thread.signo = SIGSEGV;
- current->thread.code = SEGV_MAPERR;
- current->thread.faddr = address;
- goto send_sig;
-
-acc_err:
- current->thread.signo = SIGSEGV;
- current->thread.code = SEGV_ACCERR;
- current->thread.faddr = address;
-
-send_sig:
- up_read(&mm->mmap_sem);
- return send_fault_sig(regs);
-}
diff --git a/ANDROID_3.4.5/arch/m68k/mm/hwtest.c b/ANDROID_3.4.5/arch/m68k/mm/hwtest.c
deleted file mode 100644
index 2c7dde3c..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/hwtest.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Tests for presence or absence of hardware registers.
- * This code was originally in atari/config.c, but I noticed
- * that it was also in drivers/nubus/nubus.c and I wanted to
- * use it in hp300/config.c, so it seemed sensible to pull it
- * out into its own file.
- *
- * The test is for use when trying to read a hardware register
- * that isn't present would cause a bus error. We set up a
- * temporary handler so that this doesn't kill the kernel.
- *
- * There is a test-by-reading and a test-by-writing; I present
- * them here complete with the comments from the original atari
- * config.c...
- * -- PMM <pmaydell@chiark.greenend.org.uk>, 05/1998
- */
-
-/* This function tests for the presence of an address, specially a
- * hardware register address. It is called very early in the kernel
- * initialization process, when the VBR register isn't set up yet. On
- * an Atari, it still points to address 0, which is unmapped. So a bus
- * error would cause another bus error while fetching the exception
- * vector, and the CPU would do nothing at all. So we needed to set up
- * a temporary VBR and a vector table for the duration of the test.
- */
-
-#include <linux/module.h>
-
-int hwreg_present( volatile void *regp )
-{
- int ret = 0;
- long save_sp, save_vbr;
- long tmp_vectors[3];
-
- __asm__ __volatile__
- ( "movec %/vbr,%2\n\t"
- "movel #Lberr1,%4@(8)\n\t"
- "movec %4,%/vbr\n\t"
- "movel %/sp,%1\n\t"
- "moveq #0,%0\n\t"
- "tstb %3@\n\t"
- "nop\n\t"
- "moveq #1,%0\n"
- "Lberr1:\n\t"
- "movel %1,%/sp\n\t"
- "movec %2,%/vbr"
- : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr)
- : "a" (regp), "a" (tmp_vectors)
- );
-
- return( ret );
-}
-EXPORT_SYMBOL(hwreg_present);
-
-/* Basically the same, but writes a value into a word register, protected
- * by a bus error handler. Returns 1 if successful, 0 otherwise.
- */
-
-int hwreg_write( volatile void *regp, unsigned short val )
-{
- int ret;
- long save_sp, save_vbr;
- long tmp_vectors[3];
-
- __asm__ __volatile__
- ( "movec %/vbr,%2\n\t"
- "movel #Lberr2,%4@(8)\n\t"
- "movec %4,%/vbr\n\t"
- "movel %/sp,%1\n\t"
- "moveq #0,%0\n\t"
- "movew %5,%3@\n\t"
- "nop \n\t" /* If this nop isn't present, 'ret' may already be
- * loaded with 1 at the time the bus error
- * happens! */
- "moveq #1,%0\n"
- "Lberr2:\n\t"
- "movel %1,%/sp\n\t"
- "movec %2,%/vbr"
- : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr)
- : "a" (regp), "a" (tmp_vectors), "g" (val)
- );
-
- return( ret );
-}
-EXPORT_SYMBOL(hwreg_write);
-
diff --git a/ANDROID_3.4.5/arch/m68k/mm/init.c b/ANDROID_3.4.5/arch/m68k/mm/init.c
deleted file mode 100644
index 27b5ce08..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/init.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef CONFIG_MMU
-#include "init_mm.c"
-#else
-#include "init_no.c"
-#endif
diff --git a/ANDROID_3.4.5/arch/m68k/mm/init_mm.c b/ANDROID_3.4.5/arch/m68k/mm/init_mm.c
deleted file mode 100644
index f77f258d..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/init_mm.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * linux/arch/m68k/mm/init.c
- *
- * Copyright (C) 1995 Hamish Macdonald
- *
- * Contains common initialization routines, specific init code moved
- * to motorola.c and sun3mmu.c
- */
-
-#include <linux/module.h>
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <linux/swap.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/bootmem.h>
-#include <linux/gfp.h>
-
-#include <asm/setup.h>
-#include <asm/uaccess.h>
-#include <asm/page.h>
-#include <asm/pgalloc.h>
-#include <asm/traps.h>
-#include <asm/machdep.h>
-#include <asm/io.h>
-#ifdef CONFIG_ATARI
-#include <asm/atari_stram.h>
-#endif
-#include <asm/sections.h>
-#include <asm/tlb.h>
-
-pg_data_t pg_data_map[MAX_NUMNODES];
-EXPORT_SYMBOL(pg_data_map);
-
-int m68k_virt_to_node_shift;
-
-#ifndef CONFIG_SINGLE_MEMORY_CHUNK
-pg_data_t *pg_data_table[65];
-EXPORT_SYMBOL(pg_data_table);
-#endif
-
-void __init m68k_setup_node(int node)
-{
-#ifndef CONFIG_SINGLE_MEMORY_CHUNK
- struct mem_info *info = m68k_memory + node;
- int i, end;
-
- i = (unsigned long)phys_to_virt(info->addr) >> __virt_to_node_shift();
- end = (unsigned long)phys_to_virt(info->addr + info->size - 1) >> __virt_to_node_shift();
- for (; i <= end; i++) {
- if (pg_data_table[i])
- printk("overlap at %u for chunk %u\n", i, node);
- pg_data_table[i] = pg_data_map + node;
- }
-#endif
- pg_data_map[node].bdata = bootmem_node_data + node;
- node_set_online(node);
-}
-
-
-/*
- * ZERO_PAGE is a special page that is used for zero-initialized
- * data and COW.
- */
-
-void *empty_zero_page;
-EXPORT_SYMBOL(empty_zero_page);
-
-extern void init_pointer_table(unsigned long ptable);
-
-/* References to section boundaries */
-
-extern pmd_t *zero_pgtable;
-
-#if defined(CONFIG_MMU) && !defined(CONFIG_COLDFIRE)
-#define VECTORS &vectors[0]
-#else
-#define VECTORS _ramvec
-#endif
-
-void __init print_memmap(void)
-{
-#define UL(x) ((unsigned long) (x))
-#define MLK(b, t) UL(b), UL(t), (UL(t) - UL(b)) >> 10
-#define MLM(b, t) UL(b), UL(t), (UL(t) - UL(b)) >> 20
-#define MLK_ROUNDUP(b, t) b, t, DIV_ROUND_UP(((t) - (b)), 1024)
-
- pr_notice("Virtual kernel memory layout:\n"
- " vector : 0x%08lx - 0x%08lx (%4ld KiB)\n"
- " kmap : 0x%08lx - 0x%08lx (%4ld MiB)\n"
- " vmalloc : 0x%08lx - 0x%08lx (%4ld MiB)\n"
- " lowmem : 0x%08lx - 0x%08lx (%4ld MiB)\n"
- " .init : 0x%p" " - 0x%p" " (%4d KiB)\n"
- " .text : 0x%p" " - 0x%p" " (%4d KiB)\n"
- " .data : 0x%p" " - 0x%p" " (%4d KiB)\n"
- " .bss : 0x%p" " - 0x%p" " (%4d KiB)\n",
- MLK(VECTORS, VECTORS + 256),
- MLM(KMAP_START, KMAP_END),
- MLM(VMALLOC_START, VMALLOC_END),
- MLM(PAGE_OFFSET, (unsigned long)high_memory),
- MLK_ROUNDUP(__init_begin, __init_end),
- MLK_ROUNDUP(_stext, _etext),
- MLK_ROUNDUP(_sdata, _edata),
- MLK_ROUNDUP(_sbss, _ebss));
-}
-
-void __init mem_init(void)
-{
- pg_data_t *pgdat;
- int codepages = 0;
- int datapages = 0;
- int initpages = 0;
- int i;
-
- /* this will put all memory onto the freelists */
- totalram_pages = num_physpages = 0;
- for_each_online_pgdat(pgdat) {
- num_physpages += pgdat->node_present_pages;
-
- totalram_pages += free_all_bootmem_node(pgdat);
- for (i = 0; i < pgdat->node_spanned_pages; i++) {
- struct page *page = pgdat->node_mem_map + i;
- char *addr = page_to_virt(page);
-
- if (!PageReserved(page))
- continue;
- if (addr >= _text &&
- addr < _etext)
- codepages++;
- else if (addr >= __init_begin &&
- addr < __init_end)
- initpages++;
- else
- datapages++;
- }
- }
-
-#if !defined(CONFIG_SUN3) && !defined(CONFIG_COLDFIRE)
- /* insert pointer tables allocated so far into the tablelist */
- init_pointer_table((unsigned long)kernel_pg_dir);
- for (i = 0; i < PTRS_PER_PGD; i++) {
- if (pgd_present(kernel_pg_dir[i]))
- init_pointer_table(__pgd_page(kernel_pg_dir[i]));
- }
-
- /* insert also pointer table that we used to unmap the zero page */
- if (zero_pgtable)
- init_pointer_table((unsigned long)zero_pgtable);
-#endif
-
- printk("Memory: %luk/%luk available (%dk kernel code, %dk data, %dk init)\n",
- nr_free_pages() << (PAGE_SHIFT-10),
- totalram_pages << (PAGE_SHIFT-10),
- codepages << (PAGE_SHIFT-10),
- datapages << (PAGE_SHIFT-10),
- initpages << (PAGE_SHIFT-10));
- print_memmap();
-}
-
-#ifdef CONFIG_BLK_DEV_INITRD
-void free_initrd_mem(unsigned long start, unsigned long end)
-{
- int pages = 0;
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page(start);
- totalram_pages++;
- pages++;
- }
- printk ("Freeing initrd memory: %dk freed\n", pages);
-}
-#endif
diff --git a/ANDROID_3.4.5/arch/m68k/mm/init_no.c b/ANDROID_3.4.5/arch/m68k/mm/init_no.c
deleted file mode 100644
index 345ec0d8..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/init_no.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * linux/arch/m68knommu/mm/init.c
- *
- * Copyright (C) 1998 D. Jeff Dionne <jeff@lineo.ca>,
- * Kenneth Albanowski <kjahds@kjahds.com>,
- * Copyright (C) 2000 Lineo, Inc. (www.lineo.com)
- *
- * Based on:
- *
- * linux/arch/m68k/mm/init.c
- *
- * Copyright (C) 1995 Hamish Macdonald
- *
- * JAN/1999 -- hacked to support ColdFire (gerg@snapgear.com)
- * DEC/2000 -- linux 2.4 support <davidm@snapgear.com>
- */
-
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/ptrace.h>
-#include <linux/mman.h>
-#include <linux/mm.h>
-#include <linux/swap.h>
-#include <linux/init.h>
-#include <linux/highmem.h>
-#include <linux/pagemap.h>
-#include <linux/bootmem.h>
-#include <linux/gfp.h>
-
-#include <asm/setup.h>
-#include <asm/sections.h>
-#include <asm/segment.h>
-#include <asm/page.h>
-#include <asm/pgtable.h>
-#include <asm/machdep.h>
-
-/*
- * ZERO_PAGE is a special page that is used for zero-initialized
- * data and COW.
- */
-void *empty_zero_page;
-
-/*
- * paging_init() continues the virtual memory environment setup which
- * was begun by the code in arch/head.S.
- * The parameters are pointers to where to stick the starting and ending
- * addresses of available kernel virtual memory.
- */
-void __init paging_init(void)
-{
- /*
- * Make sure start_mem is page aligned, otherwise bootmem and
- * page_alloc get different views of the world.
- */
- unsigned long end_mem = memory_end & PAGE_MASK;
- unsigned long zones_size[MAX_NR_ZONES] = {0, };
-
- empty_zero_page = alloc_bootmem_pages(PAGE_SIZE);
- memset(empty_zero_page, 0, PAGE_SIZE);
-
- /*
- * Set up SFC/DFC registers (user data space).
- */
- set_fs (USER_DS);
-
- zones_size[ZONE_DMA] = (end_mem - PAGE_OFFSET) >> PAGE_SHIFT;
- free_area_init(zones_size);
-}
-
-void __init mem_init(void)
-{
- int codek = 0, datak = 0, initk = 0;
- unsigned long tmp;
- unsigned long len = _ramend - _rambase;
- unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */
- unsigned long end_mem = memory_end; /* DAVIDM - this must not include kernel stack at top */
-
- pr_debug("Mem_init: start=%lx, end=%lx\n", start_mem, end_mem);
-
- end_mem &= PAGE_MASK;
- high_memory = (void *) end_mem;
-
- start_mem = PAGE_ALIGN(start_mem);
- max_mapnr = num_physpages = (((unsigned long) high_memory) - PAGE_OFFSET) >> PAGE_SHIFT;
-
- /* this will put all memory onto the freelists */
- totalram_pages = free_all_bootmem();
-
- codek = (_etext - _stext) >> 10;
- datak = (_ebss - _sdata) >> 10;
- initk = (__init_begin - __init_end) >> 10;
-
- tmp = nr_free_pages() << PAGE_SHIFT;
- printk(KERN_INFO "Memory available: %luk/%luk RAM, (%dk kernel code, %dk data)\n",
- tmp >> 10,
- len >> 10,
- codek,
- datak
- );
-}
-
-
-#ifdef CONFIG_BLK_DEV_INITRD
-void free_initrd_mem(unsigned long start, unsigned long end)
-{
- int pages = 0;
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page(start);
- totalram_pages++;
- pages++;
- }
- pr_notice("Freeing initrd memory: %luk freed\n",
- pages * (PAGE_SIZE / 1024));
-}
-#endif
-
-void free_initmem(void)
-{
-#ifdef CONFIG_RAMKERNEL
- unsigned long addr;
- /*
- * The following code should be cool even if these sections
- * are not page aligned.
- */
- addr = PAGE_ALIGN((unsigned long) __init_begin);
- /* next to check that the page we free is not a partial page */
- for (; addr + PAGE_SIZE < ((unsigned long) __init_end); addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- free_page(addr);
- totalram_pages++;
- }
- pr_notice("Freeing unused kernel memory: %luk freed (0x%x - 0x%x)\n",
- (addr - PAGE_ALIGN((unsigned long) __init_begin)) >> 10,
- (int)(PAGE_ALIGN((unsigned long) __init_begin)),
- (int)(addr - PAGE_SIZE));
-#endif
-}
-
diff --git a/ANDROID_3.4.5/arch/m68k/mm/kmap.c b/ANDROID_3.4.5/arch/m68k/mm/kmap.c
deleted file mode 100644
index 568cfad3..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/kmap.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * linux/arch/m68k/mm/kmap.c
- *
- * Copyright (C) 1997 Roman Hodek
- *
- * 10/01/99 cleaned up the code and changing to the same interface
- * used by other architectures /Roman Zippel
- */
-
-#include <linux/module.h>
-#include <linux/mm.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/slab.h>
-#include <linux/vmalloc.h>
-
-#include <asm/setup.h>
-#include <asm/segment.h>
-#include <asm/page.h>
-#include <asm/pgalloc.h>
-#include <asm/io.h>
-
-#undef DEBUG
-
-#define PTRTREESIZE (256*1024)
-
-/*
- * For 040/060 we can use the virtual memory area like other architectures,
- * but for 020/030 we want to use early termination page descriptor and we
- * can't mix this with normal page descriptors, so we have to copy that code
- * (mm/vmalloc.c) and return appriorate aligned addresses.
- */
-
-#ifdef CPU_M68040_OR_M68060_ONLY
-
-#define IO_SIZE PAGE_SIZE
-
-static inline struct vm_struct *get_io_area(unsigned long size)
-{
- return get_vm_area(size, VM_IOREMAP);
-}
-
-
-static inline void free_io_area(void *addr)
-{
- vfree((void *)(PAGE_MASK & (unsigned long)addr));
-}
-
-#else
-
-#define IO_SIZE (256*1024)
-
-static struct vm_struct *iolist;
-
-static struct vm_struct *get_io_area(unsigned long size)
-{
- unsigned long addr;
- struct vm_struct **p, *tmp, *area;
-
- area = kmalloc(sizeof(*area), GFP_KERNEL);
- if (!area)
- return NULL;
- addr = KMAP_START;
- for (p = &iolist; (tmp = *p) ; p = &tmp->next) {
- if (size + addr < (unsigned long)tmp->addr)
- break;
- if (addr > KMAP_END-size) {
- kfree(area);
- return NULL;
- }
- addr = tmp->size + (unsigned long)tmp->addr;
- }
- area->addr = (void *)addr;
- area->size = size + IO_SIZE;
- area->next = *p;
- *p = area;
- return area;
-}
-
-static inline void free_io_area(void *addr)
-{
- struct vm_struct **p, *tmp;
-
- if (!addr)
- return;
- addr = (void *)((unsigned long)addr & -IO_SIZE);
- for (p = &iolist ; (tmp = *p) ; p = &tmp->next) {
- if (tmp->addr == addr) {
- *p = tmp->next;
- __iounmap(tmp->addr, tmp->size);
- kfree(tmp);
- return;
- }
- }
-}
-
-#endif
-
-/*
- * Map some physical address range into the kernel address space.
- */
-/* Rewritten by Andreas Schwab to remove all races. */
-
-void __iomem *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag)
-{
- struct vm_struct *area;
- unsigned long virtaddr, retaddr;
- long offset;
- pgd_t *pgd_dir;
- pmd_t *pmd_dir;
- pte_t *pte_dir;
-
- /*
- * Don't allow mappings that wrap..
- */
- if (!size || physaddr > (unsigned long)(-size))
- return NULL;
-
-#ifdef CONFIG_AMIGA
- if (MACH_IS_AMIGA) {
- if ((physaddr >= 0x40000000) && (physaddr + size < 0x60000000)
- && (cacheflag == IOMAP_NOCACHE_SER))
- return (void __iomem *)physaddr;
- }
-#endif
-
-#ifdef DEBUG
- printk("ioremap: 0x%lx,0x%lx(%d) - ", physaddr, size, cacheflag);
-#endif
- /*
- * Mappings have to be aligned
- */
- offset = physaddr & (IO_SIZE - 1);
- physaddr &= -IO_SIZE;
- size = (size + offset + IO_SIZE - 1) & -IO_SIZE;
-
- /*
- * Ok, go for it..
- */
- area = get_io_area(size);
- if (!area)
- return NULL;
-
- virtaddr = (unsigned long)area->addr;
- retaddr = virtaddr + offset;
-#ifdef DEBUG
- printk("0x%lx,0x%lx,0x%lx", physaddr, virtaddr, retaddr);
-#endif
-
- /*
- * add cache and table flags to physical address
- */
- if (CPU_IS_040_OR_060) {
- physaddr |= (_PAGE_PRESENT | _PAGE_GLOBAL040 |
- _PAGE_ACCESSED | _PAGE_DIRTY);
- switch (cacheflag) {
- case IOMAP_FULL_CACHING:
- physaddr |= _PAGE_CACHE040;
- break;
- case IOMAP_NOCACHE_SER:
- default:
- physaddr |= _PAGE_NOCACHE_S;
- break;
- case IOMAP_NOCACHE_NONSER:
- physaddr |= _PAGE_NOCACHE;
- break;
- case IOMAP_WRITETHROUGH:
- physaddr |= _PAGE_CACHE040W;
- break;
- }
- } else {
- physaddr |= (_PAGE_PRESENT | _PAGE_ACCESSED |
- _PAGE_DIRTY | _PAGE_READWRITE);
- switch (cacheflag) {
- case IOMAP_NOCACHE_SER:
- case IOMAP_NOCACHE_NONSER:
- default:
- physaddr |= _PAGE_NOCACHE030;
- break;
- case IOMAP_FULL_CACHING:
- case IOMAP_WRITETHROUGH:
- break;
- }
- }
-
- while ((long)size > 0) {
-#ifdef DEBUG
- if (!(virtaddr & (PTRTREESIZE-1)))
- printk ("\npa=%#lx va=%#lx ", physaddr, virtaddr);
-#endif
- pgd_dir = pgd_offset_k(virtaddr);
- pmd_dir = pmd_alloc(&init_mm, pgd_dir, virtaddr);
- if (!pmd_dir) {
- printk("ioremap: no mem for pmd_dir\n");
- return NULL;
- }
-
- if (CPU_IS_020_OR_030) {
- pmd_dir->pmd[(virtaddr/PTRTREESIZE) & 15] = physaddr;
- physaddr += PTRTREESIZE;
- virtaddr += PTRTREESIZE;
- size -= PTRTREESIZE;
- } else {
- pte_dir = pte_alloc_kernel(pmd_dir, virtaddr);
- if (!pte_dir) {
- printk("ioremap: no mem for pte_dir\n");
- return NULL;
- }
-
- pte_val(*pte_dir) = physaddr;
- virtaddr += PAGE_SIZE;
- physaddr += PAGE_SIZE;
- size -= PAGE_SIZE;
- }
- }
-#ifdef DEBUG
- printk("\n");
-#endif
- flush_tlb_all();
-
- return (void __iomem *)retaddr;
-}
-EXPORT_SYMBOL(__ioremap);
-
-/*
- * Unmap a ioremap()ed region again
- */
-void iounmap(void __iomem *addr)
-{
-#ifdef CONFIG_AMIGA
- if ((!MACH_IS_AMIGA) ||
- (((unsigned long)addr < 0x40000000) ||
- ((unsigned long)addr > 0x60000000)))
- free_io_area((__force void *)addr);
-#else
- free_io_area((__force void *)addr);
-#endif
-}
-EXPORT_SYMBOL(iounmap);
-
-/*
- * __iounmap unmaps nearly everything, so be careful
- * it doesn't free currently pointer/page tables anymore but it
- * wans't used anyway and might be added later.
- */
-void __iounmap(void *addr, unsigned long size)
-{
- unsigned long virtaddr = (unsigned long)addr;
- pgd_t *pgd_dir;
- pmd_t *pmd_dir;
- pte_t *pte_dir;
-
- while ((long)size > 0) {
- pgd_dir = pgd_offset_k(virtaddr);
- if (pgd_bad(*pgd_dir)) {
- printk("iounmap: bad pgd(%08lx)\n", pgd_val(*pgd_dir));
- pgd_clear(pgd_dir);
- return;
- }
- pmd_dir = pmd_offset(pgd_dir, virtaddr);
-
- if (CPU_IS_020_OR_030) {
- int pmd_off = (virtaddr/PTRTREESIZE) & 15;
- int pmd_type = pmd_dir->pmd[pmd_off] & _DESCTYPE_MASK;
-
- if (pmd_type == _PAGE_PRESENT) {
- pmd_dir->pmd[pmd_off] = 0;
- virtaddr += PTRTREESIZE;
- size -= PTRTREESIZE;
- continue;
- } else if (pmd_type == 0)
- continue;
- }
-
- if (pmd_bad(*pmd_dir)) {
- printk("iounmap: bad pmd (%08lx)\n", pmd_val(*pmd_dir));
- pmd_clear(pmd_dir);
- return;
- }
- pte_dir = pte_offset_kernel(pmd_dir, virtaddr);
-
- pte_val(*pte_dir) = 0;
- virtaddr += PAGE_SIZE;
- size -= PAGE_SIZE;
- }
-
- flush_tlb_all();
-}
-
-/*
- * Set new cache mode for some kernel address space.
- * The caller must push data for that range itself, if such data may already
- * be in the cache.
- */
-void kernel_set_cachemode(void *addr, unsigned long size, int cmode)
-{
- unsigned long virtaddr = (unsigned long)addr;
- pgd_t *pgd_dir;
- pmd_t *pmd_dir;
- pte_t *pte_dir;
-
- if (CPU_IS_040_OR_060) {
- switch (cmode) {
- case IOMAP_FULL_CACHING:
- cmode = _PAGE_CACHE040;
- break;
- case IOMAP_NOCACHE_SER:
- default:
- cmode = _PAGE_NOCACHE_S;
- break;
- case IOMAP_NOCACHE_NONSER:
- cmode = _PAGE_NOCACHE;
- break;
- case IOMAP_WRITETHROUGH:
- cmode = _PAGE_CACHE040W;
- break;
- }
- } else {
- switch (cmode) {
- case IOMAP_NOCACHE_SER:
- case IOMAP_NOCACHE_NONSER:
- default:
- cmode = _PAGE_NOCACHE030;
- break;
- case IOMAP_FULL_CACHING:
- case IOMAP_WRITETHROUGH:
- cmode = 0;
- }
- }
-
- while ((long)size > 0) {
- pgd_dir = pgd_offset_k(virtaddr);
- if (pgd_bad(*pgd_dir)) {
- printk("iocachemode: bad pgd(%08lx)\n", pgd_val(*pgd_dir));
- pgd_clear(pgd_dir);
- return;
- }
- pmd_dir = pmd_offset(pgd_dir, virtaddr);
-
- if (CPU_IS_020_OR_030) {
- int pmd_off = (virtaddr/PTRTREESIZE) & 15;
-
- if ((pmd_dir->pmd[pmd_off] & _DESCTYPE_MASK) == _PAGE_PRESENT) {
- pmd_dir->pmd[pmd_off] = (pmd_dir->pmd[pmd_off] &
- _CACHEMASK040) | cmode;
- virtaddr += PTRTREESIZE;
- size -= PTRTREESIZE;
- continue;
- }
- }
-
- if (pmd_bad(*pmd_dir)) {
- printk("iocachemode: bad pmd (%08lx)\n", pmd_val(*pmd_dir));
- pmd_clear(pmd_dir);
- return;
- }
- pte_dir = pte_offset_kernel(pmd_dir, virtaddr);
-
- pte_val(*pte_dir) = (pte_val(*pte_dir) & _CACHEMASK040) | cmode;
- virtaddr += PAGE_SIZE;
- size -= PAGE_SIZE;
- }
-
- flush_tlb_all();
-}
-EXPORT_SYMBOL(kernel_set_cachemode);
diff --git a/ANDROID_3.4.5/arch/m68k/mm/mcfmmu.c b/ANDROID_3.4.5/arch/m68k/mm/mcfmmu.c
deleted file mode 100644
index 875b800e..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/mcfmmu.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Based upon linux/arch/m68k/mm/sun3mmu.c
- * Based upon linux/arch/ppc/mm/mmu_context.c
- *
- * Implementations of mm routines specific to the Coldfire MMU.
- *
- * Copyright (c) 2008 Freescale Semiconductor, Inc.
- */
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/mm.h>
-#include <linux/init.h>
-#include <linux/string.h>
-#include <linux/bootmem.h>
-
-#include <asm/setup.h>
-#include <asm/page.h>
-#include <asm/pgtable.h>
-#include <asm/mmu_context.h>
-#include <asm/mcf_pgalloc.h>
-#include <asm/tlbflush.h>
-
-#define KMAPAREA(x) ((x >= VMALLOC_START) && (x < KMAP_END))
-
-mm_context_t next_mmu_context;
-unsigned long context_map[LAST_CONTEXT / BITS_PER_LONG + 1];
-atomic_t nr_free_contexts;
-struct mm_struct *context_mm[LAST_CONTEXT+1];
-extern unsigned long num_pages;
-
-void free_initmem(void)
-{
-}
-
-/*
- * ColdFire paging_init derived from sun3.
- */
-void __init paging_init(void)
-{
- pgd_t *pg_dir;
- pte_t *pg_table;
- unsigned long address, size;
- unsigned long next_pgtable, bootmem_end;
- unsigned long zones_size[MAX_NR_ZONES];
- enum zone_type zone;
- int i;
-
- empty_zero_page = (void *) alloc_bootmem_pages(PAGE_SIZE);
- memset((void *) empty_zero_page, 0, PAGE_SIZE);
-
- pg_dir = swapper_pg_dir;
- memset(swapper_pg_dir, 0, sizeof(swapper_pg_dir));
-
- size = num_pages * sizeof(pte_t);
- size = (size + PAGE_SIZE) & ~(PAGE_SIZE-1);
- next_pgtable = (unsigned long) alloc_bootmem_pages(size);
-
- bootmem_end = (next_pgtable + size + PAGE_SIZE) & PAGE_MASK;
- pg_dir += PAGE_OFFSET >> PGDIR_SHIFT;
-
- address = PAGE_OFFSET;
- while (address < (unsigned long)high_memory) {
- pg_table = (pte_t *) next_pgtable;
- next_pgtable += PTRS_PER_PTE * sizeof(pte_t);
- pgd_val(*pg_dir) = (unsigned long) pg_table;
- pg_dir++;
-
- /* now change pg_table to kernel virtual addresses */
- for (i = 0; i < PTRS_PER_PTE; ++i, ++pg_table) {
- pte_t pte = pfn_pte(virt_to_pfn(address), PAGE_INIT);
- if (address >= (unsigned long) high_memory)
- pte_val(pte) = 0;
-
- set_pte(pg_table, pte);
- address += PAGE_SIZE;
- }
- }
-
- current->mm = NULL;
-
- for (zone = 0; zone < MAX_NR_ZONES; zone++)
- zones_size[zone] = 0x0;
- zones_size[ZONE_DMA] = num_pages;
- free_area_init(zones_size);
-}
-
-int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word)
-{
- unsigned long flags, mmuar, mmutr;
- struct mm_struct *mm;
- pgd_t *pgd;
- pmd_t *pmd;
- pte_t *pte;
- int asid;
-
- local_irq_save(flags);
-
- mmuar = (dtlb) ? mmu_read(MMUAR) :
- regs->pc + (extension_word * sizeof(long));
-
- mm = (!user_mode(regs) && KMAPAREA(mmuar)) ? &init_mm : current->mm;
- if (!mm) {
- local_irq_restore(flags);
- return -1;
- }
-
- pgd = pgd_offset(mm, mmuar);
- if (pgd_none(*pgd)) {
- local_irq_restore(flags);
- return -1;
- }
-
- pmd = pmd_offset(pgd, mmuar);
- if (pmd_none(*pmd)) {
- local_irq_restore(flags);
- return -1;
- }
-
- pte = (KMAPAREA(mmuar)) ? pte_offset_kernel(pmd, mmuar)
- : pte_offset_map(pmd, mmuar);
- if (pte_none(*pte) || !pte_present(*pte)) {
- local_irq_restore(flags);
- return -1;
- }
-
- if (write) {
- if (!pte_write(*pte)) {
- local_irq_restore(flags);
- return -1;
- }
- set_pte(pte, pte_mkdirty(*pte));
- }
-
- set_pte(pte, pte_mkyoung(*pte));
- asid = mm->context & 0xff;
- if (!pte_dirty(*pte) && !KMAPAREA(mmuar))
- set_pte(pte, pte_wrprotect(*pte));
-
- mmutr = (mmuar & PAGE_MASK) | (asid << MMUTR_IDN) | MMUTR_V;
- if ((mmuar < TASK_UNMAPPED_BASE) || (mmuar >= TASK_SIZE))
- mmutr |= (pte->pte & CF_PAGE_MMUTR_MASK) >> CF_PAGE_MMUTR_SHIFT;
- mmu_write(MMUTR, mmutr);
-
- mmu_write(MMUDR, (pte_val(*pte) & PAGE_MASK) |
- ((pte->pte) & CF_PAGE_MMUDR_MASK) | MMUDR_SZ_8KB | MMUDR_X);
-
- if (dtlb)
- mmu_write(MMUOR, MMUOR_ACC | MMUOR_UAA);
- else
- mmu_write(MMUOR, MMUOR_ITLB | MMUOR_ACC | MMUOR_UAA);
-
- local_irq_restore(flags);
- return 0;
-}
-
-/*
- * Initialize the context management stuff.
- * The following was taken from arch/ppc/mmu_context.c
- */
-void __init mmu_context_init(void)
-{
- /*
- * Some processors have too few contexts to reserve one for
- * init_mm, and require using context 0 for a normal task.
- * Other processors reserve the use of context zero for the kernel.
- * This code assumes FIRST_CONTEXT < 32.
- */
- context_map[0] = (1 << FIRST_CONTEXT) - 1;
- next_mmu_context = FIRST_CONTEXT;
- atomic_set(&nr_free_contexts, LAST_CONTEXT - FIRST_CONTEXT + 1);
-}
-
-/*
- * Steal a context from a task that has one at the moment.
- * This is only used on 8xx and 4xx and we presently assume that
- * they don't do SMP. If they do then thicfpgalloc.hs will have to check
- * whether the MM we steal is in use.
- * We also assume that this is only used on systems that don't
- * use an MMU hash table - this is true for 8xx and 4xx.
- * This isn't an LRU system, it just frees up each context in
- * turn (sort-of pseudo-random replacement :). This would be the
- * place to implement an LRU scheme if anyone was motivated to do it.
- * -- paulus
- */
-void steal_context(void)
-{
- struct mm_struct *mm;
- /*
- * free up context `next_mmu_context'
- * if we shouldn't free context 0, don't...
- */
- if (next_mmu_context < FIRST_CONTEXT)
- next_mmu_context = FIRST_CONTEXT;
- mm = context_mm[next_mmu_context];
- flush_tlb_mm(mm);
- destroy_context(mm);
-}
-
diff --git a/ANDROID_3.4.5/arch/m68k/mm/memory.c b/ANDROID_3.4.5/arch/m68k/mm/memory.c
deleted file mode 100644
index 250b8b78..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/memory.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * linux/arch/m68k/mm/memory.c
- *
- * Copyright (C) 1995 Hamish Macdonald
- */
-
-#include <linux/module.h>
-#include <linux/mm.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/pagemap.h>
-#include <linux/gfp.h>
-
-#include <asm/setup.h>
-#include <asm/segment.h>
-#include <asm/page.h>
-#include <asm/pgalloc.h>
-#include <asm/traps.h>
-#include <asm/machdep.h>
-
-
-/* ++andreas: {get,free}_pointer_table rewritten to use unused fields from
- struct page instead of separately kmalloced struct. Stolen from
- arch/sparc/mm/srmmu.c ... */
-
-typedef struct list_head ptable_desc;
-static LIST_HEAD(ptable_list);
-
-#define PD_PTABLE(page) ((ptable_desc *)&(virt_to_page(page)->lru))
-#define PD_PAGE(ptable) (list_entry(ptable, struct page, lru))
-#define PD_MARKBITS(dp) (*(unsigned char *)&PD_PAGE(dp)->index)
-
-#define PTABLE_SIZE (PTRS_PER_PMD * sizeof(pmd_t))
-
-void __init init_pointer_table(unsigned long ptable)
-{
- ptable_desc *dp;
- unsigned long page = ptable & PAGE_MASK;
- unsigned char mask = 1 << ((ptable - page)/PTABLE_SIZE);
-
- dp = PD_PTABLE(page);
- if (!(PD_MARKBITS(dp) & mask)) {
- PD_MARKBITS(dp) = 0xff;
- list_add(dp, &ptable_list);
- }
-
- PD_MARKBITS(dp) &= ~mask;
-#ifdef DEBUG
- printk("init_pointer_table: %lx, %x\n", ptable, PD_MARKBITS(dp));
-#endif
-
- /* unreserve the page so it's possible to free that page */
- PD_PAGE(dp)->flags &= ~(1 << PG_reserved);
- init_page_count(PD_PAGE(dp));
-
- return;
-}
-
-pmd_t *get_pointer_table (void)
-{
- ptable_desc *dp = ptable_list.next;
- unsigned char mask = PD_MARKBITS (dp);
- unsigned char tmp;
- unsigned int off;
-
- /*
- * For a pointer table for a user process address space, a
- * table is taken from a page allocated for the purpose. Each
- * page can hold 8 pointer tables. The page is remapped in
- * virtual address space to be noncacheable.
- */
- if (mask == 0) {
- void *page;
- ptable_desc *new;
-
- if (!(page = (void *)get_zeroed_page(GFP_KERNEL)))
- return NULL;
-
- flush_tlb_kernel_page(page);
- nocache_page(page);
-
- new = PD_PTABLE(page);
- PD_MARKBITS(new) = 0xfe;
- list_add_tail(new, dp);
-
- return (pmd_t *)page;
- }
-
- for (tmp = 1, off = 0; (mask & tmp) == 0; tmp <<= 1, off += PTABLE_SIZE)
- ;
- PD_MARKBITS(dp) = mask & ~tmp;
- if (!PD_MARKBITS(dp)) {
- /* move to end of list */
- list_move_tail(dp, &ptable_list);
- }
- return (pmd_t *) (page_address(PD_PAGE(dp)) + off);
-}
-
-int free_pointer_table (pmd_t *ptable)
-{
- ptable_desc *dp;
- unsigned long page = (unsigned long)ptable & PAGE_MASK;
- unsigned char mask = 1 << (((unsigned long)ptable - page)/PTABLE_SIZE);
-
- dp = PD_PTABLE(page);
- if (PD_MARKBITS (dp) & mask)
- panic ("table already free!");
-
- PD_MARKBITS (dp) |= mask;
-
- if (PD_MARKBITS(dp) == 0xff) {
- /* all tables in page are free, free page */
- list_del(dp);
- cache_page((void *)page);
- free_page (page);
- return 1;
- } else if (ptable_list.next != dp) {
- /*
- * move this descriptor to the front of the list, since
- * it has one or more free tables.
- */
- list_move(dp, &ptable_list);
- }
- return 0;
-}
-
-/* invalidate page in both caches */
-static inline void clear040(unsigned long paddr)
-{
- asm volatile (
- "nop\n\t"
- ".chip 68040\n\t"
- "cinvp %%bc,(%0)\n\t"
- ".chip 68k"
- : : "a" (paddr));
-}
-
-/* invalidate page in i-cache */
-static inline void cleari040(unsigned long paddr)
-{
- asm volatile (
- "nop\n\t"
- ".chip 68040\n\t"
- "cinvp %%ic,(%0)\n\t"
- ".chip 68k"
- : : "a" (paddr));
-}
-
-/* push page in both caches */
-/* RZ: cpush %bc DOES invalidate %ic, regardless of DPI */
-static inline void push040(unsigned long paddr)
-{
- asm volatile (
- "nop\n\t"
- ".chip 68040\n\t"
- "cpushp %%bc,(%0)\n\t"
- ".chip 68k"
- : : "a" (paddr));
-}
-
-/* push and invalidate page in both caches, must disable ints
- * to avoid invalidating valid data */
-static inline void pushcl040(unsigned long paddr)
-{
- unsigned long flags;
-
- local_irq_save(flags);
- push040(paddr);
- if (CPU_IS_060)
- clear040(paddr);
- local_irq_restore(flags);
-}
-
-/*
- * 040: Hit every page containing an address in the range paddr..paddr+len-1.
- * (Low order bits of the ea of a CINVP/CPUSHP are "don't care"s).
- * Hit every page until there is a page or less to go. Hit the next page,
- * and the one after that if the range hits it.
- */
-/* ++roman: A little bit more care is required here: The CINVP instruction
- * invalidates cache entries WITHOUT WRITING DIRTY DATA BACK! So the beginning
- * and the end of the region must be treated differently if they are not
- * exactly at the beginning or end of a page boundary. Else, maybe too much
- * data becomes invalidated and thus lost forever. CPUSHP does what we need:
- * it invalidates the page after pushing dirty data to memory. (Thanks to Jes
- * for discovering the problem!)
- */
-/* ... but on the '060, CPUSH doesn't invalidate (for us, since we have set
- * the DPI bit in the CACR; would it cause problems with temporarily changing
- * this?). So we have to push first and then additionally to invalidate.
- */
-
-
-/*
- * cache_clear() semantics: Clear any cache entries for the area in question,
- * without writing back dirty entries first. This is useful if the data will
- * be overwritten anyway, e.g. by DMA to memory. The range is defined by a
- * _physical_ address.
- */
-
-void cache_clear (unsigned long paddr, int len)
-{
- if (CPU_IS_COLDFIRE) {
- flush_cf_bcache(0, DCACHE_MAX_ADDR);
- } else if (CPU_IS_040_OR_060) {
- int tmp;
-
- /*
- * We need special treatment for the first page, in case it
- * is not page-aligned. Page align the addresses to work
- * around bug I17 in the 68060.
- */
- if ((tmp = -paddr & (PAGE_SIZE - 1))) {
- pushcl040(paddr & PAGE_MASK);
- if ((len -= tmp) <= 0)
- return;
- paddr += tmp;
- }
- tmp = PAGE_SIZE;
- paddr &= PAGE_MASK;
- while ((len -= tmp) >= 0) {
- clear040(paddr);
- paddr += tmp;
- }
- if ((len += tmp))
- /* a page boundary gets crossed at the end */
- pushcl040(paddr);
- }
- else /* 68030 or 68020 */
- asm volatile ("movec %/cacr,%/d0\n\t"
- "oriw %0,%/d0\n\t"
- "movec %/d0,%/cacr"
- : : "i" (FLUSH_I_AND_D)
- : "d0");
-#ifdef CONFIG_M68K_L2_CACHE
- if(mach_l2_flush)
- mach_l2_flush(0);
-#endif
-}
-EXPORT_SYMBOL(cache_clear);
-
-
-/*
- * cache_push() semantics: Write back any dirty cache data in the given area,
- * and invalidate the range in the instruction cache. It needs not (but may)
- * invalidate those entries also in the data cache. The range is defined by a
- * _physical_ address.
- */
-
-void cache_push (unsigned long paddr, int len)
-{
- if (CPU_IS_COLDFIRE) {
- flush_cf_bcache(0, DCACHE_MAX_ADDR);
- } else if (CPU_IS_040_OR_060) {
- int tmp = PAGE_SIZE;
-
- /*
- * on 68040 or 68060, push cache lines for pages in the range;
- * on the '040 this also invalidates the pushed lines, but not on
- * the '060!
- */
- len += paddr & (PAGE_SIZE - 1);
-
- /*
- * Work around bug I17 in the 68060 affecting some instruction
- * lines not being invalidated properly.
- */
- paddr &= PAGE_MASK;
-
- do {
- push040(paddr);
- paddr += tmp;
- } while ((len -= tmp) > 0);
- }
- /*
- * 68030/68020 have no writeback cache. On the other hand,
- * cache_push is actually a superset of cache_clear (the lines
- * get written back and invalidated), so we should make sure
- * to perform the corresponding actions. After all, this is getting
- * called in places where we've just loaded code, or whatever, so
- * flushing the icache is appropriate; flushing the dcache shouldn't
- * be required.
- */
- else /* 68030 or 68020 */
- asm volatile ("movec %/cacr,%/d0\n\t"
- "oriw %0,%/d0\n\t"
- "movec %/d0,%/cacr"
- : : "i" (FLUSH_I)
- : "d0");
-#ifdef CONFIG_M68K_L2_CACHE
- if(mach_l2_flush)
- mach_l2_flush(1);
-#endif
-}
-EXPORT_SYMBOL(cache_push);
-
diff --git a/ANDROID_3.4.5/arch/m68k/mm/motorola.c b/ANDROID_3.4.5/arch/m68k/mm/motorola.c
deleted file mode 100644
index 0dafa693..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/motorola.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * linux/arch/m68k/mm/motorola.c
- *
- * Routines specific to the Motorola MMU, originally from:
- * linux/arch/m68k/init.c
- * which are Copyright (C) 1995 Hamish Macdonald
- *
- * Moved 8/20/1999 Sam Creasey
- */
-
-#include <linux/module.h>
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <linux/swap.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/bootmem.h>
-#include <linux/gfp.h>
-
-#include <asm/setup.h>
-#include <asm/uaccess.h>
-#include <asm/page.h>
-#include <asm/pgalloc.h>
-#include <asm/machdep.h>
-#include <asm/io.h>
-#include <asm/dma.h>
-#ifdef CONFIG_ATARI
-#include <asm/atari_stram.h>
-#endif
-#include <asm/sections.h>
-
-#undef DEBUG
-
-#ifndef mm_cachebits
-/*
- * Bits to add to page descriptors for "normal" caching mode.
- * For 68020/030 this is 0.
- * For 68040, this is _PAGE_CACHE040 (cachable, copyback)
- */
-unsigned long mm_cachebits;
-EXPORT_SYMBOL(mm_cachebits);
-#endif
-
-/* size of memory already mapped in head.S */
-#define INIT_MAPPED_SIZE (4UL<<20)
-
-extern unsigned long availmem;
-
-static pte_t * __init kernel_page_table(void)
-{
- pte_t *ptablep;
-
- ptablep = (pte_t *)alloc_bootmem_low_pages(PAGE_SIZE);
-
- clear_page(ptablep);
- __flush_page_to_ram(ptablep);
- flush_tlb_kernel_page(ptablep);
- nocache_page(ptablep);
-
- return ptablep;
-}
-
-static pmd_t *last_pgtable __initdata = NULL;
-pmd_t *zero_pgtable __initdata = NULL;
-
-static pmd_t * __init kernel_ptr_table(void)
-{
- if (!last_pgtable) {
- unsigned long pmd, last;
- int i;
-
- /* Find the last ptr table that was used in head.S and
- * reuse the remaining space in that page for further
- * ptr tables.
- */
- last = (unsigned long)kernel_pg_dir;
- for (i = 0; i < PTRS_PER_PGD; i++) {
- if (!pgd_present(kernel_pg_dir[i]))
- continue;
- pmd = __pgd_page(kernel_pg_dir[i]);
- if (pmd > last)
- last = pmd;
- }
-
- last_pgtable = (pmd_t *)last;
-#ifdef DEBUG
- printk("kernel_ptr_init: %p\n", last_pgtable);
-#endif
- }
-
- last_pgtable += PTRS_PER_PMD;
- if (((unsigned long)last_pgtable & ~PAGE_MASK) == 0) {
- last_pgtable = (pmd_t *)alloc_bootmem_low_pages(PAGE_SIZE);
-
- clear_page(last_pgtable);
- __flush_page_to_ram(last_pgtable);
- flush_tlb_kernel_page(last_pgtable);
- nocache_page(last_pgtable);
- }
-
- return last_pgtable;
-}
-
-static void __init map_node(int node)
-{
-#define PTRTREESIZE (256*1024)
-#define ROOTTREESIZE (32*1024*1024)
- unsigned long physaddr, virtaddr, size;
- pgd_t *pgd_dir;
- pmd_t *pmd_dir;
- pte_t *pte_dir;
-
- size = m68k_memory[node].size;
- physaddr = m68k_memory[node].addr;
- virtaddr = (unsigned long)phys_to_virt(physaddr);
- physaddr |= m68k_supervisor_cachemode |
- _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_DIRTY;
- if (CPU_IS_040_OR_060)
- physaddr |= _PAGE_GLOBAL040;
-
- while (size > 0) {
-#ifdef DEBUG
- if (!(virtaddr & (PTRTREESIZE-1)))
- printk ("\npa=%#lx va=%#lx ", physaddr & PAGE_MASK,
- virtaddr);
-#endif
- pgd_dir = pgd_offset_k(virtaddr);
- if (virtaddr && CPU_IS_020_OR_030) {
- if (!(virtaddr & (ROOTTREESIZE-1)) &&
- size >= ROOTTREESIZE) {
-#ifdef DEBUG
- printk ("[very early term]");
-#endif
- pgd_val(*pgd_dir) = physaddr;
- size -= ROOTTREESIZE;
- virtaddr += ROOTTREESIZE;
- physaddr += ROOTTREESIZE;
- continue;
- }
- }
- if (!pgd_present(*pgd_dir)) {
- pmd_dir = kernel_ptr_table();
-#ifdef DEBUG
- printk ("[new pointer %p]", pmd_dir);
-#endif
- pgd_set(pgd_dir, pmd_dir);
- } else
- pmd_dir = pmd_offset(pgd_dir, virtaddr);
-
- if (CPU_IS_020_OR_030) {
- if (virtaddr) {
-#ifdef DEBUG
- printk ("[early term]");
-#endif
- pmd_dir->pmd[(virtaddr/PTRTREESIZE) & 15] = physaddr;
- physaddr += PTRTREESIZE;
- } else {
- int i;
-#ifdef DEBUG
- printk ("[zero map]");
-#endif
- zero_pgtable = kernel_ptr_table();
- pte_dir = (pte_t *)zero_pgtable;
- pmd_dir->pmd[0] = virt_to_phys(pte_dir) |
- _PAGE_TABLE | _PAGE_ACCESSED;
- pte_val(*pte_dir++) = 0;
- physaddr += PAGE_SIZE;
- for (i = 1; i < 64; physaddr += PAGE_SIZE, i++)
- pte_val(*pte_dir++) = physaddr;
- }
- size -= PTRTREESIZE;
- virtaddr += PTRTREESIZE;
- } else {
- if (!pmd_present(*pmd_dir)) {
-#ifdef DEBUG
- printk ("[new table]");
-#endif
- pte_dir = kernel_page_table();
- pmd_set(pmd_dir, pte_dir);
- }
- pte_dir = pte_offset_kernel(pmd_dir, virtaddr);
-
- if (virtaddr) {
- if (!pte_present(*pte_dir))
- pte_val(*pte_dir) = physaddr;
- } else
- pte_val(*pte_dir) = 0;
- size -= PAGE_SIZE;
- virtaddr += PAGE_SIZE;
- physaddr += PAGE_SIZE;
- }
-
- }
-#ifdef DEBUG
- printk("\n");
-#endif
-}
-
-/*
- * paging_init() continues the virtual memory environment setup which
- * was begun by the code in arch/head.S.
- */
-void __init paging_init(void)
-{
- unsigned long zones_size[MAX_NR_ZONES] = { 0, };
- unsigned long min_addr, max_addr;
- unsigned long addr, size, end;
- int i;
-
-#ifdef DEBUG
- printk ("start of paging_init (%p, %lx)\n", kernel_pg_dir, availmem);
-#endif
-
- /* Fix the cache mode in the page descriptors for the 680[46]0. */
- if (CPU_IS_040_OR_060) {
- int i;
-#ifndef mm_cachebits
- mm_cachebits = _PAGE_CACHE040;
-#endif
- for (i = 0; i < 16; i++)
- pgprot_val(protection_map[i]) |= _PAGE_CACHE040;
- }
-
- min_addr = m68k_memory[0].addr;
- max_addr = min_addr + m68k_memory[0].size;
- for (i = 1; i < m68k_num_memory;) {
- if (m68k_memory[i].addr < min_addr) {
- printk("Ignoring memory chunk at 0x%lx:0x%lx before the first chunk\n",
- m68k_memory[i].addr, m68k_memory[i].size);
- printk("Fix your bootloader or use a memfile to make use of this area!\n");
- m68k_num_memory--;
- memmove(m68k_memory + i, m68k_memory + i + 1,
- (m68k_num_memory - i) * sizeof(struct mem_info));
- continue;
- }
- addr = m68k_memory[i].addr + m68k_memory[i].size;
- if (addr > max_addr)
- max_addr = addr;
- i++;
- }
- m68k_memoffset = min_addr - PAGE_OFFSET;
- m68k_virt_to_node_shift = fls(max_addr - min_addr - 1) - 6;
-
- module_fixup(NULL, __start_fixup, __stop_fixup);
- flush_icache();
-
- high_memory = phys_to_virt(max_addr);
-
- min_low_pfn = availmem >> PAGE_SHIFT;
- max_low_pfn = max_addr >> PAGE_SHIFT;
-
- for (i = 0; i < m68k_num_memory; i++) {
- addr = m68k_memory[i].addr;
- end = addr + m68k_memory[i].size;
- m68k_setup_node(i);
- availmem = PAGE_ALIGN(availmem);
- availmem += init_bootmem_node(NODE_DATA(i),
- availmem >> PAGE_SHIFT,
- addr >> PAGE_SHIFT,
- end >> PAGE_SHIFT);
- }
-
- /*
- * Map the physical memory available into the kernel virtual
- * address space. First initialize the bootmem allocator with
- * the memory we already mapped, so map_node() has something
- * to allocate.
- */
- addr = m68k_memory[0].addr;
- size = m68k_memory[0].size;
- free_bootmem_node(NODE_DATA(0), availmem, min(INIT_MAPPED_SIZE, size) - (availmem - addr));
- map_node(0);
- if (size > INIT_MAPPED_SIZE)
- free_bootmem_node(NODE_DATA(0), addr + INIT_MAPPED_SIZE, size - INIT_MAPPED_SIZE);
-
- for (i = 1; i < m68k_num_memory; i++)
- map_node(i);
-
- flush_tlb_all();
-
- /*
- * initialize the bad page table and bad page to point
- * to a couple of allocated pages
- */
- empty_zero_page = alloc_bootmem_pages(PAGE_SIZE);
-
- /*
- * Set up SFC/DFC registers
- */
- set_fs(KERNEL_DS);
-
-#ifdef DEBUG
- printk ("before free_area_init\n");
-#endif
- for (i = 0; i < m68k_num_memory; i++) {
- zones_size[ZONE_DMA] = m68k_memory[i].size >> PAGE_SHIFT;
- free_area_init_node(i, zones_size,
- m68k_memory[i].addr >> PAGE_SHIFT, NULL);
- if (node_present_pages(i))
- node_set_state(i, N_NORMAL_MEMORY);
- }
-}
-
-void free_initmem(void)
-{
- unsigned long addr;
-
- addr = (unsigned long)__init_begin;
- for (; addr < (unsigned long)__init_end; addr += PAGE_SIZE) {
- virt_to_page(addr)->flags &= ~(1 << PG_reserved);
- init_page_count(virt_to_page(addr));
- free_page(addr);
- totalram_pages++;
- }
-}
-
-
diff --git a/ANDROID_3.4.5/arch/m68k/mm/sun3kmap.c b/ANDROID_3.4.5/arch/m68k/mm/sun3kmap.c
deleted file mode 100644
index 3dc41158..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/sun3kmap.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * linux/arch/m68k/mm/sun3kmap.c
- *
- * Copyright (C) 2002 Sam Creasey <sammy@sammy.net>
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file COPYING in the main directory of this archive
- * for more details.
- */
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/mm.h>
-#include <linux/vmalloc.h>
-
-#include <asm/page.h>
-#include <asm/pgtable.h>
-#include <asm/io.h>
-#include <asm/sun3mmu.h>
-
-#undef SUN3_KMAP_DEBUG
-
-#ifdef SUN3_KMAP_DEBUG
-extern void print_pte_vaddr(unsigned long vaddr);
-#endif
-
-extern void mmu_emu_map_pmeg (int context, int vaddr);
-
-static inline void do_page_mapin(unsigned long phys, unsigned long virt,
- unsigned long type)
-{
- unsigned long pte;
- pte_t ptep;
-
- ptep = pfn_pte(phys >> PAGE_SHIFT, PAGE_KERNEL);
- pte = pte_val(ptep);
- pte |= type;
-
- sun3_put_pte(virt, pte);
-
-#ifdef SUN3_KMAP_DEBUG
- print_pte_vaddr(virt);
-#endif
-
-}
-
-static inline void do_pmeg_mapin(unsigned long phys, unsigned long virt,
- unsigned long type, int pages)
-{
-
- if(sun3_get_segmap(virt & ~SUN3_PMEG_MASK) == SUN3_INVALID_PMEG)
- mmu_emu_map_pmeg(sun3_get_context(), virt);
-
- while(pages) {
- do_page_mapin(phys, virt, type);
- phys += PAGE_SIZE;
- virt += PAGE_SIZE;
- pages--;
- }
-}
-
-void __iomem *sun3_ioremap(unsigned long phys, unsigned long size,
- unsigned long type)
-{
- struct vm_struct *area;
- unsigned long offset, virt, ret;
- int pages;
-
- if(!size)
- return NULL;
-
- /* page align */
- offset = phys & (PAGE_SIZE-1);
- phys &= ~(PAGE_SIZE-1);
-
- size += offset;
- size = PAGE_ALIGN(size);
- if((area = get_vm_area(size, VM_IOREMAP)) == NULL)
- return NULL;
-
-#ifdef SUN3_KMAP_DEBUG
- printk("ioremap: got virt %p size %lx(%lx)\n",
- area->addr, size, area->size);
-#endif
-
- pages = size / PAGE_SIZE;
- virt = (unsigned long)area->addr;
- ret = virt + offset;
-
- while(pages) {
- int seg_pages;
-
- seg_pages = (SUN3_PMEG_SIZE - (virt & SUN3_PMEG_MASK)) / PAGE_SIZE;
- if(seg_pages > pages)
- seg_pages = pages;
-
- do_pmeg_mapin(phys, virt, type, seg_pages);
-
- pages -= seg_pages;
- phys += seg_pages * PAGE_SIZE;
- virt += seg_pages * PAGE_SIZE;
- }
-
- return (void __iomem *)ret;
-
-}
-EXPORT_SYMBOL(sun3_ioremap);
-
-
-void __iomem *__ioremap(unsigned long phys, unsigned long size, int cache)
-{
-
- return sun3_ioremap(phys, size, SUN3_PAGE_TYPE_IO);
-
-}
-EXPORT_SYMBOL(__ioremap);
-
-void iounmap(void __iomem *addr)
-{
- vfree((void *)(PAGE_MASK & (unsigned long)addr));
-}
-EXPORT_SYMBOL(iounmap);
-
-/* sun3_map_test(addr, val) -- Reads a byte from addr, storing to val,
- * trapping the potential read fault. Returns 0 if the access faulted,
- * 1 on success.
- *
- * This function is primarily used to check addresses on the VME bus.
- *
- * Mucking with the page fault handler seems a little hackish to me, but
- * SunOS, NetBSD, and Mach all implemented this check in such a manner,
- * so I figure we're allowed.
- */
-int sun3_map_test(unsigned long addr, char *val)
-{
- int ret = 0;
-
- __asm__ __volatile__
- (".globl _sun3_map_test_start\n"
- "_sun3_map_test_start:\n"
- "1: moveb (%2), (%0)\n"
- " moveq #1, %1\n"
- "2:\n"
- ".section .fixup,\"ax\"\n"
- ".even\n"
- "3: moveq #0, %1\n"
- " jmp 2b\n"
- ".previous\n"
- ".section __ex_table,\"a\"\n"
- ".align 4\n"
- ".long 1b,3b\n"
- ".previous\n"
- ".globl _sun3_map_test_end\n"
- "_sun3_map_test_end:\n"
- : "=a"(val), "=r"(ret)
- : "a"(addr));
-
- return ret;
-}
-EXPORT_SYMBOL(sun3_map_test);
diff --git a/ANDROID_3.4.5/arch/m68k/mm/sun3mmu.c b/ANDROID_3.4.5/arch/m68k/mm/sun3mmu.c
deleted file mode 100644
index e0804060..00000000
--- a/ANDROID_3.4.5/arch/m68k/mm/sun3mmu.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * linux/arch/m68k/mm/sun3mmu.c
- *
- * Implementations of mm routines specific to the sun3 MMU.
- *
- * Moved here 8/20/1999 Sam Creasey
- *
- */
-
-#include <linux/signal.h>
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <linux/swap.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/bootmem.h>
-
-#include <asm/setup.h>
-#include <asm/uaccess.h>
-#include <asm/page.h>
-#include <asm/pgtable.h>
-#include <asm/machdep.h>
-#include <asm/io.h>
-
-extern void mmu_emu_init (unsigned long bootmem_end);
-
-const char bad_pmd_string[] = "Bad pmd in pte_alloc: %08lx\n";
-
-extern unsigned long num_pages;
-
-void free_initmem(void)
-{
-}
-
-/* For the sun3 we try to follow the i386 paging_init() more closely */
-/* start_mem and end_mem have PAGE_OFFSET added already */
-/* now sets up tables using sun3 PTEs rather than i386 as before. --m */
-void __init paging_init(void)
-{
- pgd_t * pg_dir;
- pte_t * pg_table;
- int i;
- unsigned long address;
- unsigned long next_pgtable;
- unsigned long bootmem_end;
- unsigned long zones_size[MAX_NR_ZONES] = { 0, };
- unsigned long size;
-
-#ifdef TEST_VERIFY_AREA
- wp_works_ok = 0;
-#endif
- empty_zero_page = alloc_bootmem_pages(PAGE_SIZE);
-
- address = PAGE_OFFSET;
- pg_dir = swapper_pg_dir;
- memset (swapper_pg_dir, 0, sizeof (swapper_pg_dir));
- memset (kernel_pg_dir, 0, sizeof (kernel_pg_dir));
-
- size = num_pages * sizeof(pte_t);
- size = (size + PAGE_SIZE) & ~(PAGE_SIZE-1);
-
- next_pgtable = (unsigned long)alloc_bootmem_pages(size);
- bootmem_end = (next_pgtable + size + PAGE_SIZE) & PAGE_MASK;
-
- /* Map whole memory from PAGE_OFFSET (0x0E000000) */
- pg_dir += PAGE_OFFSET >> PGDIR_SHIFT;
-
- while (address < (unsigned long)high_memory) {
- pg_table = (pte_t *) __pa (next_pgtable);
- next_pgtable += PTRS_PER_PTE * sizeof (pte_t);
- pgd_val(*pg_dir) = (unsigned long) pg_table;
- pg_dir++;
-
- /* now change pg_table to kernel virtual addresses */
- pg_table = (pte_t *) __va ((unsigned long) pg_table);
- for (i=0; i<PTRS_PER_PTE; ++i, ++pg_table) {
- pte_t pte = pfn_pte(virt_to_pfn(address), PAGE_INIT);
- if (address >= (unsigned long)high_memory)
- pte_val (pte) = 0;
- set_pte (pg_table, pte);
- address += PAGE_SIZE;
- }
- }
-
- mmu_emu_init(bootmem_end);
-
- current->mm = NULL;
-
- /* memory sizing is a hack stolen from motorola.c.. hope it works for us */
- zones_size[ZONE_DMA] = ((unsigned long)high_memory - PAGE_OFFSET) >> PAGE_SHIFT;
-
- /* I really wish I knew why the following change made things better... -- Sam */
-/* free_area_init(zones_size); */
- free_area_init_node(0, zones_size,
- (__pa(PAGE_OFFSET) >> PAGE_SHIFT) + 1, NULL);
-
-
-}
-
-