extern pgd_t *pgd_alloc(struct mm_struct *);
 extern void pgd_free(struct mm_struct *mm, pgd_t *pgd);
 
-#ifdef CONFIG_PGTABLE_LEVELS_3
+#if PAGETABLE_LEVELS > 2
 extern void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd);
 extern pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address);
 extern void pmd_free(struct mm_struct *mm, pmd_t *pmd);
 
 #ifndef __ASM_SH_PGTABLE_H
 #define __ASM_SH_PGTABLE_H
 
-#ifdef CONFIG_PGTABLE_LEVELS_3
+#ifdef CONFIG_X2TLB
 #include <asm/pgtable_pmd.h>
 #else
 #include <asm/pgtable_nopmd.h>
 
 /*
  * traditional two-level paging structure
  */
+#define PAGETABLE_LEVELS       2
 
 /* PTE bits */
-#define PTE_MAGNITUDE  2       /* 32-bit PTEs */
+#define PTE_MAGNITUDE          2       /* 32-bit PTEs */
 
-#define PTE_SHIFT      PAGE_SHIFT
-#define PTE_BITS       (PTE_SHIFT - PTE_MAGNITUDE)
+#define PTE_SHIFT              PAGE_SHIFT
+#define PTE_BITS               (PTE_SHIFT - PTE_MAGNITUDE)
 
 /* PGD bits */
-#define PGDIR_SHIFT    (PTE_SHIFT + PTE_BITS)
+#define PGDIR_SHIFT            (PTE_SHIFT + PTE_BITS)
 
-#define PTRS_PER_PGD   (PAGE_SIZE / (1 << PTE_MAGNITUDE))
+#define PTRS_PER_PGD           (PAGE_SIZE / (1 << PTE_MAGNITUDE))
 #define USER_PTRS_PER_PGD      (TASK_SIZE/PGDIR_SIZE)
 
 #endif /* __ASM_SH_PGTABLE_NOPMD_H */
 
  * Some cores need a 3-level page table layout, for example when using
  * 64-bit PTEs and 4K pages.
  */
+#define PAGETABLE_LEVELS       3
 
-#define PTE_MAGNITUDE  3       /* 64-bit PTEs on extended mode SH-X2 TLB */
+#define PTE_MAGNITUDE          3       /* 64-bit PTEs on SH-X2 TLB */
 
 /* PGD bits */
-#define PGDIR_SHIFT    30
+#define PGDIR_SHIFT            30
 
 #define PTRS_PER_PGD           4
 #define USER_PTRS_PER_PGD      2
 
          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"
        def_bool y
        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.
 
 
 #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
 
        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);
        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));
 {
        kmem_cache_free(pmd_cachep, pmd);
 }
-#endif /* CONFIG_PGTABLE_LEVELS_3 */
+#endif /* PAGETABLE_LEVELS > 2 */