This is an automated email from Gerrit.

Uwe Kleine-König ([email protected]) just uploaded a new patch set 
to Gerrit, which you can find at http://openocd.zylin.com/2429

-- gerrit

commit a21f2c87497696b0975644ed0773484aaa7a8649
Author: Uwe Kleine-König <[email protected]>
Date:   Mon Dec 8 11:42:04 2014 +0100

    Cortex-A: Don't flush the data/unified cache if MMU is off
    
    When the SCTLR has C set but M unset (i.e. Caching on, but MMU off) the 
cache
    if effectively off. So only flush the cache if MMU is on, otherwise stale
    entries might be committed to memory.
    
    Change-Id: Iaff8b6f25b7a41ba838b91d45684c98f99fc0b27
    Signed-off-by: Uwe Kleine-König <[email protected]>

diff --git a/src/target/cortex_a.c b/src/target/cortex_a.c
index 0393a44..1ea87f9 100644
--- a/src/target/cortex_a.c
+++ b/src/target/cortex_a.c
@@ -143,14 +143,14 @@ static int cortex_a_mmu_modify(struct target *target, int 
enable)
                                        cortex_a->cp15_control_reg_curr);
                }
        } else {
-               if (cortex_a->cp15_control_reg_curr & 0x4U) {
-                       /*  data cache is active */
-                       cortex_a->cp15_control_reg_curr &= ~0x4U;
-                       /* flush data cache armv7 function to be called */
-                       if 
(armv7a->armv7a_mmu.armv7a_cache.flush_all_data_cache)
-                               
armv7a->armv7a_mmu.armv7a_cache.flush_all_data_cache(target);
-               }
                if ((cortex_a->cp15_control_reg_curr & 0x1U)) {
+                       if (cortex_a->cp15_control_reg_curr & 0x4U) {
+                               /* data cache is active */
+                               cortex_a->cp15_control_reg_curr &= ~0x4U;
+                               /* flush data cache armv7 function to be called 
*/
+                               if 
(armv7a->armv7a_mmu.armv7a_cache.flush_all_data_cache)
+                                       
armv7a->armv7a_mmu.armv7a_cache.flush_all_data_cache(target);
+                       }
                        cortex_a->cp15_control_reg_curr &= ~0x1U;
                        retval = armv7a->arm.mcr(target, 15,
                                        0, 0,   /* op1, op2 */

-- 

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to