Commit 8b1f24b0903a8e43e035d5680aed2fa62c68b197

Authored by bellard
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");