Skip to content

Commit 372d86d

Browse files
authored
[libc] Cleanup startup/baremetal/arm/start.cpp (#151532)
Post-commit review changes as suggested by @petrhosek in #146863
1 parent 9a29353 commit 372d86d

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
lines changed

libc/startup/baremetal/arm/start.cpp

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
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"
@@ -14,8 +15,6 @@
1415
#include "startup/baremetal/fini.h"
1516
#include "startup/baremetal/init.h"
1617

17-
#include <stdint.h>
18-
1918
extern "C" {
2019
int main(int argc, char **argv);
2120
void _start();
@@ -31,7 +30,9 @@ extern uintptr_t __data_start[];
3130
extern uintptr_t __data_size[];
3231
extern uintptr_t __bss_start[];
3332
extern 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
3738
void 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.
5152
using 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

7475
namespace 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

Comments
 (0)