From c839c4db61a73535746c9a8f52e127c100c600ca Mon Sep 17 00:00:00 2001 From: "J.T. Conklin" Date: Fri, 6 Apr 2001 22:43:55 +0000 Subject: [PATCH] * dcache.c (dcache_write_line): Fixed bugs where cache line was not written to target correctly. --- gdb/ChangeLog | 3 +++ gdb/dcache.c | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 20de0be4aa0..95a30ef77cd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2001-04-06 J.T. Conklin + * dcache.c (dcache_write_line): Fixed bugs where cache line was + not written to target correctly. + * gdbserver/low-hppabsd.c (read_inferior_memory): Add explicit void return value; * gdbserver/low-nbsd.c: Likewise. diff --git a/gdb/dcache.c b/gdb/dcache.c index d6268f700f3..6e742746363 100644 --- a/gdb/dcache.c +++ b/gdb/dcache.c @@ -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; } } -- 2.30.2