summaryrefslogtreecommitdiffstats
path: root/arch/sh/mm
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2010-01-13 19:11:14 +0900
committerPaul Mundt <lethal@linux-sh.org>2010-01-13 19:11:14 +0900
commit782bb5a532f883540bf403afb19f735a4eefd95b (patch)
treec2eec8aff6797fda269d4f1c3d4ed19ff1d584d7 /arch/sh/mm
parent206582c3161f165f5bf49ececa962c5f95fdf0a3 (diff)
sh: default to extended TLB support.
All SH-X2 and SH-X3 parts support an extended TLB mode, which has been left as experimental since support was originally merged. Now that it's had some time to stabilize and get some exposure to various platforms, we can drop it as an option and default enable it across the board. This is also good future proofing for newer parts that will drop support for the legacy TLB mode completely. This will also force 3-level page tables for all newer parts, which is necessary both for the varying page sizes and larger memories. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/mm')
-rw-r--r--arch/sh/mm/Kconfig29
-rw-r--r--arch/sh/mm/pgtable.c9
2 files changed, 6 insertions, 32 deletions
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 860cd24b420..7a4ebc8cbad 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -100,13 +100,8 @@ config PMB_LEGACY
and allows systems to support up to 512MiB of system memory.
config X2TLB
- bool "Enable extended TLB mode"
- depends on (CPU_SHX2 || CPU_SHX3) && MMU && EXPERIMENTAL
- help
- Selecting this option will enable the extended mode of the SH-X2
- TLB. For legacy SH-X behaviour and interoperability, say N. For
- all of the fun new features and a willingless to submit bug reports,
- say Y.
+ def_bool y
+ depends on (CPU_SHX2 || CPU_SHX3) && MMU
config VSYSCALL
bool "Support vsyscall page"
@@ -175,31 +170,11 @@ config ARCH_MEMORY_PROBE
depends on MEMORY_HOTPLUG
choice
- prompt "Page table layout"
- default PGTABLE_LEVELS_3 if X2TLB
- default PGTABLE_LEVELS_2
-
-config PGTABLE_LEVELS_2
- bool "2 Levels"
- help
- This is the default page table layout for all SuperH CPUs.
-
-config PGTABLE_LEVELS_3
- bool "3 Levels"
- depends on X2TLB
- help
- This enables a 3 level page table structure.
-
-endchoice
-
-choice
prompt "Kernel page size"
- default PAGE_SIZE_8KB if X2TLB
default PAGE_SIZE_4KB
config PAGE_SIZE_4KB
bool "4kB"
- depends on !MMU || !X2TLB || PGTABLE_LEVELS_3
help
This is the default page size used by all SuperH CPUs.
diff --git a/arch/sh/mm/pgtable.c b/arch/sh/mm/pgtable.c
index e1bc5483cc0..6f21fb1d872 100644
--- a/arch/sh/mm/pgtable.c
+++ b/arch/sh/mm/pgtable.c
@@ -3,8 +3,7 @@
#define PGALLOC_GFP GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO
static struct kmem_cache *pgd_cachep;
-
-#ifdef CONFIG_PGTABLE_LEVELS_3
+#if PAGETABLE_LEVELS > 2
static struct kmem_cache *pmd_cachep;
#endif
@@ -22,7 +21,7 @@ void pgtable_cache_init(void)
pgd_cachep = kmem_cache_create("pgd_cache",
PTRS_PER_PGD * (1<<PTE_MAGNITUDE),
PAGE_SIZE, SLAB_PANIC, pgd_ctor);
-#ifdef CONFIG_PGTABLE_LEVELS_3
+#if PAGETABLE_LEVELS > 2
pmd_cachep = kmem_cache_create("pmd_cache",
PTRS_PER_PMD * (1<<PTE_MAGNITUDE),
PAGE_SIZE, SLAB_PANIC, NULL);
@@ -39,7 +38,7 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd)
kmem_cache_free(pgd_cachep, pgd);
}
-#ifdef CONFIG_PGTABLE_LEVELS_3
+#if PAGETABLE_LEVELS > 2
void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
{
set_pud(pud, __pud((unsigned long)pmd));
@@ -54,4 +53,4 @@ void pmd_free(struct mm_struct *mm, pmd_t *pmd)
{
kmem_cache_free(pmd_cachep, pmd);
}
-#endif /* CONFIG_PGTABLE_LEVELS_3 */
+#endif /* PAGETABLE_LEVELS > 2 */