diff options
author | J.T. Conklin <jtc@acorntoolworks.com> | 2000-06-19 18:59:07 +0000 |
---|---|---|
committer | J.T. Conklin <jtc@acorntoolworks.com> | 2000-06-19 18:59:07 +0000 |
commit | 8c9cdfe810a01faefaaff5c92032904dafafcf0d (patch) | |
tree | f7eac3f9da31872472f38ff8b3a6c427a6b16dda /gdb/remote-bug.c | |
parent | 3e6c8688d2383042ba3ed8441a2f8db9ea67fd9f (diff) | |
download | gdb-8c9cdfe810a01faefaaff5c92032904dafafcf0d.zip gdb-8c9cdfe810a01faefaaff5c92032904dafafcf0d.tar.gz gdb-8c9cdfe810a01faefaaff5c92032904dafafcf0d.tar.bz2 |
* remote-nindy.c (nindy_fetch_word, nindy_store_word): Removed
(nindy_xfer_inferior_memory): Use dcache_xfer_memory() instead of
breaking transfer into chunks and using nindy_fetch_word() and
nindy_store_word().
* remote-bug.c (bug_xfer_memory): Use dcache_xfer_memory() instead
of breaking transfer into chunks and using gr_fetch_word() and
gr_store_word().
* remote.c (remote_fetch_word, remote_store_word): Removed.
* remote-utils.h (gr_fetch_word, gr_store_word): Removed.
* remote-utils.c (gr_fetch_word, gr_store_word): Removed.
* dcache.h (dcache_fetch, dcache_poke, dcache_poke_block): Removed.
* dcache.c (dcache_fetch, dcache_poke): Removed.
Diffstat (limited to 'gdb/remote-bug.c')
-rw-r--r-- | gdb/remote-bug.c | 71 |
1 files changed, 3 insertions, 68 deletions
diff --git a/gdb/remote-bug.c b/gdb/remote-bug.c index 6c331a1..e3a5a67 100644 --- a/gdb/remote-bug.c +++ b/gdb/remote-bug.c @@ -575,75 +575,10 @@ bug_xfer_memory (memaddr, myaddr, len, write, target) int write; struct target_ops *target; /* ignored */ { - register int i; + if (len <= 0) + return 0; - /* Round starting address down to longword boundary. */ - register CORE_ADDR addr; - - /* Round ending address up; get number of longwords that makes. */ - register int count; - - /* Allocate buffer of that many longwords. */ - register int *buffer; - - addr = memaddr & -sizeof (int); - count = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int); - - buffer = (int *) alloca (count * sizeof (int)); - - if (write) - { - /* Fill start and end extra bytes of buffer with existing memory data. */ - - if (addr != memaddr || len < (int) sizeof (int)) - { - /* Need part of initial word -- fetch it. */ - buffer[0] = gr_fetch_word (addr); - } - - if (count > 1) /* FIXME, avoid if even boundary */ - { - buffer[count - 1] - = gr_fetch_word (addr + (count - 1) * sizeof (int)); - } - - /* Copy data to be written over corresponding part of buffer */ - - memcpy ((char *) buffer + (memaddr & (sizeof (int) - 1)), myaddr, len); - - /* Write the entire buffer. */ - - for (i = 0; i < count; i++, addr += sizeof (int)) - { - errno = 0; - gr_store_word (addr, buffer[i]); - if (errno) - { - - return 0; - } - - } - } - else - { - /* Read all the longwords */ - for (i = 0; i < count; i++, addr += sizeof (int)) - { - errno = 0; - buffer[i] = gr_fetch_word (addr); - if (errno) - { - return 0; - } - QUIT; - } - - /* Copy appropriate bytes out of the buffer. */ - memcpy (myaddr, (char *) buffer + (memaddr & (sizeof (int) - 1)), len); - } - - return len; + return dcache_xfer_memory (gr_get_dcache (), memaddr, myaddr, len, write); } static void |