From dc15e0a295f73d8438bf59b94475d9b9f4120b68 Mon Sep 17 00:00:00 2001 From: Andreas Fritiofson Date: Thu, 31 Oct 2013 23:21:50 +0100 Subject: [PATCH 1/1] lpcspifi: Fix byte order bug Found by grepping for pointer casts. Change-Id: I42ef3ebcce9fc6391154888b48601ede8377c34e Signed-off-by: Andreas Fritiofson Reviewed-on: http://openocd.zylin.com/1771 Tested-by: jenkins Reviewed-by: Jens Bauer Reviewed-by: Spencer Oliver --- src/flash/nor/lpcspifi.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/flash/nor/lpcspifi.c b/src/flash/nor/lpcspifi.c index dc964b90a4..0400dd74de 100644 --- a/src/flash/nor/lpcspifi.c +++ b/src/flash/nor/lpcspifi.c @@ -774,6 +774,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id) uint32_t ssp_base = lpcspifi_info->ssp_base; uint32_t io_base = lpcspifi_info->io_base; uint32_t value; + uint8_t id_buf[3]; int retval; if (target->state != TARGET_HALTED) { @@ -808,7 +809,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id) if (retval == ERROR_OK) retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value); if (retval == ERROR_OK) - ((uint8_t *)id)[0] = value; + id_buf[0] = value; /* Dummy write to clock in data */ if (retval == ERROR_OK) @@ -818,7 +819,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id) if (retval == ERROR_OK) retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value); if (retval == ERROR_OK) - ((uint8_t *)id)[1] = value; + id_buf[1] = value; /* Dummy write to clock in data */ if (retval == ERROR_OK) @@ -828,10 +829,12 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id) if (retval == ERROR_OK) retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value); if (retval == ERROR_OK) - ((uint8_t *)id)[2] = value; + id_buf[2] = value; if (retval == ERROR_OK) retval = ssp_setcs(target, io_base, 1); + if (retval == ERROR_OK) + *id = id_buf[2] << 16 | id_buf[1] << 8 | id_buf[0]; return retval; } -- 2.30.2