TUKS MCU Introductory course / TUKS-COURSE-TIMER
Committer:
elmot
Date:
Sat Feb 25 00:23:53 2017 +0000
Revision:
2:5acdd8565d02
Parent:
1:d0dfbce63a89
Ready to show

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elmot 1:d0dfbce63a89 1 /**************************************************
elmot 1:d0dfbce63a89 2 *
elmot 1:d0dfbce63a89 3 * Part two of the system initialization code, contains C-level
elmot 1:d0dfbce63a89 4 * initialization, thumb-2 only variant.
elmot 1:d0dfbce63a89 5 *
elmot 1:d0dfbce63a89 6 * Copyright 2006 IAR Systems. All rights reserved.
elmot 1:d0dfbce63a89 7 *
elmot 1:d0dfbce63a89 8 * $Revision: 59783 $
elmot 1:d0dfbce63a89 9 *
elmot 1:d0dfbce63a89 10 **************************************************/
elmot 1:d0dfbce63a89 11
elmot 1:d0dfbce63a89 12
elmot 1:d0dfbce63a89 13 ; --------------------------------------------------
elmot 1:d0dfbce63a89 14 ; Module ?cmain, C-level initialization.
elmot 1:d0dfbce63a89 15 ;
elmot 1:d0dfbce63a89 16
elmot 1:d0dfbce63a89 17
elmot 1:d0dfbce63a89 18 SECTION SHT$$PREINIT_ARRAY:CONST:NOROOT(2)
elmot 1:d0dfbce63a89 19 SECTION SHT$$INIT_ARRAY:CONST:NOROOT(2)
elmot 1:d0dfbce63a89 20
elmot 1:d0dfbce63a89 21 SECTION .text:CODE:NOROOT(2)
elmot 1:d0dfbce63a89 22
elmot 1:d0dfbce63a89 23 PUBLIC __cmain
elmot 1:d0dfbce63a89 24 ;; Keep ?main for legacy reasons, it is accessed in countless instances of cstartup.s around the world...
elmot 1:d0dfbce63a89 25 PUBLIC ?main
elmot 1:d0dfbce63a89 26 EXTWEAK __iar_data_init3
elmot 1:d0dfbce63a89 27 EXTWEAK __iar_argc_argv
elmot 1:d0dfbce63a89 28 EXTERN __low_level_init
elmot 1:d0dfbce63a89 29 EXTERN __call_ctors
elmot 1:d0dfbce63a89 30 EXTERN main
elmot 1:d0dfbce63a89 31 EXTERN exit
elmot 1:d0dfbce63a89 32 EXTERN __iar_dynamic_initialization
elmot 1:d0dfbce63a89 33 EXTERN mbed_sdk_init
elmot 1:d0dfbce63a89 34 EXTERN SystemInit
elmot 1:d0dfbce63a89 35
elmot 1:d0dfbce63a89 36 THUMB
elmot 1:d0dfbce63a89 37 __cmain:
elmot 1:d0dfbce63a89 38 ?main:
elmot 1:d0dfbce63a89 39
elmot 1:d0dfbce63a89 40 ; Initialize segments.
elmot 1:d0dfbce63a89 41 ; __segment_init and __low_level_init are assumed to use the same
elmot 1:d0dfbce63a89 42 ; instruction set and to be reachable by BL from the ICODE segment
elmot 1:d0dfbce63a89 43 ; (it is safest to link them in segment ICODE).
elmot 1:d0dfbce63a89 44
elmot 1:d0dfbce63a89 45 FUNCALL __cmain, __low_level_init
elmot 1:d0dfbce63a89 46 bl __low_level_init
elmot 1:d0dfbce63a89 47 cmp r0,#0
elmot 1:d0dfbce63a89 48 beq ?l1
elmot 1:d0dfbce63a89 49 FUNCALL __cmain, __iar_data_init3
elmot 1:d0dfbce63a89 50 bl __iar_data_init3
elmot 1:d0dfbce63a89 51 MOVS r0,#0 ; No parameters
elmot 1:d0dfbce63a89 52 FUNCALL __cmain, mbed_sdk_init
elmot 1:d0dfbce63a89 53 BL mbed_sdk_init
elmot 1:d0dfbce63a89 54 MOVS r0,#0 ; No parameters
elmot 1:d0dfbce63a89 55 FUNCALL __cmain, __iar_dynamic_initialization
elmot 1:d0dfbce63a89 56 BL __iar_dynamic_initialization ; C++ dynamic initialization
elmot 1:d0dfbce63a89 57
elmot 1:d0dfbce63a89 58 ?l1:
elmot 1:d0dfbce63a89 59 REQUIRE ?l3
elmot 1:d0dfbce63a89 60
elmot 1:d0dfbce63a89 61 SECTION .text:CODE:NOROOT(2)
elmot 1:d0dfbce63a89 62
elmot 1:d0dfbce63a89 63 PUBLIC _main
elmot 1:d0dfbce63a89 64 PUBLIC _call_main
elmot 1:d0dfbce63a89 65 THUMB
elmot 1:d0dfbce63a89 66
elmot 1:d0dfbce63a89 67 __iar_init$$done: ; Copy initialization is done
elmot 1:d0dfbce63a89 68
elmot 1:d0dfbce63a89 69 ?l3:
elmot 1:d0dfbce63a89 70 _call_main:
elmot 1:d0dfbce63a89 71 MOVS r0,#0 ; No parameters
elmot 1:d0dfbce63a89 72 FUNCALL __cmain, __iar_argc_argv
elmot 1:d0dfbce63a89 73 BL __iar_argc_argv ; Maybe setup command line
elmot 1:d0dfbce63a89 74
elmot 1:d0dfbce63a89 75 FUNCALL __cmain, main
elmot 1:d0dfbce63a89 76 BL main
elmot 1:d0dfbce63a89 77 _main:
elmot 1:d0dfbce63a89 78 FUNCALL __cmain, exit
elmot 1:d0dfbce63a89 79 BL exit
elmot 1:d0dfbce63a89 80
elmot 1:d0dfbce63a89 81 END