diff options
| author | Marcel Moolenaar <marcel@FreeBSD.org> | 2007-06-09 21:55:17 +0000 |
|---|---|---|
| committer | Marcel Moolenaar <marcel@FreeBSD.org> | 2007-06-09 21:55:17 +0000 |
| commit | 01bd17cc99b1927537115fc76d3b332406a11b1d (patch) | |
| tree | a56b45624c5012a67b32e122f42c41c6b2e7d8a4 /sys/gdb/gdb_packet.c | |
| parent | a1fe14bc333c7b2b9886a7cdd7d78677e0a01413 (diff) | |
Notes
Diffstat (limited to 'sys/gdb/gdb_packet.c')
| -rw-r--r-- | sys/gdb/gdb_packet.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/gdb/gdb_packet.c b/sys/gdb/gdb_packet.c index 753c9b732574..d3e5a0ab5aec 100644 --- a/sys/gdb/gdb_packet.c +++ b/sys/gdb/gdb_packet.c @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kdb.h> #include <machine/gdb_machdep.h> +#include <machine/kdb.h> #include <gdb/gdb.h> #include <gdb/gdb_int.h> @@ -129,8 +130,10 @@ gdb_rx_equal(const char *str) int gdb_rx_mem(unsigned char *addr, size_t size) { + unsigned char *p; void *prev; jmp_buf jb; + size_t cnt; int ret; unsigned char c; @@ -140,13 +143,16 @@ gdb_rx_mem(unsigned char *addr, size_t size) prev = kdb_jmpbuf(jb); ret = setjmp(jb); if (ret == 0) { - while (size-- > 0) { + p = addr; + cnt = size; + while (cnt-- > 0) { c = (C2N(gdb_rxp[0]) << 4) & 0xf0; c |= C2N(gdb_rxp[1]) & 0x0f; - *addr++ = c; + *p++ = c; gdb_rxsz -= 2; gdb_rxp += 2; } + kdb_cpu_sync_icache(addr, size); } (void)kdb_jmpbuf(prev); return ((ret == 0) ? 1 : 0); |
