mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
arm: lib: add __gnu_thumb1_case_si
The assembly for __gnu_thumb1_case_si was taken from upstream gcc and adapted
as width suffix was removed for the add instruction [1].
Signed-off-by: Francis Laniel <francis.laniel@amarulasolutions.com>
Tested-by: Tony Dinh <mibodhi@gmail.com>
[1] 4f181f9c7e/libgcc/config/arm/lib1funcs.S (L2156)
Acked-by: Pali Rohár <pali@kernel.org>
Acked-by: Tony Dinh <mibodhi@gmail.com>
This commit is contained in:
parent
16abdd42b3
commit
5ffcf7c590
1 changed files with 17 additions and 0 deletions
|
@ -419,4 +419,21 @@ ENTRY(__gnu_thumb1_case_uhi)
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__gnu_thumb1_case_uhi)
|
ENDPROC(__gnu_thumb1_case_uhi)
|
||||||
.popsection
|
.popsection
|
||||||
|
|
||||||
|
/* Taken and adapted from: https://github.com/gcc-mirror/gcc/blob/4f181f9c7ee3efc509d185fdfda33be9018f1611/libgcc/config/arm/lib1funcs.S#L2156 */
|
||||||
|
.pushsection .text.__gnu_thumb1_case_si, "ax"
|
||||||
|
ENTRY(__gnu_thumb1_case_si)
|
||||||
|
push {r0, r1}
|
||||||
|
mov r1, lr
|
||||||
|
adds r1, r1, #2 /* Align to word. */
|
||||||
|
lsrs r1, r1, #2
|
||||||
|
lsls r0, r0, #2
|
||||||
|
lsls r1, r1, #2
|
||||||
|
ldr r0, [r1, r0]
|
||||||
|
adds r0, r0, r1
|
||||||
|
mov lr, r0
|
||||||
|
pop {r0, r1}
|
||||||
|
mov pc, lr /* We know we were called from thumb code. */
|
||||||
|
ENDPROC(__gnu_thumb1_case_si)
|
||||||
|
.popsection
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue