#include extern "C" uint32_t _bss_begin, _bss_end, _initial_stack_pointer; extern "C" int main(); namespace { enum VectorTableEntry { StackPointer = 0, Reset = 1, }; void ResetHandler() { // clear .bss for (uint32_t* ptr = &_bss_begin; ptr < &_bss_end; ptr++) { *ptr = 0; } main(); while (true) { } } } // namespace __attribute__((section(".vector_table"), used)) uint32_t vector_table[16] = { [StackPointer] = reinterpret_cast(&_initial_stack_pointer), [Reset] = reinterpret_cast(ResetHandler), };