Align loader to 32-bit boundary debian
authorKeith Packard <keithp@keithp.com>
Mon, 30 May 2016 20:31:43 +0000 (13:31 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 30 May 2016 20:31:43 +0000 (13:31 -0700)
write_mem32 needs it to be aligned, and writing extra data is harmless
at this point.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/stlink-common.c

index 18c76fb86c109b242d32c7f8080a88d67941ca60..533e670c6969dfa130039ab9117eab2a6dfe4999 100644 (file)
@@ -1525,7 +1525,7 @@ int write_loader_to_sram(stlink_t *sl, stm32_addr_t* addr, size_t* size) {
 
         0x00, 0x2a,
         0xf8, 0xd3,
-        0x00, 0xbe
+        0x00, 0xbe,
     };
 
     static const uint8_t loader_code_stm32l0[] = {
@@ -1547,7 +1547,7 @@ int write_loader_to_sram(stlink_t *sl, stm32_addr_t* addr, size_t* size) {
 
         0x00, 0x2a,
         0xf8, 0xd3,
-        0x00, 0xbe
+        0x00, 0xbe,
     };
 
     static const uint8_t loader_code_stm32f4[] = {
@@ -1679,6 +1679,10 @@ int write_loader_to_sram(stlink_t *sl, stm32_addr_t* addr, size_t* size) {
     }
 
     memcpy(sl->q_buf, loader_code, loader_size);
+
+    /* pad to 32-bits */
+    loader_size = (loader_size + 3) & ~3;
+
     stlink_write_mem32(sl, sl->sram_base, loader_size);
 
     *addr = sl->sram_base;