]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
Startup code allows THUMB and THUMB with interworking for applications now.
authorppisa <ppisa>
Thu, 22 Oct 2009 12:21:19 +0000 (12:21 +0000)
committerppisa <ppisa>
Thu, 22 Oct 2009 12:21:19 +0000 (12:21 +0000)
arch/arm/mach-lpc21xx/libs/hal/startup.S

index 4b838f22cdb935fe9ae2e9430a1a1c680f3c4557..5e0f84f98a357b4c2a30b8c03f44de344849f5d3 100644 (file)
@@ -109,27 +109,39 @@ LoopZI: CMP     R1, R2
 
 
 # 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