66//
77// ===----------------------------------------------------------------------===//
88
9+ #include " hdr/stdint_proxy.h"
910#include " src/__support/macros/config.h"
1011#include " src/stdlib/atexit.h"
1112#include " src/stdlib/exit.h"
1415#include " startup/baremetal/fini.h"
1516#include " startup/baremetal/init.h"
1617
17- #include < stdint.h>
18-
1918extern " C" {
2019int main (int argc, char **argv);
2120void _start ();
@@ -31,7 +30,9 @@ extern uintptr_t __data_start[];
3130extern uintptr_t __data_size[];
3231extern uintptr_t __bss_start[];
3332extern uintptr_t __bss_size[];
33+ } // extern "C"
3434
35+ namespace {
3536// Based on
3637// https://developer.arm.com/documentation/107565/0101/Use-case-examples/Generic-Information/What-is-inside-a-program-image-/Vector-table
3738void NMI_Handler () {}
@@ -49,35 +50,37 @@ void SysTick_Handler() {}
4950// to be zero and Cortex-M23 can require up to 10, so 1024-byte align the vector
5051// table.
5152using HandlerType = void (*)(void );
52- const HandlerType vector_table[ ]
53- __attribute__ ((section( " .vectors " ), aligned( 1024 ), used)) = {
54- ( HandlerType) &__stack, // SP
55- _start, // Reset
56- NMI_Handler, // NMI Handler
57- HardFault_Handler, // Hard Fault Handlerß
58- MemManage_Handler, // MPU Fault Han`dler
59- BusFault_Handler, // Bus Fault Handler
60- UsageFault_Handler, // Usage Fault Handler
61- 0 , // Reserved
62- 0 , // Reserved
63- 0 , // Reserved
64- 0 , // Reserved
65- SVC_Handler, // SVC Handler
66- DebugMon_Handler, // Debug Monitor Handler
67- 0 , // Reserved
68- PendSV_Handler, // PendSV Handler
69- SysTick_Handler, // SysTick Handler
70- // Unused
53+ [[gnu::section( " .vectors " ), gnu::aligned( 1024 ), gnu::used] ]
54+ const HandlerType vector_table[] = {
55+ reinterpret_cast < HandlerType>( &__stack) , // SP
56+ _start, // Reset
57+ NMI_Handler, // NMI Handler
58+ HardFault_Handler, // Hard Fault Handlerß
59+ MemManage_Handler, // MPU Fault Han`dler
60+ BusFault_Handler, // Bus Fault Handler
61+ UsageFault_Handler, // Usage Fault Handler
62+ 0 , // Reserved
63+ 0 , // Reserved
64+ 0 , // Reserved
65+ 0 , // Reserved
66+ SVC_Handler, // SVC Handler
67+ DebugMon_Handler, // Debug Monitor Handler
68+ 0 , // Reserved
69+ PendSV_Handler, // PendSV Handler
70+ SysTick_Handler, // SysTick Handler
71+ // Unused
7172};
72- } // extern "C"
73+ } // namespace
7374
7475namespace LIBC_NAMESPACE_DECL {
7576[[noreturn]] void do_start () {
7677 // FIXME: set up the QEMU test environment
7778
7879 // Perform the equivalent of scatterloading
79- LIBC_NAMESPACE::memcpy (__data_start, __data_source, (uintptr_t )__data_size);
80- LIBC_NAMESPACE::memset (__bss_start, ' \0 ' , (uintptr_t )__bss_size);
80+ LIBC_NAMESPACE::memcpy (__data_start, __data_source,
81+ reinterpret_cast <uintptr_t >(__data_size));
82+ LIBC_NAMESPACE::memset (__bss_start, ' \0 ' ,
83+ reinterpret_cast <uintptr_t >(__bss_size));
8184 __libc_init_array ();
8285
8386 _platform_init ();
0 commit comments