From mboxrd@z Thu Jan 1 00:00:00 1970 From: kirill@shutemov.name (Kirill A. Shutemov) Date: Thu, 17 Feb 2011 01:50:19 +0200 Subject: [klibc] fwd: fix up ARM assembly to use 'bx lr' in place of 'mov pc, lr'. In-Reply-To: <20110216230648.GA7649@stro.at> References: <20110216230648.GA7649@stro.at> Message-ID: <20110216235019.GA17674@shutemov.name> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, Feb 17, 2011 at 12:06:48AM +0100, maximilian attems wrote: > hello vorlon, > > got notified of your patch, > will apply next days upstream unless some critiques are voiced on ml. > thanks. > > -- > maks > > > ----- Forwarded message from Steve Langasek ----- > > Date: Wed, 16 Feb 2011 22:05:42 -0000 > From: Steve Langasek > Subject: [Bug 527720] Re: thumb2 porting issues identified: klibc uses mov.*pc > > > I've also touched it up to be mergeable with Debian (support v4t builds > with #ifdef). > > Confirmed that installing the resulting klibc packages on my beagleboard > gives me a successfully-booting initramfs with klibc; and the > vfork/setjmptest test cases all pass in the klibc package tree. > > Fixes: https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/527720 > > --- klibc-1.5.20.orig/usr/klibc/arch/arm/vfork.S > +++ klibc-1.5.20/usr/klibc/arch/arm/vfork.S > @@ -25,7 +25,11 @@ vfork: > ldrcs r3, 1f > mvncs r0, #0 > strcs r2, [r3] > +#if defined (___ARM_ARCH_4T__) || defined (__ARM_ARCH_4__) NAK. ARMv4T supports bx intruction. ARMv4 doesn't. > mov pc, lr > +#else > + bx lr > +#endif > > .balign 4 > 1: > @@ -49,7 +53,11 @@ vfork: > str r2, [r1] > neg r0, r0 > 1: > +#if defined (___ARM_ARCH_4T__) || defined (__ARM_ARCH_4__) > mov pc, lr > +#else > + bx lr > +#endif > > .balign 4 > 2: > --- klibc-1.5.20.orig/usr/klibc/arch/arm/setjmp.S > +++ klibc-1.5.20/usr/klibc/arch/arm/setjmp.S > @@ -29,7 +29,11 @@ > setjmp: > stmia r0, {r4, r5, r6, r7, r8, r9, r10, fp, sp, lr} > mov r0, #0 > +#if defined (___ARM_ARCH_4T__) || defined (__ARM_ARCH_4__) > mov pc, lr > +#else > + bx lr > +#endif > .size setjmp,.-setjmp > > .text > @@ -39,7 +43,11 @@ setjmp: > longjmp: > ldmia r0, {r4, r5, r6, r7, r8, r9, r10, fp, sp, lr} > mov r0, r1 > +#if defined (___ARM_ARCH_4T__) || defined (__ARM_ARCH_4__) > mov pc, lr > +#else > + bx lr > +#endif > .size longjmp,.-longjmp > > #else /* __thumb__ */ > @@ -75,7 +83,11 @@ setjmp: > mov r7, sp > stmia r0!, {r3, r4, r5, r6, r7} > mov r0, #0 > +#if defined (___ARM_ARCH_4T__) || defined (__ARM_ARCH_4__) > mov pc, lr > +#else > + bx lr > +#endif > .size setjmp,.-setjmp > > .text > @@ -96,7 +108,11 @@ longjmp: > mov r0, r1 > bne 1f > mov r0, #1 > +#if defined (___ARM_ARCH_4T__) || defined (__ARM_ARCH_4__) > 1: mov pc, r3 > +#else > +1: bx r3 > +#endif > .size longjmp,.-longjmp > > #endif /* __thumb__ */ > > _______________________________________________ > klibc mailing list > klibc at zytor.com > http://www.zytor.com/mailman/listinfo/klibc -- Kirill A. Shutemov