lpc2900: Fix byte order bugs and remove unnecessary casts 70/1770/2
authorAndreas Fritiofson <andreas.fritiofson@gmail.com>
Sat, 28 Sep 2013 20:01:46 +0000 (22:01 +0200)
committerSpencer Oliver <spen@spen-soft.co.uk>
Thu, 31 Oct 2013 20:43:53 +0000 (20:43 +0000)
Found by grepping for pointer casts.

Change-Id: Ib94957a0c53ec7abcbd5787d8c70e20c9eedc4b7
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/1770
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/flash/nor/lpc2900.c

index 9663e51ae0c914cd000eee7017b0f1271348ac11..018d94ade2eb8a88ff9a5a5c1b77b68388f87e8c 100644 (file)
@@ -175,7 +175,7 @@ static uint32_t lpc2900_is_ready(struct flash_bank *bank);
 static uint32_t lpc2900_read_security_status(struct flash_bank *bank);
 static uint32_t lpc2900_run_bist128(struct flash_bank *bank,
                uint32_t addr_from, uint32_t addr_to,
 static uint32_t lpc2900_read_security_status(struct flash_bank *bank);
 static uint32_t lpc2900_run_bist128(struct flash_bank *bank,
                uint32_t addr_from, uint32_t addr_to,
-               uint32_t (*signature)[4]);
+               uint32_t signature[4]);
 static uint32_t lpc2900_address2sector(struct flash_bank *bank, uint32_t offset);
 static uint32_t lpc2900_calc_tr(uint32_t clock_var, uint32_t time_var);
 
 static uint32_t lpc2900_address2sector(struct flash_bank *bank, uint32_t offset);
 static uint32_t lpc2900_calc_tr(uint32_t clock_var, uint32_t time_var);
 
@@ -325,7 +325,7 @@ static uint32_t lpc2900_read_security_status(struct flash_bank *bank)
 static uint32_t lpc2900_run_bist128(struct flash_bank *bank,
        uint32_t addr_from,
        uint32_t addr_to,
 static uint32_t lpc2900_run_bist128(struct flash_bank *bank,
        uint32_t addr_from,
        uint32_t addr_to,
-       uint32_t (*signature)[4])
+       uint32_t signature[4])
 {
        struct target *target = bank->target;
 
 {
        struct target *target = bank->target;
 
@@ -342,7 +342,9 @@ static uint32_t lpc2900_run_bist128(struct flash_bank *bank,
                return ERROR_FLASH_OPERATION_FAILED;
 
        /* Return the signature */
                return ERROR_FLASH_OPERATION_FAILED;
 
        /* Return the signature */
-       target_read_memory(target, FMSW0, 4, 4, (uint8_t *)signature);
+       uint8_t sig_buf[4 * 4];
+       target_read_memory(target, FMSW0, 4, 4, sig_buf);
+       target_buffer_get_u32_array(target, sig_buf, 4, signature);
 
        return ERROR_OK;
 }
 
        return ERROR_OK;
 }
@@ -382,7 +384,7 @@ static uint32_t lpc2900_address2sector(struct flash_bank *bank,
  */
 static int lpc2900_write_index_page(struct flash_bank *bank,
        int pagenum,
  */
 static int lpc2900_write_index_page(struct flash_bank *bank,
        int pagenum,
-       uint8_t (*page)[FLASH_PAGE_SIZE])
+       uint8_t page[FLASH_PAGE_SIZE])
 {
        /* Only pages 4...7 are user writable */
        if ((pagenum < 4) || (pagenum > 7)) {
 {
        /* Only pages 4...7 are user writable */
        if ((pagenum < 4) || (pagenum > 7)) {
@@ -416,7 +418,7 @@ static int lpc2900_write_index_page(struct flash_bank *bank,
        /* Write whole page to flash data latches */
        if (target_write_memory(target,
                        bank->base + pagenum * FLASH_PAGE_SIZE,
        /* Write whole page to flash data latches */
        if (target_write_memory(target,
                        bank->base + pagenum * FLASH_PAGE_SIZE,
-                       4, FLASH_PAGE_SIZE / 4, (uint8_t *)page) != ERROR_OK) {
+                       4, FLASH_PAGE_SIZE / 4, page) != ERROR_OK) {
                LOG_ERROR("Index sector write failed @ page %d", pagenum);
                target_write_u32(target, FCTR, FCTR_FS_CS | FCTR_FS_WEB);
 
                LOG_ERROR("Index sector write failed @ page %d", pagenum);
                target_write_u32(target, FCTR, FCTR_FS_CS | FCTR_FS_WEB);
 
@@ -497,7 +499,7 @@ COMMAND_HANDLER(lpc2900_handle_signature_command)
        }
 
        /* Run BIST over whole flash range */
        }
 
        /* Run BIST over whole flash range */
-       status = lpc2900_run_bist128(bank, bank->base, bank->base + (bank->size - 1), &signature);
+       status = lpc2900_run_bist128(bank, bank->base, bank->base + (bank->size - 1), signature);
        if (status != ERROR_OK)
                return status;
 
        if (status != ERROR_OK)
                return status;
 
@@ -537,7 +539,7 @@ COMMAND_HANDLER(lpc2900_handle_read_custom_command)
        }
 
        /* Storage for customer info. Read in two parts */
        }
 
        /* Storage for customer info. Read in two parts */
-       uint32_t customer[ISS_CUSTOMER_NWORDS1 + ISS_CUSTOMER_NWORDS2];
+       uint8_t customer[4 * (ISS_CUSTOMER_NWORDS1 + ISS_CUSTOMER_NWORDS2)];
 
        /* Enable access to index sector */
        target_write_u32(target, FCTR, FCTR_FS_CS | FCTR_FS_WEB | FCTR_FS_ISS);
 
        /* Enable access to index sector */
        target_write_u32(target, FCTR, FCTR_FS_CS | FCTR_FS_WEB | FCTR_FS_ISS);
@@ -545,10 +547,10 @@ COMMAND_HANDLER(lpc2900_handle_read_custom_command)
        /* Read two parts */
        target_read_memory(target, bank->base+ISS_CUSTOMER_START1, 4,
                ISS_CUSTOMER_NWORDS1,
        /* Read two parts */
        target_read_memory(target, bank->base+ISS_CUSTOMER_START1, 4,
                ISS_CUSTOMER_NWORDS1,
-               (uint8_t *)&customer[0]);
+               &customer[0]);
        target_read_memory(target, bank->base+ISS_CUSTOMER_START2, 4,
                ISS_CUSTOMER_NWORDS2,
        target_read_memory(target, bank->base+ISS_CUSTOMER_START2, 4,
                ISS_CUSTOMER_NWORDS2,
-               (uint8_t *)&customer[ISS_CUSTOMER_NWORDS1]);
+               &customer[4 * ISS_CUSTOMER_NWORDS1]);
 
        /* Deactivate access to index sector */
        target_write_u32(target, FCTR, FCTR_FS_CS | FCTR_FS_WEB);
 
        /* Deactivate access to index sector */
        target_write_u32(target, FCTR, FCTR_FS_CS | FCTR_FS_WEB);
@@ -563,8 +565,7 @@ COMMAND_HANDLER(lpc2900_handle_read_custom_command)
        }
 
        size_t nwritten;
        }
 
        size_t nwritten;
-       ret = fileio_write(&fileio, sizeof(customer),
-                       (const uint8_t *)customer, &nwritten);
+       ret = fileio_write(&fileio, sizeof(customer), customer, &nwritten);
        if (ret != ERROR_OK) {
                LOG_ERROR("Write operation to file %s failed", filename);
                fileio_close(&fileio);
        if (ret != ERROR_OK) {
                LOG_ERROR("Write operation to file %s failed", filename);
                fileio_close(&fileio);
@@ -677,7 +678,7 @@ COMMAND_HANDLER(lpc2900_handle_write_custom_command)
                image_close(&image);
                return retval;
        }
                image_close(&image);
                return retval;
        }
-       retval = lpc2900_write_index_page(bank, 4, &page);
+       retval = lpc2900_write_index_page(bank, 4, page);
        if (retval != ERROR_OK) {
                image_close(&image);
                return retval;
        if (retval != ERROR_OK) {
                image_close(&image);
                return retval;
@@ -693,7 +694,7 @@ COMMAND_HANDLER(lpc2900_handle_write_custom_command)
                image_close(&image);
                return retval;
        }
                image_close(&image);
                return retval;
        }
-       retval = lpc2900_write_index_page(bank, 5, &page);
+       retval = lpc2900_write_index_page(bank, 5, page);
        if (retval != ERROR_OK) {
                image_close(&image);
                return retval;
        if (retval != ERROR_OK) {
                image_close(&image);
                return retval;
@@ -752,7 +753,7 @@ COMMAND_HANDLER(lpc2900_handle_secure_sector_command)
                                memset(&page[0x00 + 16*(sector - 8)], 0, 16);
                }
 
                                memset(&page[0x00 + 16*(sector - 8)], 0, 16);
                }
 
-               retval = lpc2900_write_index_page(bank, 6, &page);
+               retval = lpc2900_write_index_page(bank, 6, page);
                if (retval != ERROR_OK) {
                        LOG_ERROR("failed to update index sector page 6");
                        return retval;
                if (retval != ERROR_OK) {
                        LOG_ERROR("failed to update index sector page 6");
                        return retval;
@@ -767,7 +768,7 @@ COMMAND_HANDLER(lpc2900_handle_secure_sector_command)
                                memset(&page[0x00 + 16*(sector - 5)], 0, 16);
                }
 
                                memset(&page[0x00 + 16*(sector - 5)], 0, 16);
                }
 
-               retval = lpc2900_write_index_page(bank, 7, &page);
+               retval = lpc2900_write_index_page(bank, 7, page);
                if (retval != ERROR_OK) {
                        LOG_ERROR("failed to update index sector page 7");
                        return retval;
                if (retval != ERROR_OK) {
                        LOG_ERROR("failed to update index sector page 7");
                        return retval;
@@ -822,7 +823,7 @@ COMMAND_HANDLER(lpc2900_handle_secure_jtag_command)
        page[0x30 +  3] = 0x7F;
 
        /* Write to page 5 */
        page[0x30 +  3] = 0x7F;
 
        /* Write to page 5 */
-       retval = lpc2900_write_index_page(bank, 5, &page);
+       retval = lpc2900_write_index_page(bank, 5, page);
        if (retval != ERROR_OK) {
                LOG_ERROR("failed to update index sector page 5");
                return retval;
        if (retval != ERROR_OK) {
                LOG_ERROR("failed to update index sector page 5");
                return retval;
@@ -1142,7 +1143,7 @@ static int lpc2900_write(struct flash_bank *bank, uint8_t *buffer,
         * a target algorithm. If not, fall back to host programming. */
 
        /* We need some room for target code. */
         * a target algorithm. If not, fall back to host programming. */
 
        /* We need some room for target code. */
-       uint32_t target_code_size = sizeof(write_target_code);
+       const uint32_t target_code_size = sizeof(write_target_code);
 
        /* Try working area allocation. Start with a large buffer, and try with
         * reduced size if that fails. */
 
        /* Try working area allocation. Start with a large buffer, and try with
         * reduced size if that fails. */
@@ -1166,10 +1167,10 @@ static int lpc2900_write(struct flash_bank *bank, uint8_t *buffer,
                struct arm_algorithm arm_algo;
 
                /* We can use target mode. Download the algorithm. */
                struct arm_algorithm arm_algo;
 
                /* We can use target mode. Download the algorithm. */
-               retval = target_write_buffer(target,
-                               (warea->address)+buffer_size,
-                               target_code_size,
-                               (uint8_t *)write_target_code);
+               uint8_t code[sizeof(write_target_code)];
+               target_buffer_set_u32_array(target, code, ARRAY_SIZE(write_target_code),
+                               write_target_code);
+               retval = target_write_buffer(target, (warea->address) + buffer_size, sizeof(code), code);
                if (retval != ERROR_OK) {
                        LOG_ERROR("Unable to write block write code to target");
                        target_free_all_working_areas(target);
                if (retval != ERROR_OK) {
                        LOG_ERROR("Unable to write block write code to target");
                        target_free_all_working_areas(target);
@@ -1549,7 +1550,7 @@ static int lpc2900_erase_check(struct flash_bank *bank)
        for (sector = 0; sector < bank->num_sectors; sector++) {
                uint32_t signature[4];
                status = lpc2900_run_bist128(bank, bank->sectors[sector].offset,
        for (sector = 0; sector < bank->num_sectors; sector++) {
                uint32_t signature[4];
                status = lpc2900_run_bist128(bank, bank->sectors[sector].offset,
-                               bank->sectors[sector].offset + (bank->sectors[sector].size - 1), &signature);
+                               bank->sectors[sector].offset + (bank->sectors[sector].size - 1), signature);
                if (status != ERROR_OK)
                        return status;
 
                if (status != ERROR_OK)
                        return status;
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)