From: chaoskagami Date: Tue, 21 Jun 2016 05:41:45 +0000 (-0400) Subject: Fix cache issues, hopefully X-Git-Tag: v0.1.1~3 X-Git-Url: https://chaos.moe/g/?a=commitdiff_plain;h=0975fb7ed83588f17f2f3dd570eeefe1011ae618;p=corbenik%2Fcorbenik.git Fix cache issues, hopefully --- diff --git a/external/bits/chain.s b/external/bits/chain.s index 9a3c201..5f57089 100644 --- a/external/bits/chain.s +++ b/external/bits/chain.s @@ -28,6 +28,30 @@ copy: bne inner boot: + // Flush caches + + // ICache + mov r0, #0 + mcr p15, 0, r0, c7, c5, 0 + + // DCache + mov r2, #0 + mov r1, r2 + flush_dcache: + mov r0, #0 + mov r3, r2, lsl #30 + flush_cache_inner_loop: + orr r12, r3, r0, lsl#5 + mcr p15, 0, r1, c7, c10, 4 // drain write buffer + mcr p15, 0, r12, c7, c14, 2 // clean and flush dcache entry (index and segment) + add r0, #1 + cmp r0, #0x20 + bcc flush_cache_inner_loop + add r2, #1 + cmp r2, #4 + bcc flush_dcache + + // Actually boot payload. ldr r3, offset bx r3