| Submitter | seedshope |
|---|---|
| Date | July 6, 2012, 11:42 a.m. |
| Message ID | <4FF6CF0A.7010300@gmail.com> |
| Download | mbox | patch |
| Permalink | /patch/169454/ |
| State | Superseded |
| Delegated to: | Albert ARIBAUD |
| Headers | show |
Comments
Dear Zhong Hongbo, On 06.07.2012 13:42, Zhong Hongbo wrote: > On 07/06/2012 01:35 AM, Albert ARIBAUD <albert.u.boot@aribaud.net> (by > way of Albert ARIBAUD wrote: >> Hi Zhong Hongbo, >> >> On Thu, 05 Jul 2012 19:53:46 +0800, Zhong Hongbo <bocui107@gmail.com> >> wrote: <snip> > > Ok, I just found the issue have found in other arm platfor 2011 yeas, > the detail information as following: > > commit 8f1da53508c78789ebeea98a92a3f55c3f84dc5d > Author: Christian Riesch <christian.riesch@omicron.at> > Date: Wed Nov 30 22:27:37 2011 +0000 > > arm, arm926ejs: Fix clear bss loop for zero length bss > > This patch fixes the clear bss loop for bss sections that have > zero length, i.e., where __bss_start == __bss_end__. > > Signed-off-by: Christian Riesch <christian.riesch@omicron.at> > Cc: Albert Aribaud <albert.u.boot@aribaud.net> > > diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S > index 339c5ed..bb4d00b 100644 > --- a/arch/arm/cpu/arm926ejs/start.S > +++ b/arch/arm/cpu/arm926ejs/start.S > @@ -301,10 +301,12 @@ clear_bss: > #endif > mov r2, #0x00000000 /* clear > */ > > -clbss_l:str r2, [r0] /* clear loop... > */ > +clbss_l:cmp r0, r1 /* clear loop... */ > + bhs clbss_e /* if reached end of bss, exit */ > + str r2, [r0] > add r0, r0, #4 > - cmp r0, r1 > - bne clbss_l > + b clbss_l > +clbss_e: >>> clbss_l:str r2, [r0] /* clear loop...*/ >>> add r0, r0, #4 >>> cmp r0, r1 >>> bne clbss_l >> >> Into something like >> >>> clbss_l:cmp r0, r1 >>> blo clbss_d >>> str r2, [r0] /* clear loop...*/ >>> add r0, r0, #4 >>> b clbss_l >>> clbss_d: >> >> Also, as Andreas points out, make sure the same fix is applied to all ARM start.S files which need it. > > Ok, I think this is the thread we will proceed. So as I understand we had missed in 2011 to update the other start.S with a fix found by Christian Riesch for arm926ejs. So please do update _all_ start.S (of arm;) now. I think they do have all the same error cause we copied it over from one to the other when implementing the 'new relocation' stuff. Best regards Andreas Bießmann
On 07/06/2012 07:49 PM, Andreas Bießmann wrote: > Dear Zhong Hongbo, > > On 06.07.2012 13:42, Zhong Hongbo wrote: >> On 07/06/2012 01:35 AM, Albert ARIBAUD <albert.u.boot@aribaud.net> (by >> way of Albert ARIBAUD wrote: >>> Hi Zhong Hongbo, >>> >>> On Thu, 05 Jul 2012 19:53:46 +0800, Zhong Hongbo <bocui107@gmail.com> >>> wrote: > > <snip> > >> >> Ok, I just found the issue have found in other arm platfor 2011 yeas, >> the detail information as following: >> >> commit 8f1da53508c78789ebeea98a92a3f55c3f84dc5d >> Author: Christian Riesch <christian.riesch@omicron.at> >> Date: Wed Nov 30 22:27:37 2011 +0000 >> >> arm, arm926ejs: Fix clear bss loop for zero length bss >> >> This patch fixes the clear bss loop for bss sections that have >> zero length, i.e., where __bss_start == __bss_end__. >> >> Signed-off-by: Christian Riesch <christian.riesch@omicron.at> >> Cc: Albert Aribaud <albert.u.boot@aribaud.net> >> >> diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S >> index 339c5ed..bb4d00b 100644 >> --- a/arch/arm/cpu/arm926ejs/start.S >> +++ b/arch/arm/cpu/arm926ejs/start.S >> @@ -301,10 +301,12 @@ clear_bss: >> #endif >> mov r2, #0x00000000 /* clear >> */ >> >> -clbss_l:str r2, [r0] /* clear loop... >> */ >> +clbss_l:cmp r0, r1 /* clear loop... */ >> + bhs clbss_e /* if reached end of bss, exit */ >> + str r2, [r0] >> add r0, r0, #4 >> - cmp r0, r1 >> - bne clbss_l >> + b clbss_l >> +clbss_e: >>>> clbss_l:str r2, [r0] /* clear loop...*/ >>>> add r0, r0, #4 >>>> cmp r0, r1 >>>> bne clbss_l >>> >>> Into something like >>> >>>> clbss_l:cmp r0, r1 >>>> blo clbss_d >>>> str r2, [r0] /* clear loop...*/ >>>> add r0, r0, #4 >>>> b clbss_l >>>> clbss_d: >>> >>> Also, as Andreas points out, make sure the same fix is applied to all ARM start.S files which need it. >> >> Ok, > > I think this is the thread we will proceed. > So as I understand we had missed in 2011 to update the other start.S > with a fix found by Christian Riesch for arm926ejs. So please do update > _all_ start.S (of arm;) now. I think they do have all the same error > cause we copied it over from one to the other when implementing the 'new > relocation' stuff. Agree, I will do it now. Thanks, hongbo > > Best regards > > Andreas Bießmann > >
Patch
diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S index 339c5ed..bb4d00b 100644 --- a/arch/arm/cpu/arm926ejs/start.S +++ b/arch/arm/cpu/arm926ejs/start.S @@ -301,10 +301,12 @@ clear_bss: #endif mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: >> clbss_l:str r2, [r0] /* clear loop...*/