Commit 8b1f24b0903a8e43e035d5680aed2fa62c68b197
1 parent
b448f2f3
new physical memory access API (used by DMA accesses)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@645 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
16 additions
and
5 deletions
cpu-all.h
@@ -599,10 +599,21 @@ int cpu_register_io_memory(int io_index, | @@ -599,10 +599,21 @@ int cpu_register_io_memory(int io_index, | ||
599 | CPUReadMemoryFunc **mem_read, | 599 | CPUReadMemoryFunc **mem_read, |
600 | CPUWriteMemoryFunc **mem_write); | 600 | CPUWriteMemoryFunc **mem_write); |
601 | 601 | ||
602 | -void cpu_physical_memory_rw(CPUState *env, uint8_t *buf, target_ulong addr, | 602 | +void cpu_physical_memory_rw(target_ulong addr, uint8_t *buf, |
603 | int len, int is_write); | 603 | int len, int is_write); |
604 | -int cpu_memory_rw_debug(CPUState *env, | ||
605 | - uint8_t *buf, target_ulong addr, int len, int is_write); | 604 | +static inline void cpu_physical_memory_read(target_ulong addr, uint8_t *buf, |
605 | + int len) | ||
606 | +{ | ||
607 | + cpu_physical_memory_rw(addr, buf, len, 0); | ||
608 | +} | ||
609 | +static inline void cpu_physical_memory_write(target_ulong addr, const uint8_t *buf, | ||
610 | + int len) | ||
611 | +{ | ||
612 | + cpu_physical_memory_rw(addr, (uint8_t *)buf, len, 1); | ||
613 | +} | ||
614 | + | ||
615 | +int cpu_memory_rw_debug(CPUState *env, target_ulong addr, | ||
616 | + uint8_t *buf, int len, int is_write); | ||
606 | 617 | ||
607 | /* read dirty bit (return 0 or 1) */ | 618 | /* read dirty bit (return 0 or 1) */ |
608 | static inline int cpu_physical_memory_is_dirty(target_ulong addr) | 619 | static inline int cpu_physical_memory_is_dirty(target_ulong addr) |
gdbstub.c
@@ -472,7 +472,7 @@ int cpu_gdbstub(void *opaque, int (*main_loop)(void *opaque), int port) | @@ -472,7 +472,7 @@ int cpu_gdbstub(void *opaque, int (*main_loop)(void *opaque), int port) | ||
472 | if (*p == ',') | 472 | if (*p == ',') |
473 | p++; | 473 | p++; |
474 | len = strtoul(p, NULL, 16); | 474 | len = strtoul(p, NULL, 16); |
475 | - if (cpu_memory_rw_debug(env, mem_buf, addr, len, 0) != 0) | 475 | + if (cpu_memory_rw_debug(env, addr, mem_buf, len, 0) != 0) |
476 | memset(mem_buf, 0, len); | 476 | memset(mem_buf, 0, len); |
477 | memtohex(buf, mem_buf, len); | 477 | memtohex(buf, mem_buf, len); |
478 | put_packet(buf); | 478 | put_packet(buf); |
@@ -486,7 +486,7 @@ int cpu_gdbstub(void *opaque, int (*main_loop)(void *opaque), int port) | @@ -486,7 +486,7 @@ int cpu_gdbstub(void *opaque, int (*main_loop)(void *opaque), int port) | ||
486 | if (*p == ',') | 486 | if (*p == ',') |
487 | p++; | 487 | p++; |
488 | hextomem(mem_buf, p, len); | 488 | hextomem(mem_buf, p, len); |
489 | - if (cpu_memory_rw_debug(env, mem_buf, addr, len, 1) != 0) | 489 | + if (cpu_memory_rw_debug(env, addr, mem_buf, len, 1) != 0) |
490 | put_packet("ENN"); | 490 | put_packet("ENN"); |
491 | else | 491 | else |
492 | put_packet("OK"); | 492 | put_packet("OK"); |