summaryrefslogtreecommitdiff
path: root/entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'entry.cpp')
-rw-r--r--entry.cpp63
1 files changed, 0 insertions, 63 deletions
diff --git a/entry.cpp b/entry.cpp
deleted file mode 100644
index ae58404..0000000
--- a/entry.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <stdint.h>
-#include <hal.h>
-
-int main();
-
-typedef void (*funcp_t)();
-
-// 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;
-extern funcp_t _init_array_start;
-extern funcp_t _init_array_end;
-extern funcp_t _fini_array_start;
-extern funcp_t _fini_array_end;
-
-void __attribute__((naked)) entry() {
- // Initialize HAL.
- hal_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.
- funcp_t* fp = &_init_array_start;
-
- while(fp < &_init_array_end) {
- (*fp++)();
- }
-
- // Call main().
- main();
-
- // Call destructors.
- fp = &_fini_array_start;
-
- while(fp < &_fini_array_end) {
- (*fp++)();
- }
-
- // Halt.
- while(1);
-}
-
-extern "C" void __cxa_pure_virtual() {
- while (1);
-}
-
-void* __dso_handle = 0;