summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@ozlabs.org>2019-01-07 15:30:19 +1100
committerAlistair Popple <alistair@popple.id.au>2019-03-26 11:52:44 +1100
commit433a51007f4edc39f0f26daf56d4a88426efe957 (patch)
tree4e613003f1f571ca059e4de211b384d578831687
parent88c92416f9eac268bb3cbc431b20b36d16f89f5b (diff)
downloadpdbg-433a51007f4edc39f0f26daf56d4a88426efe957.tar.gz
pdbg-433a51007f4edc39f0f26daf56d4a88426efe957.zip
adu: Add new api for memory read/write
Signed-off-by: Amitay Isaacs <amitay@ozlabs.org>
-rw-r--r--libpdbg/libpdbg.h3
-rw-r--r--libpdbg/target.c20
2 files changed, 23 insertions, 0 deletions
diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h
index ee8437f..b332a7e 100644
--- a/libpdbg/libpdbg.h
+++ b/libpdbg/libpdbg.h
@@ -221,6 +221,9 @@ int __adu_getmem(struct pdbg_target *target, uint64_t addr, uint8_t *ouput,
int __adu_putmem(struct pdbg_target *target, uint64_t addr, uint8_t *input,
uint64_t size, bool ci);
+int mem_read(struct pdbg_target *target, uint64_t addr, uint8_t *output, uint64_t size, uint8_t block_size, bool ci);
+int mem_write(struct pdbg_target *target, uint64_t addr, uint8_t *input, uint64_t size, uint8_t block_size, bool ci);
+
int opb_read(struct pdbg_target *target, uint32_t addr, uint32_t *data);
int opb_write(struct pdbg_target *target, uint32_t addr, uint32_t data);
diff --git a/libpdbg/target.c b/libpdbg/target.c
index af9199d..e678470 100644
--- a/libpdbg/target.c
+++ b/libpdbg/target.c
@@ -216,6 +216,26 @@ int fsi_write(struct pdbg_target *fsi_dt, uint32_t addr, uint32_t data)
return fsi->write(fsi, addr64, data);
}
+int mem_read(struct pdbg_target *target, uint64_t addr, uint8_t *output, uint64_t size, uint8_t block_size, bool ci)
+{
+ struct adu *adu;
+
+ assert(pdbg_target_is_class(target, "adu"));
+ adu = target_to_adu(target);
+
+ return adu->read(adu, addr, output, size, block_size, ci);
+}
+
+int mem_write(struct pdbg_target *target, uint64_t addr, uint8_t *input, uint64_t size, uint8_t block_size, bool ci)
+{
+ struct adu *adu;
+
+ assert(pdbg_target_is_class(target, "adu"));
+ adu = target_to_adu(target);
+
+ return adu->write(adu, addr, input, size, block_size, ci);
+}
+
struct pdbg_target *require_target_parent(struct pdbg_target *target)
{
assert(target->parent);
OpenPOWER on IntegriCloud