#include #include "rcc.h" int main(); // Symbols from linker script. extern uint32_t _data_rom; extern uint32_t _data_start; extern uint32_t _data_end; extern uint32_t _bss_start; extern uint32_t _bss_end; void __attribute__((naked)) entry() { // Initialize clock. rcc_init(); // Load .data from rom image. uint32_t* rp = &_data_rom; uint32_t* wp = &_data_start; while(wp < &_data_end) { *wp++ = *rp++; } // Clear .bss. wp = &_bss_start; while(wp < &_bss_end) { *wp++ = 0; } // Call constructors. // Call main(). main(); // Call destructors. // Halt. while(1); }