This is an automated email from Gerrit.

Matthias Welwarsky ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/3027

-- gerrit

commit 5a0ee8b8baf5a713641ead86cd31467686459d0f
Author: Matthias Welwarsky <[email protected]>
Date:   Fri Oct 16 10:10:02 2015 +0200

    armv7a: rework automatic flush-on-write handler
    
    The following changes are implemented:
    - Clean & Invalidate the VA range instead of only cleaning using
      DCCIMVA instruction
    - Remove SMP handling since DCCIMVA instruction already maintains SMP
      coherence.
    - Remove separate Invalidate step
    - Invalidate I-Cache by MVA instead of invalidate-all.
    
    Change-Id: I19fd3cc226d8ecf2937276fc63258b6a26e369a7
    Signed-off-by: Matthias Welwarsky <[email protected]>

diff --git a/src/target/armv7a_cache.c b/src/target/armv7a_cache.c
index ddd1fea..172cac0 100644
--- a/src/target/armv7a_cache.c
+++ b/src/target/armv7a_cache.c
@@ -343,35 +343,10 @@ int armv7a_cache_auto_flush_on_write(struct target 
*target, uint32_t virt,
        if (!armv7a->armv7a_mmu.armv7a_cache.auto_cache_enabled)
                return ERROR_OK;
 
-       armv7a_l1_d_cache_clean_virt(target, virt, size);
+       armv7a_l1_d_cache_flush_virt(target, virt, size);
        armv7a_l2x_cache_flush_virt(target, virt, size);
 
-       if (target->smp) {
-               struct target_list *head;
-               struct target *curr;
-               head = target->head;
-               while (head != (struct target_list *)NULL) {
-                       curr = head->target;
-                       if (curr->state == TARGET_HALTED) {
-                               retval = armv7a_l1_i_cache_inval_all(curr);
-                               if (retval != ERROR_OK)
-                                       return retval;
-                               retval = armv7a_l1_d_cache_inval_virt(target,
-                                               virt, size);
-                               if (retval != ERROR_OK)
-                                       return retval;
-                       }
-                       head = head->next;
-               }
-       } else {
-               retval = armv7a_l1_i_cache_inval_all(target);
-               if (retval != ERROR_OK)
-                       return retval;
-               retval = armv7a_l1_d_cache_inval_virt(target, virt, size);
-               if (retval != ERROR_OK)
-                       return retval;
-       }
-
+       armv7a_l1_i_cache_inval_virt(target, virt, size);
        return retval;
 }
 

-- 

------------------------------------------------------------------------------
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to