diff options
Diffstat (limited to 'os')
-rw-r--r-- | os/ports/IAR/ARMCMx/cstartup.s | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/os/ports/IAR/ARMCMx/cstartup.s b/os/ports/IAR/ARMCMx/cstartup.s index 97757362a..2084ff929 100644 --- a/os/ports/IAR/ARMCMx/cstartup.s +++ b/os/ports/IAR/ARMCMx/cstartup.s @@ -39,10 +39,13 @@ CONTROL_USE_PSP SET 2 SECTION .intvec:CODE:NOROOT(3)
PUBLIC __iar_program_start
- EXTERN __cmain
+ EXTERN main
+ EXTERN _exit
EXTERN __vector_table
EXTWEAK __iar_init_core
EXTWEAK __iar_init_vfp
+ EXTWEAK __low_level_init
+ EXTWEAK __iar_data_init3
SECTION .text:CODE:REORDER(2)
THUMB
@@ -56,12 +59,26 @@ __iar_program_start: bl hwinit0
bl __iar_init_core
bl __iar_init_vfp
- bl __cmain
+
+; Replicated cmain.s here in order to insert the call to hwinit1.
+ bl __low_level_init
+ cmp r0, #0
+ beq.n _call_main
+ bl __iar_data_init3
+_call_main:
+ bl hwinit1
+ bl main
+ bl _exit
PUBWEAK hwinit0
hwinit0
bx lr
+
+ PUBWEAK hwinit1
+hwinit1
+ bx lr
+
REQUIRE __vector_table
END
|