oops - omitted from previous delta
[deliverable/binutils-gdb.git] / gdb / dcache.c
index d6268f700f3a4e62f5dc92cddc5dff9c07ea8e3e..6e742746363b4cad7a67e24214bb6a0fcef8ef4d 100644 (file)
@@ -278,20 +278,24 @@ dcache_write_line (DCACHE *dcache, register struct dcache_block *db)
       while (reg_len > 0)
        {
          s = XFORM(memaddr);
-         do {
+         while (reg_len > 0) {
            if (db->state[s] == ENTRY_DIRTY)
              break;
            s++;
            reg_len--;
-         } while (reg_len > 0);
+
+           memaddr++;
+           myaddr++;
+           len--;
+         }
 
          e = s;
-         do {
+         while (reg_len > 0) {
            if (db->state[e] != ENTRY_DIRTY)
              break;
            e++;
            reg_len--;
-         } while (reg_len > 0);
+         }
 
          dirty_len = e - s;
          while (dirty_len > 0)
@@ -304,6 +308,7 @@ dcache_write_line (DCACHE *dcache, register struct dcache_block *db)
              memset (&db->state[XFORM(memaddr)], ENTRY_OK, res);
              memaddr   += res;
              myaddr    += res;
+             len       -= res;
              dirty_len -= res;
            }
        }
This page took 0.025817 seconds and 4 git commands to generate.