This is an automated email from Gerrit.

Paul Fertser ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/1370

-- gerrit

commit 107a43be3bea5cff76862f469f9a9701f55ef12f
Author: Paul Fertser <[email protected]>
Date:   Mon Apr 29 23:31:50 2013 +0400

    efm32: fix FTBFS on ARM due to alignment issues
    
    The following warnings prevent OpenOCD from building:
    efm32.c: In function 'efm32x_read_lock_data':
    efm32.c:373:8: error: cast increases required alignment of target type 
[-Werror=cast-align]
    efm32.c:386:9: error: cast increases required alignment of target type 
[-Werror=cast-align]
    efm32.c:394:9: error: cast increases required alignment of target type 
[-Werror=cast-align]
    efm32.c:402:9: error: cast increases required alignment of target type 
[-Werror=cast-align]
    efm32.c: In function 'efm32x_get_page_lock':
    efm32.c:430:17: error: cast increases required alignment of target type 
[-Werror=cast-align]
    efm32.c: In function 'efm32x_set_page_lock':
    efm32.c:441:19: error: cast increases required alignment of target type 
[-Werror=cast-align]
    cc1: all warnings being treated as errors
    
    This patch is compile-tested only.
    
    Change-Id: Ia3a8f342e0f5e30c8ea4de9435c5c7a80bc100e3
    Signed-off-by: Paul Fertser <[email protected]>

diff --git a/src/flash/nor/efm32.c b/src/flash/nor/efm32.c
index 295c707..d5f0559 100644
--- a/src/flash/nor/efm32.c
+++ b/src/flash/nor/efm32.c
@@ -85,7 +85,7 @@
 
 struct efm32x_flash_bank {
        int probed;
-       uint8_t lb_page[LOCKBITS_PAGE_SZ];
+       uint32_t lb_page[LOCKBITS_PAGE_SZ/4];
 };
 
 struct efm32_info {
@@ -370,7 +370,7 @@ static int efm32x_read_lock_data(struct flash_bank *bank)
        data_size = bank->num_sectors / 8; /* number of data bytes */
        data_size /= 4; /* ...and data dwords */
 
-       ptr = (uint32_t *)efm32x_info->lb_page;
+       ptr = efm32x_info->lb_page;
 
        for (i = 0; i < data_size; i++, ptr++) {
                ret = target_read_u32(target, EFM32_MSC_LOCK_BITS+i*4, ptr);
@@ -383,7 +383,7 @@ static int efm32x_read_lock_data(struct flash_bank *bank)
        /* also, read ULW, DLW and MLW */
 
        /* ULW, word 126 */
-       ptr = ((uint32_t *)efm32x_info->lb_page) + 126;
+       ptr = efm32x_info->lb_page + 126;
        ret = target_read_u32(target, EFM32_MSC_LOCK_BITS+126*4, ptr);
        if (ERROR_OK != ret) {
                LOG_ERROR("Failed to read ULW");
@@ -391,7 +391,7 @@ static int efm32x_read_lock_data(struct flash_bank *bank)
        }
 
        /* DLW, word 127 */
-       ptr = ((uint32_t *)efm32x_info->lb_page) + 127;
+       ptr = efm32x_info->lb_page + 127;
        ret = target_read_u32(target, EFM32_MSC_LOCK_BITS+127*4, ptr);
        if (ERROR_OK != ret) {
                LOG_ERROR("Failed to read DLW");
@@ -399,7 +399,7 @@ static int efm32x_read_lock_data(struct flash_bank *bank)
        }
 
        /* MLW, word 125, present in GG and LG */
-       ptr = ((uint32_t *)efm32x_info->lb_page) + 125;
+       ptr = efm32x_info->lb_page + 125;
        ret = target_read_u32(target, EFM32_MSC_LOCK_BITS+125*4, ptr);
        if (ERROR_OK != ret) {
                LOG_ERROR("Failed to read MLW");
@@ -420,14 +420,14 @@ static int efm32x_write_lock_data(struct flash_bank *bank)
                return ret;
        }
 
-       return efm32x_write(bank, efm32x_info->lb_page, EFM32_MSC_LOCK_BITS,
+       return efm32x_write(bank, (uint8_t *)efm32x_info->lb_page, 
EFM32_MSC_LOCK_BITS,
                LOCKBITS_PAGE_SZ);
 }
 
 static int efm32x_get_page_lock(struct flash_bank *bank, size_t page)
 {
        struct efm32x_flash_bank *efm32x_info = bank->driver_priv;
-       uint32_t dw = ((uint32_t *)efm32x_info->lb_page)[page >> 5];
+       uint32_t dw = efm32x_info->lb_page[page >> 5];
        uint32_t mask = 0;
 
        mask = 1 << (page & 0x1f);
@@ -438,7 +438,7 @@ static int efm32x_get_page_lock(struct flash_bank *bank, 
size_t page)
 static int efm32x_set_page_lock(struct flash_bank *bank, size_t page, int set)
 {
        struct efm32x_flash_bank *efm32x_info = bank->driver_priv;
-       uint32_t *dw = &((uint32_t *)efm32x_info->lb_page)[page >> 5];
+       uint32_t *dw = &efm32x_info->lb_page[page >> 5];
        uint32_t mask = 0;
 
        mask = 1 << (page & 0x1f);

-- 

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to