diff options
-rw-r--r-- | arch/nds32/include/asm/bitfield.h | 1 | ||||
-rw-r--r-- | arch/nds32/kernel/head.S | 28 |
2 files changed, 24 insertions, 5 deletions
diff --git a/arch/nds32/include/asm/bitfield.h b/arch/nds32/include/asm/bitfield.h index 28b7d797fd59..8e84fc385b94 100644 --- a/arch/nds32/include/asm/bitfield.h +++ b/arch/nds32/include/asm/bitfield.h | |||
@@ -396,6 +396,7 @@ | |||
396 | #define MMU_CTL_D8KB 1 | 396 | #define MMU_CTL_D8KB 1 |
397 | #define MMU_CTL_UNA ( 0x1 << MMU_CTL_offUNA ) | 397 | #define MMU_CTL_UNA ( 0x1 << MMU_CTL_offUNA ) |
398 | 398 | ||
399 | #define MMU_CTL_CACHEABLE_NON 0 | ||
399 | #define MMU_CTL_CACHEABLE_WB 2 | 400 | #define MMU_CTL_CACHEABLE_WB 2 |
400 | #define MMU_CTL_CACHEABLE_WT 3 | 401 | #define MMU_CTL_CACHEABLE_WT 3 |
401 | 402 | ||
diff --git a/arch/nds32/kernel/head.S b/arch/nds32/kernel/head.S index 71f57bd70f3b..c5fdae174ced 100644 --- a/arch/nds32/kernel/head.S +++ b/arch/nds32/kernel/head.S | |||
@@ -57,14 +57,32 @@ _nodtb: | |||
57 | isb | 57 | isb |
58 | mtsr $r4, $L1_PPTB ! load page table pointer\n" | 58 | mtsr $r4, $L1_PPTB ! load page table pointer\n" |
59 | 59 | ||
60 | /* set NTC0 cacheable/writeback, mutliple page size in use */ | 60 | #ifdef CONFIG_CPU_DCACHE_DISABLE |
61 | #define MMU_CTL_NTCC MMU_CTL_CACHEABLE_NON | ||
62 | #else | ||
63 | #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH | ||
64 | #define MMU_CTL_NTCC MMU_CTL_CACHEABLE_WT | ||
65 | #else | ||
66 | #define MMU_CTL_NTCC MMU_CTL_CACHEABLE_WB | ||
67 | #endif | ||
68 | #endif | ||
69 | |||
70 | /* set NTC cacheability, mutliple page size in use */ | ||
61 | mfsr $r3, $MMU_CTL | 71 | mfsr $r3, $MMU_CTL |
62 | li $r0, #~MMU_CTL_mskNTC0 | 72 | #if CONFIG_MEMORY_START >= 0xc0000000 |
63 | and $r3, $r3, $r0 | 73 | ori $r3, $r3, (MMU_CTL_NTCC << MMU_CTL_offNTC3) |
74 | #elif CONFIG_MEMORY_START >= 0x80000000 | ||
75 | ori $r3, $r3, (MMU_CTL_NTCC << MMU_CTL_offNTC2) | ||
76 | #elif CONFIG_MEMORY_START >= 0x40000000 | ||
77 | ori $r3, $r3, (MMU_CTL_NTCC << MMU_CTL_offNTC1) | ||
78 | #else | ||
79 | ori $r3, $r3, (MMU_CTL_NTCC << MMU_CTL_offNTC0) | ||
80 | #endif | ||
81 | |||
64 | #ifdef CONFIG_ANDES_PAGE_SIZE_4KB | 82 | #ifdef CONFIG_ANDES_PAGE_SIZE_4KB |
65 | ori $r3, $r3, #(MMU_CTL_mskMPZIU|(MMU_CTL_CACHEABLE_WB << MMU_CTL_offNTC0)) | 83 | ori $r3, $r3, #(MMU_CTL_mskMPZIU) |
66 | #else | 84 | #else |
67 | ori $r3, $r3, #(MMU_CTL_mskMPZIU|(MMU_CTL_CACHEABLE_WB << MMU_CTL_offNTC0)|MMU_CTL_D8KB) | 85 | ori $r3, $r3, #(MMU_CTL_mskMPZIU|MMU_CTL_D8KB) |
68 | #endif | 86 | #endif |
69 | #ifdef CONFIG_HW_SUPPORT_UNALIGNMENT_ACCESS | 87 | #ifdef CONFIG_HW_SUPPORT_UNALIGNMENT_ACCESS |
70 | li $r0, #MMU_CTL_UNA | 88 | li $r0, #MMU_CTL_UNA |