|
@@ -152,11 +152,14 @@ skpinv: addi r6,r6,1 /* Increment */
|
|
|
tlbivax 0,r9
|
|
|
TLBSYNC
|
|
|
|
|
|
-/* The mapping only needs to be cache-coherent on SMP */
|
|
|
-#ifdef CONFIG_SMP
|
|
|
-#define M_IF_SMP MAS2_M
|
|
|
+/*
|
|
|
+ * The mapping only needs to be cache-coherent on SMP, except on
|
|
|
+ * Freescale e500mc derivatives where it's also needed for coherent DMA.
|
|
|
+ */
|
|
|
+#if defined(CONFIG_SMP) || defined(CONFIG_PPC_E500MC)
|
|
|
+#define M_IF_NEEDED MAS2_M
|
|
|
#else
|
|
|
-#define M_IF_SMP 0
|
|
|
+#define M_IF_NEEDED 0
|
|
|
#endif
|
|
|
|
|
|
#if defined(ENTRY_MAPPING_BOOT_SETUP)
|
|
@@ -167,8 +170,8 @@ skpinv: addi r6,r6,1 /* Increment */
|
|
|
lis r6,(MAS1_VALID|MAS1_IPROT)@h
|
|
|
ori r6,r6,(MAS1_TSIZE(BOOK3E_PAGESZ_64M))@l
|
|
|
mtspr SPRN_MAS1,r6
|
|
|
- lis r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_SMP)@h
|
|
|
- ori r6,r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_SMP)@l
|
|
|
+ lis r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_NEEDED)@h
|
|
|
+ ori r6,r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_NEEDED)@l
|
|
|
mtspr SPRN_MAS2,r6
|
|
|
mtspr SPRN_MAS3,r8
|
|
|
tlbwe
|