[RFC PATCH v1] arm: lib: add __gnu_thumb1_case_si
Tony Dinh
mibodhi at gmail.com
Sun Apr 2 00:17:59 CEST 2023
Hi Francis,
On Sat, Apr 1, 2023 at 2:55 PM Francis Laniel
<francis.laniel at amarulasolutions.com> wrote:
>
> 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 at amarulasolutions.com>
> Tested-by: Tony Dinh <mibodhi at gmail.com>
> [1] https://github.com/gcc-mirror/gcc/blob/4f181f9c7ee3efc509d185fdfda33be9018f1611/libgcc/config/arm/lib1funcs.S#L2156
Thanks for the patch! I've added Tom, Pali, and Stefan.
I think we need to do some more testing for other boards that have
CONFIG_HAS_THUMB2 and CONFIG_SPL_SYS_THUMB_BUILD. My test target
(Marvell Armada 385 SoC) is somewhat broken right now. So it will take
some time for me to get that back running to run this test.
All the best,
Tony
> ---
> arch/arm/lib/lib1funcs.S | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/arch/arm/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S
> index 7ff4446dd6..79cedc0aad 100644
> --- a/arch/arm/lib/lib1funcs.S
> +++ b/arch/arm/lib/lib1funcs.S
> @@ -424,4 +424,21 @@ ENTRY(__gnu_thumb1_case_uhi)
> ret lr
> ENDPROC(__gnu_thumb1_case_uhi)
> .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
> --
> 2.34.1
>
More information about the U-Boot
mailing list