[ARM] Rename mm-armv.c to pgd.c
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Wed, 27 Sep 2006 14:40:28 +0000 (15:40 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 27 Sep 2006 14:40:28 +0000 (15:40 +0100)
mm-armv.c now only contains the pgd allocation/freeing code, so
rename it to have a more sensible filename.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/Makefile
arch/arm/mm/mm-armv.c [deleted file]
arch/arm/mm/pgd.c [new file with mode: 0644]

index cabaa3b305488d166110ecb9c7d105481249ee28..2d0ab19db496cd310554c9213a348ff4f996508c 100644 (file)
@@ -6,7 +6,7 @@ obj-y                           := consistent.o extable.o fault.o init.o \
                                   iomap.o
 
 obj-$(CONFIG_MMU)              += fault-armv.o flush.o ioremap.o mmap.o \
-                                  mm-armv.o mmu.o
+                                  pgd.o mmu.o
 
 ifneq ($(CONFIG_MMU),y)
 obj-y                          += nommu.o
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c
deleted file mode 100644 (file)
index a35d5f2..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- *  linux/arch/arm/mm/mm-armv.c
- *
- *  Copyright (C) 1998-2005 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Page table sludge for ARM v3 and v4 processor architectures.
- */
-#include <linux/mm.h>
-#include <linux/highmem.h>
-
-#include <asm/pgalloc.h>
-#include <asm/page.h>
-#include <asm/tlbflush.h>
-
-#include "mm.h"
-
-#define FIRST_KERNEL_PGD_NR    (FIRST_USER_PGD_NR + USER_PTRS_PER_PGD)
-
-/*
- * need to get a 16k page for level 1
- */
-pgd_t *get_pgd_slow(struct mm_struct *mm)
-{
-       pgd_t *new_pgd, *init_pgd;
-       pmd_t *new_pmd, *init_pmd;
-       pte_t *new_pte, *init_pte;
-
-       new_pgd = (pgd_t *)__get_free_pages(GFP_KERNEL, 2);
-       if (!new_pgd)
-               goto no_pgd;
-
-       memzero(new_pgd, FIRST_KERNEL_PGD_NR * sizeof(pgd_t));
-
-       /*
-        * Copy over the kernel and IO PGD entries
-        */
-       init_pgd = pgd_offset_k(0);
-       memcpy(new_pgd + FIRST_KERNEL_PGD_NR, init_pgd + FIRST_KERNEL_PGD_NR,
-                      (PTRS_PER_PGD - FIRST_KERNEL_PGD_NR) * sizeof(pgd_t));
-
-       clean_dcache_area(new_pgd, PTRS_PER_PGD * sizeof(pgd_t));
-
-       if (!vectors_high()) {
-               /*
-                * On ARM, first page must always be allocated since it
-                * contains the machine vectors.
-                */
-               new_pmd = pmd_alloc(mm, new_pgd, 0);
-               if (!new_pmd)
-                       goto no_pmd;
-
-               new_pte = pte_alloc_map(mm, new_pmd, 0);
-               if (!new_pte)
-                       goto no_pte;
-
-               init_pmd = pmd_offset(init_pgd, 0);
-               init_pte = pte_offset_map_nested(init_pmd, 0);
-               set_pte(new_pte, *init_pte);
-               pte_unmap_nested(init_pte);
-               pte_unmap(new_pte);
-       }
-
-       return new_pgd;
-
-no_pte:
-       pmd_free(new_pmd);
-no_pmd:
-       free_pages((unsigned long)new_pgd, 2);
-no_pgd:
-       return NULL;
-}
-
-void free_pgd_slow(pgd_t *pgd)
-{
-       pmd_t *pmd;
-       struct page *pte;
-
-       if (!pgd)
-               return;
-
-       /* pgd is always present and good */
-       pmd = pmd_off(pgd, 0);
-       if (pmd_none(*pmd))
-               goto free;
-       if (pmd_bad(*pmd)) {
-               pmd_ERROR(*pmd);
-               pmd_clear(pmd);
-               goto free;
-       }
-
-       pte = pmd_page(*pmd);
-       pmd_clear(pmd);
-       dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE);
-       pte_lock_deinit(pte);
-       pte_free(pte);
-       pmd_free(pmd);
-free:
-       free_pages((unsigned long) pgd, 2);
-}
diff --git a/arch/arm/mm/pgd.c b/arch/arm/mm/pgd.c
new file mode 100644 (file)
index 0000000..20c1b0d
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ *  linux/arch/arm/mm/pgd.c
+ *
+ *  Copyright (C) 1998-2005 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/mm.h>
+#include <linux/highmem.h>
+
+#include <asm/pgalloc.h>
+#include <asm/page.h>
+#include <asm/tlbflush.h>
+
+#include "mm.h"
+
+#define FIRST_KERNEL_PGD_NR    (FIRST_USER_PGD_NR + USER_PTRS_PER_PGD)
+
+/*
+ * need to get a 16k page for level 1
+ */
+pgd_t *get_pgd_slow(struct mm_struct *mm)
+{
+       pgd_t *new_pgd, *init_pgd;
+       pmd_t *new_pmd, *init_pmd;
+       pte_t *new_pte, *init_pte;
+
+       new_pgd = (pgd_t *)__get_free_pages(GFP_KERNEL, 2);
+       if (!new_pgd)
+               goto no_pgd;
+
+       memzero(new_pgd, FIRST_KERNEL_PGD_NR * sizeof(pgd_t));
+
+       /*
+        * Copy over the kernel and IO PGD entries
+        */
+       init_pgd = pgd_offset_k(0);
+       memcpy(new_pgd + FIRST_KERNEL_PGD_NR, init_pgd + FIRST_KERNEL_PGD_NR,
+                      (PTRS_PER_PGD - FIRST_KERNEL_PGD_NR) * sizeof(pgd_t));
+
+       clean_dcache_area(new_pgd, PTRS_PER_PGD * sizeof(pgd_t));
+
+       if (!vectors_high()) {
+               /*
+                * On ARM, first page must always be allocated since it
+                * contains the machine vectors.
+                */
+               new_pmd = pmd_alloc(mm, new_pgd, 0);
+               if (!new_pmd)
+                       goto no_pmd;
+
+               new_pte = pte_alloc_map(mm, new_pmd, 0);
+               if (!new_pte)
+                       goto no_pte;
+
+               init_pmd = pmd_offset(init_pgd, 0);
+               init_pte = pte_offset_map_nested(init_pmd, 0);
+               set_pte(new_pte, *init_pte);
+               pte_unmap_nested(init_pte);
+               pte_unmap(new_pte);
+       }
+
+       return new_pgd;
+
+no_pte:
+       pmd_free(new_pmd);
+no_pmd:
+       free_pages((unsigned long)new_pgd, 2);
+no_pgd:
+       return NULL;
+}
+
+void free_pgd_slow(pgd_t *pgd)
+{
+       pmd_t *pmd;
+       struct page *pte;
+
+       if (!pgd)
+               return;
+
+       /* pgd is always present and good */
+       pmd = pmd_off(pgd, 0);
+       if (pmd_none(*pmd))
+               goto free;
+       if (pmd_bad(*pmd)) {
+               pmd_ERROR(*pmd);
+               pmd_clear(pmd);
+               goto free;
+       }
+
+       pte = pmd_page(*pmd);
+       pmd_clear(pmd);
+       dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE);
+       pte_lock_deinit(pte);
+       pte_free(pte);
+       pmd_free(pmd);
+free:
+       free_pages((unsigned long) pgd, 2);
+}