The {read,write}_mem32 interface functions was asking a 32 bits buffer
but they don't need 32 bits alignment.
This will change the interface to a 8 bits buffer to remove the
alignment mismatch warning. This was causing build errors on platforms
with strict aliasing rules.
Change-Id: I338be8df5686f07a64ddb4f17c1bb494af583999
Signed-off-by: Alexandre Pereira da Silva <aletes.xgr@gmail.com>
Reviewed-on: http://openocd.zylin.com/483
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
h_u16_to_le(h->cmdbuf+h->cmdidx, len);
h->cmdidx += 2;
h_u16_to_le(h->cmdbuf+h->cmdidx, len);
h->cmdidx += 2;
- res = stlink_usb_xfer(handle, (uint8_t *) buffer, len);
+ res = stlink_usb_xfer(handle, buffer, len);
if (res != ERROR_OK)
return res;
if (res != ERROR_OK)
return res;
/** */
static int stlink_usb_read_mem32(void *handle, uint32_t addr, uint16_t len,
/** */
static int stlink_usb_read_mem32(void *handle, uint32_t addr, uint16_t len,
{
int res;
struct stlink_usb_handle_s *h;
{
int res;
struct stlink_usb_handle_s *h;
/** */
static int stlink_usb_write_mem32(void *handle, uint32_t addr, uint16_t len,
/** */
static int stlink_usb_write_mem32(void *handle, uint32_t addr, uint16_t len,
- const uint32_t *buffer)
{
int res;
struct stlink_usb_handle_s *h;
{
int res;
struct stlink_usb_handle_s *h;
h_u16_to_le(h->cmdbuf+h->cmdidx, len);
h->cmdidx += 2;
h_u16_to_le(h->cmdbuf+h->cmdidx, len);
h->cmdidx += 2;
- res = stlink_usb_xfer(handle, (uint8_t *) buffer, len);
+ res = stlink_usb_xfer(handle, buffer, len);
if (res != ERROR_OK)
return res;
if (res != ERROR_OK)
return res;
const uint8_t *buffer);
/** */
int (*read_mem32) (void *handle, uint32_t addr, uint16_t len,
const uint8_t *buffer);
/** */
int (*read_mem32) (void *handle, uint32_t addr, uint16_t len,
/** */
int (*write_mem32) (void *handle, uint32_t addr, uint16_t len,
/** */
int (*write_mem32) (void *handle, uint32_t addr, uint16_t len,
- const uint32_t *buffer);
+ const uint8_t *buffer);
/** */
int (*idcode) (void *fd, uint32_t *idcode);
/** */
/** */
int (*idcode) (void *fd, uint32_t *idcode);
/** */
int res;
uint32_t buffer_threshold = 128;
uint32_t addr_increment = 4;
int res;
uint32_t buffer_threshold = 128;
uint32_t addr_increment = 4;
uint32_t c;
struct stlink_interface_s *stlink_if = target_to_stlink(target);
uint32_t c;
struct stlink_interface_s *stlink_if = target_to_stlink(target);
if (size != 4)
res = stlink_if->layout->api->read_mem8(stlink_if->fd,
if (size != 4)
res = stlink_if->layout->api->read_mem8(stlink_if->fd,
else
res = stlink_if->layout->api->read_mem32(stlink_if->fd,
else
res = stlink_if->layout->api->read_mem32(stlink_if->fd,
- address, c, (uint32_t *)dst);
if (res != ERROR_OK)
return res;
address += (c * addr_increment);
if (res != ERROR_OK)
return res;
address += (c * addr_increment);
- dst += (c * addr_increment);
+ buffer += (c * addr_increment);
int res;
uint32_t buffer_threshold = 128;
uint32_t addr_increment = 4;
int res;
uint32_t buffer_threshold = 128;
uint32_t addr_increment = 4;
- const uint8_t *dst = buffer;
uint32_t c;
struct stlink_interface_s *stlink_if = target_to_stlink(target);
uint32_t c;
struct stlink_interface_s *stlink_if = target_to_stlink(target);
if (size != 4)
res = stlink_if->layout->api->write_mem8(stlink_if->fd,
if (size != 4)
res = stlink_if->layout->api->write_mem8(stlink_if->fd,
else
res = stlink_if->layout->api->write_mem32(stlink_if->fd,
else
res = stlink_if->layout->api->write_mem32(stlink_if->fd,
- address, c, (uint32_t *)dst);
if (res != ERROR_OK)
return res;
address += (c * addr_increment);
if (res != ERROR_OK)
return res;
address += (c * addr_increment);
- dst += (c * addr_increment);
+ buffer += (c * addr_increment);