Module Name: src Committed By: matt Date: Tue Sep 11 15:59:19 UTC 2012
Modified Files: src/sys/arch/arm/arm: cpufunc_asm_armv7.S Log Message: Compute cache line size before doing the loop. Map translation table for MP with outer-cache=NONE To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 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.4 src/sys/arch/arm/arm/cpufunc_asm_armv7.S:1.5 --- src/sys/arch/arm/arm/cpufunc_asm_armv7.S:1.4 Thu Sep 6 02:07:25 2012 +++ src/sys/arch/arm/arm/cpufunc_asm_armv7.S Tue Sep 11 15:59:19 2012 @@ -73,7 +73,7 @@ END(armv7_tlb_flushID_SE) ENTRY(armv7_setttb) mrc p15, 0, r1, c0, c0, 5 @ get MPIDR cmp r1, #0 - orrlt r0, #0x5b @ MP, cachable (Normal in/out WB) + orrlt r0, #0x43 @ MP, cachable (Normal in WB, out none) orrge r0, #0x1b @ Non-MP, cacheable, normal WB mcr p15, 0, r0, c2, c0, 0 @ load new TTB #ifdef MULTIPROCESSOR @@ -90,14 +90,13 @@ END(armv7_setttb) /* LINTSTUB: void armv7_icache_sync_range(vaddr_t, vsize_t); */ ENTRY_NP(armv7_icache_sync_range) -1: - mcr p15, 0, r0, c7, c5, 1 @ invalidate the I-Cache line - mcr p15, 0, r0, c7, c10, 1 @ wb the D-Cache line mrc p15, 1, r2, c0, c0, 0 @ read CCSIDR - and r2, r2, #7 @ get line size (log2(size)-4) - add r2, r2, #4 @ adjust - mov ip, #1 @ make a bit mask + and r2, r2, #7 @ get line size (log2(size)-4, 0=16) + mov ip, #16 @ make a bit mask lsl r2, ip, r2 @ and shift into position +1: + mcr p15, 0, r0, c7, c10, 1 @ wb the D-Cache line + mcr p15, 0, r0, c7, c5, 1 @ invalidate the I-Cache line add r0, r0, r2 subs r1, r1, r2 bhi 1b @@ -123,13 +122,12 @@ ENTRY_NP(armv7_icache_sync_all) END(armv7_icache_sync_all) ENTRY(armv7_dcache_wb_range) -1: - mcr p15, 0, r0, c7, c10, 1 @ wb the D-Cache mrc p15, 1, r2, c0, c0, 0 @ read CCSIDR - and r2, r2, #7 @ get line size (log2(size)-4) - add r2, r2, #4 @ adjust - mov ip, #1 @ make a bit mask + and r2, r2, #7 @ get line size (log2(size)-4, 0=16) + mov ip, #16 @ make a bit mask lsl r2, ip, r2 @ and shift into position +1: + mcr p15, 0, r0, c7, c10, 1 @ wb the D-Cache to PoC add r0, r0, r2 subs r1, r1, r2 bhi 1b @@ -139,13 +137,12 @@ END(armv7_dcache_wb_range) /* LINTSTUB: void armv7_dcache_wbinv_range(vaddr_t, vsize_t); */ ENTRY(armv7_dcache_wbinv_range) -1: - mcr p15, 0, r0, c7, c14, 1 @ wb and inv the D-Cache line mrc p15, 1, r2, c0, c0, 0 @ read CCSIDR - and r2, r2, #7 @ get line size (log2(size)-4) - add r2, r2, #4 @ adjust - mov ip, #1 @ make a bit mask + and r2, r2, #7 @ get line size (log2(size)-4, 0=16) + mov ip, #16 @ make a bit mask lsl r2, ip, r2 @ and shift into position +1: + mcr p15, 0, r0, c7, c14, 1 @ wb and inv the D-Cache line add r0, r0, r2 subs r1, r1, r2 bhi 1b @@ -155,13 +152,12 @@ END(armv7_dcache_wbinv_range) /* * LINTSTUB: void armv7_dcache_inv_range(vaddr_t, vsize_t); */ ENTRY(armv7_dcache_inv_range) -1: - mcr p15, 0, r0, c7, c6, 1 @ invalidate the D-Cache line mrc p15, 1, r2, c0, c0, 0 @ read CCSIDR - and r2, r2, #7 @ get line size (log2(size)-4) - add r2, r2, #4 @ adjust - mov ip, #1 @ make a bit mask + and r2, r2, #7 @ get line size (log2(size)-4, 0=16) + mov ip, #16 @ make a bit mask lsl r2, ip, r2 @ and shift into position +1: + mcr p15, 0, r0, c7, c6, 1 @ invalidate the D-Cache line add r0, r0, r2 subs r1, r1, r2 bhi 1b @@ -173,14 +169,13 @@ END(armv7_dcache_inv_range) /* * LINTSTUB: void armv7_idcache_wbinv_range(vaddr_t, vsize_t); */ ENTRY(armv7_idcache_wbinv_range) + mrc p15, 1, r2, c0, c0, 0 @ read CCSIDR + and r2, r2, #7 @ get line size (log2(size)-4, 0=16) + mov ip, #16 @ make a bit mask + lsl r2, ip, r2 @ and shift into position 1: mcr p15, 0, r0, c7, c5, 1 @ invalidate the I-Cache line mcr p15, 0, r0, c7, c14, 1 @ wb and inv the D-Cache line - mrc p15, 1, r2, c0, c0, 0 @ read CCSIDR - and r2, r2, #7 @ get line size (log2(size)-4) - add r2, r2, #4 @ adjust - mov ip, #1 @ make a bit mask - lsl r2, ip, r2 @ and shift into position add r0, r0, r2 subs r1, r1, r2 bhi 1b