78 asm("__SuperPage: "); |
78 asm("__SuperPage: "); |
79 asm(".word SuperPageAddress "); |
79 asm(".word SuperPageAddress "); |
80 asm("__CtorList: "); |
80 asm("__CtorList: "); |
81 asm(".word __CTOR_LIST__ "); |
81 asm(".word __CTOR_LIST__ "); |
82 } |
82 } |
83 #elif defined(__ARMCC__) |
83 #elif defined(__EABI__) |
84 void __DLL_Export_Table__(void); |
84 void __DLL_Export_Table__(void); |
85 void __cpp_initialize__aeabi_(); |
85 void __cpp_initialize__aeabi_(); |
86 |
86 |
87 // The compiler generates calls to this when it reckons a top-level construction |
87 // The compiler generates calls to this when it reckons a top-level construction |
88 // needs destruction. But the kernel never will need this so, define it as a nop |
88 // needs destruction. But the kernel never will need this so, define it as a nop |
89 void __record_needed_destruction (void * d){} |
89 void __record_needed_destruction (void * d){} |
90 // 2.1 calls __aeabi_atexit passing __dso_handle. This can be a dummy (i.e. just a label) |
90 // 2.1 calls __aeabi_atexit passing __dso_handle. This can be a dummy (i.e. just a label) |
91 |
91 |
92 __asm void __dso_handle(void) {} |
92 __NAKED__ void __dso_handle(void) {} |
93 void __aeabi_atexit(void *object, void (*dtor)(void *), void *handle){} |
93 void __aeabi_atexit(void *object, void (*dtor)(void *), void *handle){} |
94 |
94 |
95 void _E32Startup_Body(TLinAddr aRomHeader, TLinAddr aSuperPage); |
95 void _E32Startup_Body(TLinAddr aRomHeader, TLinAddr aSuperPage); |
96 |
96 |
97 __NAKED__ void _E32Startup(TLinAddr aRomHeader, TLinAddr aSuperPage) |
97 __NAKED__ void _E32Startup(TLinAddr aRomHeader, TLinAddr aSuperPage) |