X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Ftarget_type.h;h=6059c403d3bd2b43b58c8735cbf77028227a637f;hb=b1256894598296b54a1827e7ac797ad1c60a0b18;hp=7a8ac9c4a89a0f7752c347f7a284b20ced122127;hpb=559d08c19ed838f7bb2a77ce56a5a274641111f8;p=openocd.git diff --git a/src/target/target_type.h b/src/target/target_type.h index 7a8ac9c4a8..6059c403d3 100644 --- a/src/target/target_type.h +++ b/src/target/target_type.h @@ -42,7 +42,7 @@ struct target_type * Name of this type of target. Do @b not access this * field directly, use target_type_name() instead. */ - char *name; + const char *name; /* poll current target status */ int (*poll)(struct target *target); @@ -112,19 +112,25 @@ struct target_type * directly, use target_read_memory() instead. */ int (*read_memory)(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer); - int (*write_memory_imp)(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer); + int (*write_memory_imp)(struct target *target, uint32_t address, uint32_t size, uint32_t count, const uint8_t *buffer); /** * Target memory write callback. Do @b not call this function * directly, use target_write_memory() instead. */ - int (*write_memory)(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer); + int (*write_memory)(struct target *target, uint32_t address, uint32_t size, uint32_t count, const uint8_t *buffer); + + /* Default implementation will do some fancy alignment to improve performance, target can override */ + int (*read_buffer)(struct target *target, uint32_t address, uint32_t size, uint8_t *buffer); + + /* Default implementation will do some fancy alignment to improve performance, target can override */ + int (*write_buffer)(struct target *target, uint32_t address, uint32_t size, const uint8_t *buffer); /** * Write target memory in multiples of 4 bytes, optimized for * writing large quantities of data. Do @b not call this * function directly, use target_bulk_write_memory() instead. */ - int (*bulk_write_memory)(struct target *target, uint32_t address, uint32_t count, uint8_t *buffer); + int (*bulk_write_memory)(struct target *target, uint32_t address, uint32_t count, const uint8_t *buffer); int (*checksum_memory)(struct target *target, uint32_t address, uint32_t count, uint32_t* checksum); int (*blank_check_memory)(struct target *target, uint32_t address, uint32_t count, uint32_t* blank); @@ -219,7 +225,7 @@ struct target_type /* * same as read_phys_memory, except that it writes... */ - int (*write_phys_memory)(struct target *target, uint32_t phys_address, uint32_t size, uint32_t count, uint8_t *buffer); + int (*write_phys_memory)(struct target *target, uint32_t phys_address, uint32_t size, uint32_t count, const uint8_t *buffer); int (*mmu)(struct target *target, int *enabled);