1 /**************************************************
3 * Part two of the system initialization code, contains C-level
4 * initialization, thumb-2 only variant.
6 * Copyright 2006 IAR Systems. All rights reserved.
10 **************************************************/
13 ; --------------------------------------------------
14 ; Module ?cmain, C-level initialization.
18 SECTION SHT$$PREINIT_ARRAY:CONST:NOROOT(2)
19 SECTION SHT$$INIT_ARRAY:CONST:NOROOT(2)
21 SECTION .text:CODE:NOROOT(2)
24 ;; Keep ?main for legacy reasons, it is accessed in countless instances of cstartup.s around the world...
26 EXTWEAK __iar_data_init3
27 EXTWEAK __iar_argc_argv
28 EXTERN __low_level_init
32 EXTERN __iar_dynamic_initialization
40 ; Initialize segments.
41 ; __segment_init and __low_level_init are assumed to use the same
42 ; instruction set and to be reachable by BL from the ICODE segment
43 ; (it is safest to link them in segment ICODE).
45 FUNCALL __cmain, __low_level_init
49 FUNCALL __cmain, __iar_data_init3
51 MOVS r0,#0 ; No parameters
52 FUNCALL __cmain, mbed_sdk_init
54 MOVS r0,#0 ; No parameters
55 FUNCALL __cmain, __iar_dynamic_initialization
56 BL __iar_dynamic_initialization ; C++ dynamic initialization
61 SECTION .text:CODE:NOROOT(2)
67 __iar_init$$done: ; Copy initialization is done
71 MOVS r0,#0 ; No parameters
72 FUNCALL __cmain, __iar_argc_argv
73 BL __iar_argc_argv ; Maybe setup command line