Hi Francis, On Sun, Apr 2, 2023 at 3:17 AM Pali Rohár <[email protected]> wrote: > > On Saturday 01 April 2023 15:17:59 Tony Dinh wrote: > > Hi Francis, > > > > On Sat, Apr 1, 2023 at 2:55 PM Francis Laniel > > <[email protected]> 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 <[email protected]> > > > Tested-by: Tony Dinh <[email protected]> > > > [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. > > Looks good, > > Acked-by: Pali Rohár <[email protected]> > > > 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.
I've done some more testing with other boards. I'm seeing some problems with LTO in gcc-12, but it is not related to this patch. Acked-by: Tony Dinh <[email protected]> Thanks, Tony > > > > 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 > > >

