# Enter the C _setup_board code
- ADR LR, __main_start
LDR R0, =_setup_board
CMP R0, #0
BEQ __main_start
+ ADR LR, __main_start
+#if defined(__thumb__)
+ TST R0,#1
+ ADRNE LR, __main_start_from_thumb
BX R0
-
+ .code 16
+__main_start_from_thumb:
+ BX PC
+ NOP
+ .code 32
+#else
+ BX R0
+#endif
__main_start:
+
+ LDR R0, =main
+ ADR LR, __main_exit
#if defined(__thumb__)
- .code 16
- BL main
- # swith to arm mode
+ TST R0,#1
+ ADRNE LR, __main_exit_from_thumb
+ BX R0
+ .code 16
+__main_exit_from_thumb:
BX PC
NOP
- .code 32
+ .code 32
#else
- ADR LR, __main_exit
- LDR R0, =main
BX R0
-
-__main_exit:
#endif
+__main_exit:
LDR R0, =_mem_app_start
CMP R0, #0
BEQ __main_loop