arm: lib: Import Thumb1 functions
authorMarek Vasut <marex@denx.de>
Thu, 26 May 2016 16:01:45 +0000 (18:01 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 3 Jun 2016 01:21:47 +0000 (21:21 -0400)
Import functions into lib1funcs.S which are required for Thumb1
build. These functions come from gcc 5.3.1 release.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
arch/arm/lib/lib1funcs.S

index c343ea9..408839b 100644 (file)
@@ -349,3 +349,56 @@ UNWIND(.save {lr})
        ldr     pc, [sp], #8
 UNWIND(.fnend)
 ENDPROC(Ldiv0)
+
+/* Thumb-1 specialities */
+#if defined(CONFIG_SYS_THUMB_BUILD) && !defined(CONFIG_HAS_THUMB2)
+ENTRY(__gnu_thumb1_case_sqi)
+       push    {r1}
+       mov     r1, lr
+       lsrs    r1, r1, #1
+       lsls    r1, r1, #1
+       ldrsb   r1, [r1, r0]
+       lsls    r1, r1, #1
+       add     lr, lr, r1
+       pop     {r1}
+       bx      lr
+ENDPROC(__gnu_thumb1_case_sqi)
+
+ENTRY(__gnu_thumb1_case_uqi)
+       push    {r1}
+       mov     r1, lr
+       lsrs    r1, r1, #1
+       lsls    r1, r1, #1
+       ldrb    r1, [r1, r0]
+       lsls    r1, r1, #1
+       add     lr, lr, r1
+       pop     {r1}
+       bx      lr
+ENDPROC(__gnu_thumb1_case_uqi)
+
+ENTRY(__gnu_thumb1_case_shi)
+       push    {r0, r1}
+       mov     r1, lr
+       lsrs    r1, r1, #1
+       lsls    r0, r0, #1
+       lsls    r1, r1, #1
+       ldrsh   r1, [r1, r0]
+       lsls    r1, r1, #1
+       add     lr, lr, r1
+       pop     {r0, r1}
+       bx      lr
+ENDPROC(__gnu_thumb1_case_shi)
+
+ENTRY(__gnu_thumb1_case_uhi)
+       push    {r0, r1}
+       mov     r1, lr
+       lsrs    r1, r1, #1
+       lsls    r0, r0, #1
+       lsls    r1, r1, #1
+       ldrh    r1, [r1, r0]
+       lsls    r1, r1, #1
+       add     lr, lr, r1
+       pop     {r0, r1}
+       bx      lr
+ENDPROC(__gnu_thumb1_case_uhi)
+#endif