Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm32/arm32 Patch from Richard Earnshaw:



details:   https://anonhg.NetBSD.org/src/rev/53488668f186
branches:  trunk
changeset: 506952:53488668f186
user:      bjh21 <bjh21%NetBSD.org@localhost>
date:      Fri Mar 09 16:24:51 2001 +0000

description:
Patch from Richard Earnshaw:
Add some calls to drain the write buffers -- these are particularly
important when we are trying to synchronize I$ and D$.

diffstat:

 sys/arch/arm32/arm32/cpufunc_asm.S |  12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diffs (88 lines):

diff -r 780e8f12a038 -r 53488668f186 sys/arch/arm32/arm32/cpufunc_asm.S
--- a/sys/arch/arm32/arm32/cpufunc_asm.S        Fri Mar 09 16:17:19 2001 +0000
+++ b/sys/arch/arm32/arm32/cpufunc_asm.S        Fri Mar 09 16:24:51 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpufunc_asm.S,v 1.11 2001/03/09 16:17:19 bjh21 Exp $   */
+/*     $NetBSD: cpufunc_asm.S,v 1.12 2001/03/09 16:24:51 bjh21 Exp $   */
 
 /*
  * arm8 support code Copyright (c) 1997 ARM Limited
@@ -521,6 +521,7 @@
        subs    r1, r1, #32
        bne     Lsa110_cache_cleanD_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
 #ifdef CACHE_CLEAN_BLOCK_INTR
        msr     cpsr_all , r3
 #else
@@ -550,6 +551,7 @@
        subs    r1, r1, #32
        bne     Lsa110_cache_purgeID_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mcr     15, 0, r0, c7, c5, 0    /* flush I cache (D flushed above) */
 #ifdef CACHE_CLEAN_BLOCK_INTR
        msr     cpsr_all , r3
@@ -579,6 +581,7 @@
        subs    r1, r1, #32
        bne     Lsa110_cache_purgeD_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
 #ifdef CACHE_CLEAN_BLOCK_INTR
        msr     cpsr_all , r3
 #else
@@ -588,12 +591,14 @@
 
 ENTRY(sa110_cache_purgeID_E)
        mcr     15, 0, r0, c7, c10, 1           /* clean dcache entry */
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mcr     15, 0, r0, c7, c5, 0            /* flush I cache */
        mcr     15, 0, r0, c7, c6, 1            /* flush D cache single entry */
        mov     pc, lr
 
 ENTRY(sa110_cache_purgeD_E)
        mcr     15, 0, r0, c7, c10, 1           /* clean dcache entry */
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mcr     15, 0, r0, c7, c6, 1            /* flush D cache single entry */
        mov     pc, lr
 #endif /* CPU_SA110 */
@@ -634,6 +639,7 @@
        subs    r1, r1, #32
        bne     Lsa110_cache_syncI_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mcr     15, 0, r0, c7, c5, 0            /* flush I cache */
 #ifdef CACHE_CLEAN_BLOCK_INTR
        msr     cpsr_all , r3
@@ -657,6 +663,7 @@
        subs    r1, r1, #32
        bpl     sa110_cache_cleanD_rng_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mov     pc, lr
 
 ENTRY(sa110_cache_purgeID_rng)
@@ -674,6 +681,7 @@
        subs    r1, r1, #32
        bpl     sa110_cache_purgeID_rng_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mcr     15, 0, r0, c7, c5, 0            /* flush I cache */
 
        mov     pc, lr
@@ -693,6 +701,7 @@
        subs    r1, r1, #32
        bpl     sa110_cache_purgeD_rng_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mov     pc, lr
 
 ENTRY(sa110_cache_syncI_rng)
@@ -709,6 +718,7 @@
        subs    r1, r1, #32
        bpl     sa110_cache_syncI_rng_loop
 
+       mcr     15, 0, r0, c7, c10, 4           /* drain write buffer */
        mcr     15, 0, r0, c7, c5, 0            /* flush I cache */
 
        mov     pc, lr



Home | Main Index | Thread Index | Old Index