aboutsummaryrefslogtreecommitdiff
path: root/gdb/dcache.c
diff options
context:
space:
mode:
authorJ.T. Conklin <jtc@acorntoolworks.com>2000-08-18 22:52:23 +0000
committerJ.T. Conklin <jtc@acorntoolworks.com>2000-08-18 22:52:23 +0000
commite99586d56aa63911e842a974bd8eb7ed20da7af0 (patch)
treea238bf79710b18dfe2b5a0e9927666591f7d8134 /gdb/dcache.c
parent3f0845370f8c14bfd7c196a2d9c2451c2789e355 (diff)
downloadgdb-e99586d56aa63911e842a974bd8eb7ed20da7af0.zip
gdb-e99586d56aa63911e842a974bd8eb7ed20da7af0.tar.gz
gdb-e99586d56aa63911e842a974bd8eb7ed20da7af0.tar.bz2
* MAINTAINERS: Add myself as dcache.c maintainer.
* remote-nindy.c (nindy_load): Invalidate dcache. * dcache.c (dcache_invd): Renamed from dcache_flush. The term flush with respect to caches usually implies that data will be written to memory. (dcache_init, dcache_xfer_memory): Updated. * monitor.c (flush_monitor_dcache, monitor_resume, monitor_load): Updated. * ocd.c (ocd_open, ocd_resume, bdm_reset_command): Updated. * remote-bug.c (bug_load, bug_resume): Updated. * remote-nindy.c (nindy_open, nindy_resume): Updated. * remote-sds.c (sds_open, sds_resume): Updated. * remote-utils.c (gr_open): Updated. * remote.c (remote_open_1, remote_resume, remote_async_resume, remote_cisco_open): Updated. * wince.c (child_create_inferior, child_resume): Updated. * monitor.c (monitor_open): Free dcache before creating a new one. * dcache.c (dcache_free): New function. * dcache.h (dcache_free): New prototype. -------------------------------------------------------------------
Diffstat (limited to 'gdb/dcache.c')
-rw-r--r--gdb/dcache.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/gdb/dcache.c b/gdb/dcache.c
index a890979..a563d8b 100644
--- a/gdb/dcache.c
+++ b/gdb/dcache.c
@@ -173,7 +173,7 @@ DCACHE *last_cache; /* Used by info dcache */
/* Free all the data cache blocks, thus discarding all cached data. */
void
-dcache_flush (DCACHE *dcache)
+dcache_invd (DCACHE *dcache)
{
int i;
dcache->valid_head = 0;
@@ -402,12 +402,23 @@ dcache_init (memxferfunc reading, memxferfunc writing)
dcache->the_cache = (struct dcache_block *) xmalloc (csize);
memset (dcache->the_cache, 0, csize);
- dcache_flush (dcache);
+ dcache_invd (dcache);
last_cache = dcache;
return dcache;
}
+/* Free a data cache */
+void
+dcache_free (DCACHE *dcache)
+{
+ if (last_cache == dcache)
+ last_cache = NULL;
+
+ free (dcache->the_cache);
+ free (dcache);
+}
+
/* Read or write LEN bytes from inferior memory at MEMADDR, transferring
to or from debugger address MYADDR. Write to inferior if SHOULD_WRITE is
nonzero.
@@ -441,7 +452,7 @@ dcache_xfer_memory (DCACHE *dcache, CORE_ADDR memaddr, char *myaddr, int len,
xfunc = should_write ? dcache->write_memory : dcache->read_memory;
if (dcache->cache_has_stuff)
- dcache_flush (dcache);
+ dcache_invd (dcache);
len = xfunc (memaddr, myaddr, len);
}