Removed UB from picosoc demo firmware

This commit is contained in:
Clifford Wolf 2017-09-15 19:55:22 +02:00
parent 1c8266869a
commit 76124b8649
2 changed files with 7 additions and 2 deletions

View File

@ -1,5 +1,9 @@
#include <stdint.h>
// a pointer to this is a null pointer, but the compiler does not
// know that because "sram" is a linker symbol from sections.lds.
extern uint32_t sram;
#define reg_spictrl (*(volatile uint32_t*)0x02000000)
#define reg_uart_clkdiv (*(volatile uint32_t*)0x02000004)
#define reg_uart_data (*(volatile uint32_t*)0x02000008)
@ -53,12 +57,12 @@ extern uint32_t cmd_read_spi_flash_id_worker_end;
void cmd_read_spi_flash_id()
{
uint32_t *src_ptr = &cmd_read_spi_flash_id_worker_begin;
uint32_t *dst_ptr = (uint32_t*)0;
uint32_t *dst_ptr = &sram;
while (src_ptr != &cmd_read_spi_flash_id_worker_end)
*(dst_ptr++) = *(src_ptr++);
((void(*)())0)();
((void(*)())&sram)();
}
// --------------------------------------------------------

View File

@ -1,5 +1,6 @@
SECTIONS {
.memory : {
sram = 0;
. = 0x100000;
start*(.text);
*(.text);