zhang boie / mbed-dev-f30333
Committer:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4
Date:
Tue Jun 14 09:21:18 2022 +0000
Revision:
0:bdf663c61a82
lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 1 /**************************************************
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 2 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 3 * Part two of the system initialization code, contains C-level
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 4 * initialization, thumb-2 only variant.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 5 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 6 * $Revision: 59783 $
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 7 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 8 **************************************************/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 9 /* Copyright 2008-2017, IAR Systems AB.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 10 This source code is the property of IAR Systems. The source code may only
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 11 be used together with the IAR Embedded Workbench. Redistribution and use
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 12 in source and binary forms, with or without modification, is permitted
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 13 provided that the following conditions are met:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 14 - Redistributions of source code, in whole or in part, must retain the
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 15 above copyright notice, this list of conditions and the disclaimer below.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 16 - IAR Systems name may not be used to endorse or promote products
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 17 derived from this software without specific prior written permission.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 18
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 19 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 20 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 21 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 22 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 23 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 24 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 25 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 26 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 27
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 28 ; --------------------------------------------------
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 29 ; Module ?cmain, C-level initialization.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 30 ;
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 31
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 32
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 33 SECTION SHT$$PREINIT_ARRAY:CONST:NOROOT(2)
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 34 SECTION SHT$$INIT_ARRAY:CONST:NOROOT(2)
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 35
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 36 SECTION .text:CODE:NOROOT(2)
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 37
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 38 PUBLIC __cmain
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 39 ;; Keep ?main for legacy reasons, it is accessed in countless instances of cstartup.s around the world...
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 40 PUBLIC ?main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 41 EXTWEAK __iar_data_init3
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 42 EXTWEAK __iar_argc_argv
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 43 EXTERN __low_level_init
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 44 EXTERN __call_ctors
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 45 EXTERN main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 46 EXTERN exit
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 47 EXTERN __iar_dynamic_initialization
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 48 EXTERN mbed_sdk_init
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 49 EXTERN mbed_main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 50 EXTERN SystemInit
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 51
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 52 THUMB
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 53 __cmain:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 54 ?main:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 55
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 56 ; Initialize segments.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 57 ; __segment_init and __low_level_init are assumed to use the same
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 58 ; instruction set and to be reachable by BL from the ICODE segment
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 59 ; (it is safest to link them in segment ICODE).
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 60
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 61 FUNCALL __cmain, __low_level_init
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 62 bl __low_level_init
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 63 cmp r0,#0
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 64 beq ?l1
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 65 FUNCALL __cmain, __iar_data_init3
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 66 bl __iar_data_init3
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 67 MOVS r0,#0 ; No parameters
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 68 FUNCALL __cmain, mbed_sdk_init
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 69 BL mbed_sdk_init
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 70 MOVS r0,#0 ; No parameters
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 71 FUNCALL __cmain, __iar_dynamic_initialization
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 72 BL __iar_dynamic_initialization ; C++ dynamic initialization
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 73
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 74 ?l1:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 75 REQUIRE ?l3
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 76
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 77 SECTION .text:CODE:NOROOT(2)
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 78
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 79 PUBLIC _main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 80 PUBLIC _call_main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 81 THUMB
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 82
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 83 __iar_init$$done: ; Copy initialization is done
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 84
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 85 ?l3:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 86 _call_main:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 87 MOVS r0,#0 ; No parameters
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 88 FUNCALL __cmain, __iar_argc_argv
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 89 BL __iar_argc_argv ; Maybe setup command line
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 90
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 91 MOVS r0,#0 ; No parameters
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 92 FUNCALL __cmain, mbed_main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 93 BL mbed_main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 94
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 95 FUNCALL __cmain, main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 96 BL main
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 97 _main:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 98 FUNCALL __cmain, exit
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 99 BL exit
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 100
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 101 END
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 102