[PATCH] fix Thumb-2 decompressor broken by "Auto calculate ZRELADDR"

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Sat Jul 31 08:50:09 EDT 2010


On Sat, Jul 31, 2010 at 01:31:42PM +0100, Russell King - ARM Linux wrote:
> On Sat, Jul 31, 2010 at 02:08:27PM +0200, Uwe Kleine-König wrote:
> > On Sat, Jul 31, 2010 at 10:04:45AM +0100, Russell King - ARM Linux wrote:
> > > It doesn't matter.  The point is that you deleted an entry from the
> > > table which the ldmia/ldmia+ldr loads from and didn't adjust the
> > > resulting code properly.
> > Yes, got that.
> > > 
> > > - ARM(          ldmia   r0, {r1, r2, r3, r5, r6, r11, ip, sp})
> > > + ARM(          ldmia   r0, {r1, r2, r3, r5, r6, r11, ip})
> > >   THUMB(                ldmia   r0, {r1, r2, r3, r5, r6, r11, ip}       )
> > > - THUMB(                ldr     sp, [r0, #32]                           )
> > > +               ldr     sp, [r0, #28]
> > We can simpify this further to just
> > 
> > 	@ Thumb code doesn't allow sp to be in the list, for ARM it's
> > 	@ deprecated, so use a seperate ldr for it.
> > 	ldmia   r0, {r1, r2, r3, r5, r6, r11, ip}
> > 	ldr     sp, [r0, #32]
> 
> No, you mean #28.
oops, yes of course.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



More information about the linux-arm-kernel mailing list