Module Name:    src
Committed By:   matt
Date:           Thu Feb 20 17:38:11 UTC 2014

Modified Files:
        src/sys/arch/arm/arm: cpufunc_asm_armv7.S

Log Message:
Add armv7 versions of tlb routines.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/arm/cpufunc_asm_armv7.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm/cpufunc_asm_armv7.S
diff -u src/sys/arch/arm/arm/cpufunc_asm_armv7.S:1.13 src/sys/arch/arm/arm/cpufunc_asm_armv7.S:1.14
--- src/sys/arch/arm/arm/cpufunc_asm_armv7.S:1.13	Thu Feb 20 15:52:30 2014
+++ src/sys/arch/arm/arm/cpufunc_asm_armv7.S	Thu Feb 20 17:38:11 2014
@@ -46,8 +46,8 @@ END(armv7_wait)
 
 ENTRY(armv7_context_switch)
 	dsb				@ data synchronization barrier
-	mrc	p15, 0, r2, c0, c0, 5	@ get MPIDR
-	cmp	r2, #0
+	mrc	p15, 0, ip, c0, c0, 5	@ get MPIDR
+	cmp	ip, #0
 	orrlt	r0, r0, #0x5b		@ MP, cachable (Normal WB)
 	orrge	r0, r0, #0x1b		@ Non-MP, cacheable, normal WB
 	mcr	p15, 0, r0, c2, c0, 0 	@ set the new TTB
@@ -61,7 +61,25 @@ ENTRY(armv7_context_switch)
 	bx	lr
 END(armv7_context_switch)
 
+#ifdef ARM_MMU_EXTENDED
+ENTRY(armv7_tlb_flushID_ASID)
+#ifdef MULTIPROCESSOR
+	mcr	p15, 0, r0, c8, c3, 2	@ flush I+D tlb all ASID
+#else
+	mcr	p15, 0, r0, c8, c7, 2	@ flush I+D tlb all ASID
+#endif
+	dsb				@ data synchronization barrier
+	isb
+	bx	lr
+END(armv7_tlb_flushID_ASID)
+#endif
+
+STRONG_ALIAS(armv7_tlb_flushD_SE, armv7_tlb_flushID_SE)
+STRONG_ALIAS(armv7_tlb_flushI_SE, armv7_tlb_flushID_SE)
 ENTRY(armv7_tlb_flushID_SE)
+#ifdef ARM_MMU_EXTENDED
+	bfi	r0, r1, #0, #8		@ insert ASID into MVA
+#endif
 #ifdef MULTIPROCESSOR
 	mcr	p15, 0, r0, c8, c3, 1	@ flush I+D tlb single entry
 #else
@@ -72,10 +90,27 @@ ENTRY(armv7_tlb_flushID_SE)
 	bx	lr
 END(armv7_tlb_flushID_SE)
 
+ENTRY(armv7_tlb_flushD)
+	mov	r0, #0
+	mcr	p15, 0, r0, c8, c6, 0	@ flush entire D tlb
+	dsb				@ data synchronization barrier
+	isb
+	bx      lr
+END(armv7_tlb_flushD)
+
+STRONG_ALIAS(armv7_tlb_flushI, armv7_tlb_flushID)
+ENTRY(armv7_tlb_flushID)
+	mov	r0, #0
+	mcr	p15, 0, r0, c8, c7, 0	@ flush entire I+D tlb
+	dsb				@ data synchronization barrier
+	isb
+	bx      lr
+END(armv7_tlb_flushID)
+
 
 ENTRY_NP(armv7_setttb)
-	mrc	p15, 0, r2, c0, c0, 5	@ get MPIDR
-	cmp	r2, #0
+	mrc	p15, 0, ip, c0, c0, 5	@ get MPIDR
+	cmp	ip, #0
 	orrlt	r0, r0, #0x5b		@ MP, cachable (Normal WB)
 	orrge	r0, r0, #0x1b		@ Non-MP, cacheable, normal WB
 	mcr	p15, 0, r0, c2, c0, 0   @ load new TTB

Reply via email to