[rtems commit] bsp/qoriq: Add qoriq_tlb1_invalidate_all_by_ts()

Sebastian Huber sebh at rtems.org
Fri Apr 22 12:31:11 UTC 2016


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Apr 22 13:11:15 2016 +0200

bsp/qoriq: Add qoriq_tlb1_invalidate_all_by_ts()

Generalize qoriq_tlb1_ts_0_only() to qoriq_tlb1_invalidate_all_by_ts().

---

 c/src/lib/libbsp/powerpc/qoriq/start/start.S      | 10 ++++++----
 c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S | 14 +++++++++-----
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/c/src/lib/libbsp/powerpc/qoriq/start/start.S b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
index 64f7f2e..959347c 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/start/start.S
+++ b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
@@ -183,8 +183,11 @@ _start:
 .Linitmore:
 	mflr	SAVED_LINK_REGISTER
 
-	/* Initial MMU setup */
-	bl	qoriq_tlb1_ts_0_only
+	/* Invalidate all TS1 MMU entries */
+	li	r3, 1
+	bl	qoriq_tlb1_invalidate_all_by_ts
+
+	/* Add TS1 entry for the first 4GiB of RAM */
 	li	r3, SCRATCH_TLB
 	li	r4, FSL_EIS_MAS1_TS
 	li	r5, FSL_EIS_MAS2_I
@@ -194,7 +197,7 @@ _start:
 	li	r9, 11
 	bl	qoriq_tlb1_write
 
-	/* MSR initialization */
+	/* MSR initialization and use TS1 for address translation */
 	LWI	INITIAL_MSR, QORIQ_INITIAL_MSR
 	ori	r0, INITIAL_MSR, MSR_IS | MSR_DS
 	mtmsr	r0
@@ -228,7 +231,6 @@ _start:
 	mtlr	SAVED_LINK_REGISTER
 	blr
 
-
 #ifdef INITIALIZE_FPU
 	/*
 	 * Write a value to the FPRs to initialize the hidden tag bits.  See
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 5d04c2f..25ef053 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S
@@ -26,7 +26,7 @@
 
 	.global qoriq_tlb1_write
 	.global qoriq_tlb1_invalidate
-	.global qoriq_tlb1_ts_0_only
+	.global qoriq_tlb1_invalidate_all_by_ts
 
 	.section ".bsp_start_text", "ax"
 
@@ -70,19 +70,23 @@ qoriq_tlb1_invalidate:
 	isync
 	blr
 
-qoriq_tlb1_ts_0_only:
+/* r3 = 0 for TS0, 1 for TS1 */
+qoriq_tlb1_invalidate_all_by_ts:
 	mflr	r12
-	li	r11, 16
+	li	r11, QORIQ_TLB1_ENTRY_COUNT
 	mtctr	r11
 	li	r11, 0
+	mr	r10, r3
+
 2:
 	rlwinm	r0, r11, 16, 10, 15
 	oris	r0, r0, (FSL_EIS_MAS0_TLBSEL >> 16)
 	mtspr	FSL_EIS_MAS0, r0
 	tlbre
 	mfspr	r0, FSL_EIS_MAS1
-	andi.	r0, r0, FSL_EIS_MAS1_TS
-	beq	1f
+	rlwinm	r0, r0, 20, 31, 31
+	cmpw	r0, r10
+	bne	1f
 	mr	r3, r11
 	bl	qoriq_tlb1_invalidate
 1:




More information about the vc mailing list