diff options
author | Stefan Mahr <stefan.mahr@sphairon.com> | 2011-08-10 22:34:41 +0200 |
---|---|---|
committer | Øyvind Harboe <oyvind.harboe@zylin.com> | 2011-08-12 12:00:42 +0200 |
commit | 28f088dc661d4c0e50c60876a5d6eec13d144c0c (patch) | |
tree | 4a02fa3926fbef4693ae5d8d14797e338c512891 /src | |
parent | 85cf298667fbb64ebffed4a1db57223535a888c9 (diff) | |
download | riscv-openocd-28f088dc661d4c0e50c60876a5d6eec13d144c0c.zip riscv-openocd-28f088dc661d4c0e50c60876a5d6eec13d144c0c.tar.gz riscv-openocd-28f088dc661d4c0e50c60876a5d6eec13d144c0c.tar.bz2 |
target: add helper functions to get/set u16 or u32 array from/to buffer
Diffstat (limited to 'src')
-rw-r--r-- | src/target/target.c | 32 | ||||
-rw-r--r-- | src/target/target.h | 5 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/target/target.c b/src/target/target.c index 0343156..b71d839 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -348,6 +348,38 @@ static void target_buffer_set_u8(struct target *target, uint8_t *buffer, uint8_t *buffer = value; } +/* write a uint32_t array to a buffer in target memory endianness */ +void target_buffer_get_u32_array(struct target *target, const uint8_t *buffer, uint32_t count, uint32_t *dstbuf) +{ + uint32_t i; + for(i = 0; i < count; i ++) + dstbuf[i] = target_buffer_get_u32(target,&buffer[i*4]); +} + +/* write a uint16_t array to a buffer in target memory endianness */ +void target_buffer_get_u16_array(struct target *target, const uint8_t *buffer, uint32_t count, uint16_t *dstbuf) +{ + uint32_t i; + for(i = 0; i < count; i ++) + dstbuf[i] = target_buffer_get_u16(target,&buffer[i*2]); +} + +/* write a uint32_t array to a buffer in target memory endianness */ +void target_buffer_set_u32_array(struct target *target, uint8_t *buffer, uint32_t count, uint32_t *srcbuf) +{ + uint32_t i; + for(i = 0; i < count; i ++) + target_buffer_set_u32(target,&buffer[i*4],srcbuf[i]); +} + +/* write a uint16_t array to a buffer in target memory endianness */ +void target_buffer_set_u16_array(struct target *target, uint8_t *buffer, uint32_t count, uint16_t *srcbuf) +{ + uint32_t i; + for(i = 0; i < count; i ++) + target_buffer_set_u16(target,&buffer[i*2],srcbuf[i]); +} + /* return a pointer to a configured target; id is name or number */ struct target *get_target(const char *id) { diff --git a/src/target/target.h b/src/target/target.h index 74f74de..1b5730f 100644 --- a/src/target/target.h +++ b/src/target/target.h @@ -524,6 +524,11 @@ void target_buffer_set_u32(struct target *target, uint8_t *buffer, uint32_t valu void target_buffer_set_u24(struct target *target, uint8_t *buffer, uint32_t value); void target_buffer_set_u16(struct target *target, uint8_t *buffer, uint16_t value); +void target_buffer_get_u32_array(struct target *target, const uint8_t *buffer, uint32_t count, uint32_t *dstbuf); +void target_buffer_get_u16_array(struct target *target, const uint8_t *buffer, uint32_t count, uint16_t *dstbuf); +void target_buffer_set_u32_array(struct target *target, uint8_t *buffer, uint32_t count, uint32_t *srcbuf); +void target_buffer_set_u16_array(struct target *target, uint8_t *buffer, uint32_t count, uint16_t *srcbuf); + int target_read_u32(struct target *target, uint32_t address, uint32_t *value); int target_read_u16(struct target *target, uint32_t address, uint16_t *value); int target_read_u8(struct target *target, uint32_t address, uint8_t *value); |