From 41b754f955de6f196e44f30334436e5237fb9110 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 18 Sep 2021 22:15:50 -0700 Subject: [PATCH] altos/stm: Use picolibc startup code Instead of custom bits Signed-off-by: Keith Packard --- src/stm/Makefile-flash.defs | 2 +- src/stm/Makefile.defs | 2 +- src/stm/ao_interrupt.c | 13 ++----------- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/stm/Makefile-flash.defs b/src/stm/Makefile-flash.defs index 37fad6d1..77681158 100644 --- a/src/stm/Makefile-flash.defs +++ b/src/stm/Makefile-flash.defs @@ -35,7 +35,7 @@ IDPRODUCT=0x000a CFLAGS = $(PRODUCT_DEF) $(STM_CFLAGS) -LDFLAGS=-nostartfiles $(CFLAGS) -L$(TOPDIR)/stm -Taltos-loader.ld -n +LDFLAGS=$(CFLAGS) -L$(TOPDIR)/stm -Taltos-loader.ld -n PROGNAME=$(HARDWARE)-altos-flash PROG=$(PROGNAME)-$(VERSION).elf diff --git a/src/stm/Makefile.defs b/src/stm/Makefile.defs index d6cbe4d4..2ed89f7e 100644 --- a/src/stm/Makefile.defs +++ b/src/stm/Makefile.defs @@ -4,4 +4,4 @@ endif include $(TOPDIR)/stm/Makefile-stm.defs -LDFLAGS=-nostartfiles $(CFLAGS) -L$(TOPDIR)/stm -Taltos.ld -n +LDFLAGS=$(CFLAGS) -L$(TOPDIR)/stm -Taltos.ld -n diff --git a/src/stm/ao_interrupt.c b/src/stm/ao_interrupt.c index 9a059187..0d6e450f 100644 --- a/src/stm/ao_interrupt.c +++ b/src/stm/ao_interrupt.c @@ -136,6 +136,7 @@ isr(tim7) extern char __stack[]; void _start(void) __attribute__((__noreturn__)); void main(void) __attribute__((__noreturn__)); +void ao_setup(void) __attribute__((constructor)); /* This must be exactly 256 bytes long so that the configuration data * gets loaded at the right place @@ -201,16 +202,7 @@ const void * const __interrupt_vector[64] = { i(0xf0, tim7), }; -extern char __data_source[]; -extern char __data_start[]; -extern char __data_size[]; -extern char __bss_start[]; -extern char __bss_size[]; - -void _start(void) { - memcpy(__data_start, __data_source, (uintptr_t) __data_size); - memset(__bss_start, '\0', (uintptr_t) __bss_size); - +void __attribute__((constructor)) ao_setup(void) { #ifdef AO_BOOT_CHAIN if (ao_boot_check_chain()) { #ifdef AO_BOOT_PIN @@ -223,5 +215,4 @@ void _start(void) { #endif /* Set interrupt vector table offset */ stm_nvic.vto = (uint32_t) &__interrupt_vector; - main(); } -- 2.30.2