69 asm("b KernelMain "); |
69 asm("b KernelMain "); |
70 |
70 |
71 asm("__CtorList: "); |
71 asm("__CtorList: "); |
72 asm(".word __CTOR_LIST__ "); |
72 asm(".word __CTOR_LIST__ "); |
73 } |
73 } |
74 #elif defined(__ARMCC__) |
74 #elif defined(__EABI__) |
75 void __DLL_Export_Table__(void); |
75 void __DLL_Export_Table__(void); |
76 void __cpp_initialize__aeabi_(); |
76 void __cpp_initialize__aeabi_(); |
77 |
77 |
78 // The compiler generates calls to this when it reckons a top-level construction |
78 // The compiler generates calls to this when it reckons a top-level construction |
79 // needs destruction. But the kernel never will need this so, define it as a nop |
79 // needs destruction. But the kernel never will need this so, define it as a nop |
80 void __record_needed_destruction (void * d){} |
80 void __record_needed_destruction (void * d){} |
81 // 2.1 calls __aeabi_atexit passing __dso_handle. This can be a dummy (i.e. just a label) |
81 // 2.1 calls __aeabi_atexit passing __dso_handle. This can be a dummy (i.e. just a label) |
82 |
82 |
83 __asm void __dso_handle(void) {} |
83 __NAKED__ void __dso_handle(void) {} |
84 void __aeabi_atexit(void *object, void (*dtor)(void *), void *handle){} |
84 void __aeabi_atexit(void *object, void (*dtor)(void *), void *handle){} |
85 |
85 |
86 void _E32Startup_Body(TLinAddr aRomHeader, TLinAddr aSuperPage); |
86 void _E32Startup_Body(TLinAddr aRomHeader, TLinAddr aSuperPage); |
87 |
87 |
88 __NAKED__ void _E32Startup(TLinAddr aRomHeader, TLinAddr aSuperPage) |
88 __NAKED__ void _E32Startup(TLinAddr aRomHeader, TLinAddr aSuperPage) |