Patchwork [U-Boot] armv7: Fix to mistake clean the memory space

login
register
mail settings
Submitter seedshope
Date July 6, 2012, 12:20 p.m.
Message ID <1341577211-5563-1-git-send-email-bocui107@gmail.com>
Download mbox | patch
Permalink /patch/169466/
State Superseded
Delegated to: Albert ARIBAUD
Headers show

Comments

seedshope - July 6, 2012, 12:20 p.m.
From: Zhong Hongbo <bocui107@gmail.com>

In currently, when __bss_start is equal to __bss_end__,
The bss loop will clear all the things in memory space.

But just only when __bss_end__ greater than __bss_start__,
we do the clear bss section operation.

Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
---
 arch/arm/cpu/arm1136/start.S   |    8 +++++---
 arch/arm/cpu/arm1176/start.S   |    8 +++++---
 arch/arm/cpu/arm720t/start.S   |    8 +++++---
 arch/arm/cpu/arm920t/start.S   |    8 +++++---
 arch/arm/cpu/arm925t/start.S   |    8 +++++---
 arch/arm/cpu/arm946es/start.S  |    8 +++++---
 arch/arm/cpu/arm_intcm/start.S |    8 +++++---
 arch/arm/cpu/armv7/start.S     |    8 +++++---
 arch/arm/cpu/ixp/start.S       |    8 +++++---
 arch/arm/cpu/lh7a40x/start.S   |    8 +++++---
 arch/arm/cpu/pxa/start.S       |    8 +++++---
 arch/arm/cpu/s3c44b0/start.S   |    8 +++++---
 arch/arm/cpu/sa1100/start.S    |    8 +++++---
 13 files changed, 65 insertions(+), 39 deletions(-)
Andreas Bießmann - July 6, 2012, 1:23 p.m.
On 06.07.2012 14:20, Zhong Hongbo wrote:
> From: Zhong Hongbo <bocui107@gmail.com>
> 
> In currently, when __bss_start is equal to __bss_end__,
> The bss loop will clear all the things in memory space.
> 
> But just only when __bss_end__ greater than __bss_start__,
> we do the clear bss section operation.
> 
> Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>

well this is wrong, I would maybe ack it.

> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---

Some more formal things ...

This is the third version of this type of patch. Therefore it should
have a version history here and some version information in the subject
([PATCH v3] maybe). Please read http://www.denx.de/wiki/view/U-Boot/Patches
especially
http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versions

BTW: The content looks sane.

Best regards

Andreas Bießmann
seedshope - July 6, 2012, 1:50 p.m.
On 07/06/2012 09:23 PM, Andreas Bießmann wrote:
> On 06.07.2012 14:20, Zhong Hongbo wrote:
>> From: Zhong Hongbo <bocui107@gmail.com>
>>
>> In currently, when __bss_start is equal to __bss_end__,
>> The bss loop will clear all the things in memory space.
>>
>> But just only when __bss_end__ greater than __bss_start__,
>> we do the clear bss section operation.
>>
>> Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
> 
> well this is wrong, I would maybe ack it

Ok
> 
>> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
>> ---
> 
> Some more formal things ...
> 
> This is the third version of this type of patch. Therefore it should
> have a version history here and some version information in the subject
> ([PATCH v3] maybe). Please read http://www.denx.de/wiki/view/U-Boot/Patches
> especially
> http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versions
> 

Thanks, I just see the format of patch. I will add the version
information to the next review.

> BTW: The content looks sane.
> 

I will send v3 for this.

Thanks,
hongbo
> Best regards
> 
> Andreas Bießmann
> 
>
Andreas Bießmann - July 6, 2012, 1:57 p.m.
Dear Zhong Hongbo,

On 06.07.2012 15:50, Zhong Hongbo wrote:
> On 07/06/2012 09:23 PM, Andreas Bießmann wrote:
>> On 06.07.2012 14:20, Zhong Hongbo wrote:
>>> From: Zhong Hongbo <bocui107@gmail.com>
>>>
>>> In currently, when __bss_start is equal to __bss_end__,
>>> The bss loop will clear all the things in memory space.
>>>
>>> But just only when __bss_end__ greater than __bss_start__,
>>> we do the clear bss section operation.
>>>
>>> Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
>>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
>>
>> well this is wrong, I would maybe ack it
> 
> Ok

After sending I doubt my statement was correct, but I found a source
http://www.denx.de/wiki/view/U-Boot/Patches#Review_Process_Git_Tags

>>
>>> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
>>> ---
>>
>> Some more formal things ...
>>
>> This is the third version of this type of patch. Therefore it should
>> have a version history here and some version information in the subject
>> ([PATCH v3] maybe). Please read http://www.denx.de/wiki/view/U-Boot/Patches
>> especially
>> http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versions
>>
> 
> Thanks, I just see the format of patch. I will add the version
> information to the next review.
> 
>> BTW: The content looks sane.
>>
> 
> I will send v3 for this.

a last formal thing to mention: The subject should (now) say 'arm: ...'
not 'armv7: ...'.

Best regards

Andreas Bießmann
seedshope - July 6, 2012, 2:04 p.m.
On 07/06/2012 09:57 PM, Andreas Bießmann wrote:
> Dear Zhong Hongbo,
> 
> On 06.07.2012 15:50, Zhong Hongbo wrote:
>> On 07/06/2012 09:23 PM, Andreas Bießmann wrote:
>>> On 06.07.2012 14:20, Zhong Hongbo wrote:
>>>> From: Zhong Hongbo <bocui107@gmail.com>
>>>>
>>>> In currently, when __bss_start is equal to __bss_end__,
>>>> The bss loop will clear all the things in memory space.
>>>>
>>>> But just only when __bss_end__ greater than __bss_start__,
>>>> we do the clear bss section operation.
>>>>
>>>> Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
>>>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
>>>
>>> well this is wrong, I would maybe ack it
>>
>> Ok
> 
> After sending I doubt my statement was correct, but I found a source
> http://www.denx.de/wiki/view/U-Boot/Patches#Review_Process_Git_Tags

he, Ye, I think we(You, Albert and me) are involved in the development
of the patch.
> 
>>>
>>>> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
>>>> ---
>>>
>>> Some more formal things ...
>>>
>>> This is the third version of this type of patch. Therefore it should
>>> have a version history here and some version information in the subject
>>> ([PATCH v3] maybe). Please read http://www.denx.de/wiki/view/U-Boot/Patches
>>> especially
>>> http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versions
>>>
>>
>> Thanks, I just see the format of patch. I will add the version
>> information to the next review.
>>
>>> BTW: The content looks sane.
>>>
>>
>> I will send v3 for this.
> 
> a last formal thing to mention: The subject should (now) say 'arm: ...'
> not 'armv7: ...'.

Ok.

Thanks,
hongbo
> 
> Best regards
> 
> Andreas Bießmann
> 
>
Albert ARIBAUD - July 6, 2012, 3:26 p.m.
Hi Zhong Hongbo,

On Fri, 06 Jul 2012 22:04:21 +0800, Zhong Hongbo <bocui107@gmail.com>
wrote:
> On 07/06/2012 09:57 PM, Andreas Bießmann wrote:
> > Dear Zhong Hongbo,
> > 
> > On 06.07.2012 15:50, Zhong Hongbo wrote:
> >> On 07/06/2012 09:23 PM, Andreas Bießmann wrote:
> >>> On 06.07.2012 14:20, Zhong Hongbo wrote:
> >>>> From: Zhong Hongbo <bocui107@gmail.com>
> >>>>
> >>>> In currently, when __bss_start is equal to __bss_end__,
> >>>> The bss loop will clear all the things in memory space.
> >>>>
> >>>> But just only when __bss_end__ greater than __bss_start__,
> >>>> we do the clear bss section operation.
> >>>>
> >>>> Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
> >>>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
> >>>
> >>> well this is wrong, I would maybe ack it
> >>
> >> Ok
> > 
> > After sending I doubt my statement was correct, but I found a source
> > http://www.denx.de/wiki/view/U-Boot/Patches#Review_Process_Git_Tags
> 
> he, Ye, I think we(You, Albert and me) are involved in the development
> of the patch.

It could be said of any reviewer that they are "involved in the
development of the patch", yet not all reviewers's Signed-off-by is
added to evey patch they review. There is a Reviewed-by tag for
reviewers.

I personally do not consider it would make sense to have my
Signed-off-by on this patch.

Amicalement,
seedshope - July 6, 2012, 3:29 p.m.
On 07/06/2012 11:26 PM, Albert ARIBAUD wrote:
> Hi Zhong Hongbo,
> 
> On Fri, 06 Jul 2012 22:04:21 +0800, Zhong Hongbo <bocui107@gmail.com>
> wrote:
>> On 07/06/2012 09:57 PM, Andreas Bießmann wrote:
>>> Dear Zhong Hongbo,
>>>
>>> On 06.07.2012 15:50, Zhong Hongbo wrote:
>>>> On 07/06/2012 09:23 PM, Andreas Bießmann wrote:
>>>>> On 06.07.2012 14:20, Zhong Hongbo wrote:
>>>>>> From: Zhong Hongbo <bocui107@gmail.com>
>>>>>>
>>>>>> In currently, when __bss_start is equal to __bss_end__,
>>>>>> The bss loop will clear all the things in memory space.
>>>>>>
>>>>>> But just only when __bss_end__ greater than __bss_start__,
>>>>>> we do the clear bss section operation.
>>>>>>
>>>>>> Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
>>>>>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
>>>>>
>>>>> well this is wrong, I would maybe ack it
>>>>
>>>> Ok
>>>
>>> After sending I doubt my statement was correct, but I found a source
>>> http://www.denx.de/wiki/view/U-Boot/Patches#Review_Process_Git_Tags
>>
>> he, Ye, I think we(You, Albert and me) are involved in the development
>> of the patch.
> 
> It could be said of any reviewer that they are "involved in the
> development of the patch", yet not all reviewers's Signed-off-by is
> added to evey patch they review. There is a Reviewed-by tag for
> reviewers.
> 
> I personally do not consider it would make sense to have my
> Signed-off-by on this patch.

Ok, I am doing the patch.

Thanks,
hongbo
> 
> Amicalement,
>
Andreas Bießmann - July 7, 2012, 7:29 a.m.
Dear Zhong Hongbo,

Am Freitag, 6. Juli 2012 schrieb Zhong Hongbo :

    On 07/06/2012 09:57 PM, Andreas Bießmann wrote:
    > Dear Zhong Hongbo,
    >
    > On 06.07.2012 15:50, Zhong Hongbo wrote:
    >> On 07/06/2012 09:23 PM, Andreas Bießmann wrote:
    >>> On 06.07.2012 14:20, Zhong Hongbo wrote:
    >>>> From: Zhong Hongbo <bocui107@gmail.com <javascript:;>>
    >>>>
    >>>> In currently, when __bss_start is equal to __bss_end__,
    >>>> The bss loop will clear all the things in memory space.
    >>>>
    >>>> But just only when __bss_end__ greater than __bss_start__,
    >>>> we do the clear bss section operation.
    >>>>
    >>>> Signed-off-by: Hongbo Zhong <bocui107@gmail.com <javascript:;>>
    >>>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com
    <javascript:;>>
    >>>
    >>> well this is wrong, I would maybe ack it
    Hi Andreas,

    How I do it? Signed-off-by or Reviewed-by?


you do not need to put these lines in at all, the reviewer will reply
your mail with the correct line (Acked-by, Reviewed-by, Tested-by) in
it. A tool called patchwork will then provide some convenience for the
custodians. He just pulls the mbox file from patchwork which has all the
collected lines in it. The resulting commit in the custodian repository
will contain all these linesgathered while in review process.
You ought to put some other people on cc so they can review the patch.
This can easily achieved by putting a 'cc: <some email>' into the patch.
Git will then put these addresses on cc automagicly.

Best regards

Andreas Bießmann
seedshope - July 7, 2012, 9:47 a.m.
On 07/07/2012 03:29 PM, Andreas Bießmann wrote:
> Dear Zhong Hongbo,
> 
> Am Freitag, 6. Juli 2012 schrieb Zhong Hongbo :
> 
>     On 07/06/2012 09:57 PM, Andreas Bießmann wrote:
>     > Dear Zhong Hongbo,
>     >
>     > On 06.07.2012 15:50, Zhong Hongbo wrote:
>     >> On 07/06/2012 09:23 PM, Andreas Bießmann wrote:
>     >>> On 06.07.2012 14:20, Zhong Hongbo wrote:
>     >>>> From: Zhong Hongbo <bocui107@gmail.com <javascript:;>>
>     >>>>
>     >>>> In currently, when __bss_start is equal to __bss_end__,
>     >>>> The bss loop will clear all the things in memory space.
>     >>>>
>     >>>> But just only when __bss_end__ greater than __bss_start__,
>     >>>> we do the clear bss section operation.
>     >>>>
>     >>>> Signed-off-by: Hongbo Zhong <bocui107@gmail.com <javascript:;>>
>     >>>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com
>     <javascript:;>>
>     >>>
>     >>> well this is wrong, I would maybe ack it
>     Hi Andreas,
> 
>     How I do it? Signed-off-by or Reviewed-by?
> 
> 
> you do not need to put these lines in at all, the reviewer will reply
> your mail with the correct line (Acked-by, Reviewed-by, Tested-by) in
> it. A tool called patchwork will then provide some convenience for the
> custodians. He just pulls the mbox file from patchwork which has all the
> collected lines in it. The resulting commit in the custodian repository
> will contain all these linesgathered while in review process.
> You ought to put some other people on cc so they can review the patch.
> This can easily achieved by putting a 'cc: <some email>' into the patch.
> Git will then put these addresses on cc automagicly.
Ok,

Thanks,
hongbo
> 
> Best regards
> 
> Andreas Bießmann
> 
>

Patch

diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S
index c0db96c..2483c63 100644
--- a/arch/arm/cpu/arm1136/start.S
+++ b/arch/arm/cpu/arm1136/start.S
@@ -251,10 +251,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 #endif	/* #ifndef CONFIG_SPL_BUILD */
 
 /*
diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S
index 848144a..7b5cf19 100644
--- a/arch/arm/cpu/arm1176/start.S
+++ b/arch/arm/cpu/arm1176/start.S
@@ -351,10 +351,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 
 #ifndef CONFIG_NAND_SPL
 	bl coloured_LED_init
diff --git a/arch/arm/cpu/arm720t/start.S b/arch/arm/cpu/arm720t/start.S
index 540e3c2..3b97e80 100644
--- a/arch/arm/cpu/arm720t/start.S
+++ b/arch/arm/cpu/arm720t/start.S
@@ -228,10 +228,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 
 	bl coloured_LED_init
 	bl red_led_on
diff --git a/arch/arm/cpu/arm920t/start.S b/arch/arm/cpu/arm920t/start.S
index 8c5612c..9b8604e 100644
--- a/arch/arm/cpu/arm920t/start.S
+++ b/arch/arm/cpu/arm920t/start.S
@@ -271,10 +271,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 
 	bl coloured_LED_init
 	bl red_led_on
diff --git a/arch/arm/cpu/arm925t/start.S b/arch/arm/cpu/arm925t/start.S
index dbb93ef..1a54416 100644
--- a/arch/arm/cpu/arm925t/start.S
+++ b/arch/arm/cpu/arm925t/start.S
@@ -265,10 +265,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 
 	bl coloured_LED_init
 	bl red_led_on
diff --git a/arch/arm/cpu/arm946es/start.S b/arch/arm/cpu/arm946es/start.S
index 89ba558..b4d1d2d 100644
--- a/arch/arm/cpu/arm946es/start.S
+++ b/arch/arm/cpu/arm946es/start.S
@@ -236,10 +236,12 @@  clear_bss:
 	add	r1, r1, r4
 	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
-	blo	clbss_l
+	b	clbss_l
+clbss_e:
 #endif
 
 /*
diff --git a/arch/arm/cpu/arm_intcm/start.S b/arch/arm/cpu/arm_intcm/start.S
index 2033b36..b85e7d4 100644
--- a/arch/arm/cpu/arm_intcm/start.S
+++ b/arch/arm/cpu/arm_intcm/start.S
@@ -232,10 +232,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 
 	bl coloured_LED_init
 	bl red_led_on
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 22a3ced..aee27fd 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -259,10 +259,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:
 
 /*
  * We are done. Do not return, instead branch to second part of board
diff --git a/arch/arm/cpu/ixp/start.S b/arch/arm/cpu/ixp/start.S
index cb32121..59c359a 100644
--- a/arch/arm/cpu/ixp/start.S
+++ b/arch/arm/cpu/ixp/start.S
@@ -334,10 +334,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 
 	bl coloured_LED_init
 	bl red_led_on
diff --git a/arch/arm/cpu/lh7a40x/start.S b/arch/arm/cpu/lh7a40x/start.S
index 62de8b8..bd68cd4 100644
--- a/arch/arm/cpu/lh7a40x/start.S
+++ b/arch/arm/cpu/lh7a40x/start.S
@@ -245,10 +245,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 #endif
 
 /*
diff --git a/arch/arm/cpu/pxa/start.S b/arch/arm/cpu/pxa/start.S
index ba0de8f..33c73f6 100644
--- a/arch/arm/cpu/pxa/start.S
+++ b/arch/arm/cpu/pxa/start.S
@@ -258,10 +258,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 #endif	/* #ifndef CONFIG_SPL_BUILD */
 
 /*
diff --git a/arch/arm/cpu/s3c44b0/start.S b/arch/arm/cpu/s3c44b0/start.S
index a29d5b4..8daf26c 100644
--- a/arch/arm/cpu/s3c44b0/start.S
+++ b/arch/arm/cpu/s3c44b0/start.S
@@ -217,10 +217,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 
 	bl coloured_LED_init
 	bl red_led_on
diff --git a/arch/arm/cpu/sa1100/start.S b/arch/arm/cpu/sa1100/start.S
index 92546d8..bcea2a8 100644
--- a/arch/arm/cpu/sa1100/start.S
+++ b/arch/arm/cpu/sa1100/start.S
@@ -221,10 +221,12 @@  clear_bss:
 	add	r1, r1, r4
 	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:
 #endif
 
 /*