From: Keith Packard Date: Sun, 19 Sep 2021 05:15:50 +0000 (-0700) Subject: altos/stm: Use picolibc startup code X-Git-Tag: 1.9.8~1^2~29 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=41b754f955de6f196e44f30334436e5237fb9110 altos/stm: Use picolibc startup code Instead of custom bits Signed-off-by: Keith Packard --- 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(); }