[rtems commit] bsp/qoriq: Fix tlbwe synchronization

Sebastian Huber sebh at rtems.org
Thu Jul 28 10:06:55 UTC 2016


Module:    rtems
Branch:    master
Commit:    64467730002526e52626d3e590117422c3d9fb70
Changeset: http://git.rtems.org/rtems/commit/?id=64467730002526e52626d3e590117422c3d9fb70

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Jul 28 10:35:24 2016 +0200

bsp/qoriq: Fix tlbwe synchronization

---

 c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S | 6 ++++--
 c/src/lib/libbsp/powerpc/qoriq/startup/mmu.c      | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S
index 25ef053..e988656 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S
@@ -48,8 +48,9 @@ qoriq_tlb1_write:
 	li	r0, 0
 	mtspr	FSL_EIS_MAS8, r0
 #endif
+	isync
+	msync
 	tlbwe
-	sync
 	isync
 	blr
 
@@ -65,8 +66,9 @@ qoriq_tlb1_invalidate:
 #ifdef QORIQ_HAS_HYPERVISOR_MODE
 	mtspr	FSL_EIS_MAS8, r0
 #endif
+	isync
+	msync
 	tlbwe
-	sync
 	isync
 	blr
 
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu.c b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu.c
index e2a0188..90a4b23 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu.c
@@ -317,7 +317,7 @@ void qoriq_mmu_change_perm(uint32_t test, uint32_t set, uint32_t clear)
 				mas3 &= ~(clear & mask);
 				mas3 |= set & mask;
 				PPC_SET_SPECIAL_PURPOSE_REGISTER(FSL_EIS_MAS3, mas3);
-				asm volatile ("tlbwe; msync; isync" : : : "memory");
+				asm volatile ("isync; msync; tlbwe; isync" : : : "memory");
 			}
 		}
 	}



More information about the vc mailing list