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