microblaze: Support 4k/16k/64k pages
authorMichal Simek <monstr@monstr.eu>
Wed, 1 Aug 2012 08:29:28 +0000 (10:29 +0200)
committerMichal Simek <monstr@monstr.eu>
Thu, 4 Oct 2012 12:52:49 +0000 (14:52 +0200)
Add support for page size which is supported by MMU.
Remove 8k and 32k page size because they are not supported
by MMU.

Signed-off-by: Michal Simek <monstr@monstr.eu>
arch/microblaze/Kconfig
arch/microblaze/include/asm/page.h
arch/microblaze/kernel/hw_exception_handler.S

index ab9afcaa7f6a44bad81bb9d80a9c5775fcf7c4f8..6133bed2b8551d507bc40c19e8b1c4c7dbfb53b2 100644 (file)
@@ -243,14 +243,11 @@ choice
 config MICROBLAZE_4K_PAGES
        bool "4k page size"
 
-config MICROBLAZE_8K_PAGES
-       bool "8k page size"
-
 config MICROBLAZE_16K_PAGES
        bool "16k page size"
 
-config MICROBLAZE_32K_PAGES
-       bool "32k page size"
+config MICROBLAZE_64K_PAGES
+       bool "64k page size"
 
 endchoice
 
index dd9ea9d6b76598356f8f3639ef835b008bb76134..85a5ae8e9bd04f5f3360b562ea03875c15e5e31a 100644 (file)
 #ifdef __KERNEL__
 
 /* PAGE_SHIFT determines the page size */
-#if defined(CONFIG_MICROBLAZE_32K_PAGES)
-#define PAGE_SHIFT             15
+#if defined(CONFIG_MICROBLAZE_64K_PAGES)
+#define PAGE_SHIFT             16
 #elif defined(CONFIG_MICROBLAZE_16K_PAGES)
 #define PAGE_SHIFT             14
-#elif defined(CONFIG_MICROBLAZE_8K_PAGES)
-#define PAGE_SHIFT             13
 #else
 #define PAGE_SHIFT             12
 #endif
index 76a069dc13cb4f1a7b526341f182c6c803c7baf9..0a573df47ff82aa866109c3384d93cce73c29d26 100644 (file)
@@ -862,7 +862,13 @@ ex_handler_done:
                 * bits 20 and 21 are zero.
                 */
                andi    r3, r3, PAGE_MASK
+#ifdef CONFIG_MICROBLAZE_64K_PAGES
+               ori     r3, r3, TLB_VALID | TLB_PAGESZ(PAGESZ_64K)
+#elif CONFIG_MICROBLAZE_16K_PAGES
+               ori     r3, r3, TLB_VALID | TLB_PAGESZ(PAGESZ_16K)
+#else
                ori     r3, r3, TLB_VALID | TLB_PAGESZ(PAGESZ_4K)
+#endif
                mts     rtlbhi, r3              /* Load TLB HI */
                nop