diff mbox series

MIPS: zboot: Avoid endless loop in clear BSS.

Message ID 1609894059-6112-1-git-send-email-hejinyang@loongson.cn (mailing list archive)
State Accepted
Commit fdd85e04df3fdd55bb7f32786890fdfb200c40f0
Headers show
Series MIPS: zboot: Avoid endless loop in clear BSS. | expand

Commit Message

Jinyang He Jan. 6, 2021, 12:47 a.m. UTC
Commit 2ee1503e546f ("MIPS: zboot: head.S clean up").

After .noreorder removed, clear BSS fall into endless loop. The bne
instruction will add nop to the delay slot at compile time. So a0
register will not increment by 4. Fix it and clear BSS from _edata
to (_end - 1).

Signed-off-by: Jinyang He <hejinyang@loongson.cn>
---
 arch/mips/boot/compressed/head.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jiaxun Yang Jan. 6, 2021, 2:04 a.m. UTC | #1
On Wed, Jan 6, 2021, at 8:47 AM, Jinyang He wrote:
> Commit 2ee1503e546f ("MIPS: zboot: head.S clean up").
> 
> After .noreorder removed, clear BSS fall into endless loop. The bne
> instruction will add nop to the delay slot at compile time. So a0
> register will not increment by 4. Fix it and clear BSS from _edata
> to (_end - 1).

Oops, my fault.
My QEMU based local test setup somehow never really tested zboot.

Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>

Thanks!

- Jiaxun

> 
> Signed-off-by: Jinyang He <hejinyang@loongson.cn>
> ---
>  arch/mips/boot/compressed/head.S | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/mips/boot/compressed/head.S b/arch/mips/boot/compressed/head.S
> index 070b2fb..5795d0a 100644
> --- a/arch/mips/boot/compressed/head.S
> +++ b/arch/mips/boot/compressed/head.S
> @@ -26,8 +26,8 @@
>  	PTR_LA	a0, _edata
>  	PTR_LA	a2, _end
>  1:	sw	zero, 0(a0)
> +	addiu	a0, a0, 4
>  	bne	a2, a0, 1b
> -	 addiu	a0, a0, 4
>  
>  	PTR_LA	a0, (.heap)	     /* heap address */
>  	PTR_LA	sp, (.stack + 8192)  /* stack address */
> -- 
> 2.1.0
> 
>
Thomas Bogendoerfer Jan. 7, 2021, 4:28 p.m. UTC | #2
On Wed, Jan 06, 2021 at 08:47:39AM +0800, Jinyang He wrote:
> Commit 2ee1503e546f ("MIPS: zboot: head.S clean up").
> 
> After .noreorder removed, clear BSS fall into endless loop. The bne
> instruction will add nop to the delay slot at compile time. So a0
> register will not increment by 4. Fix it and clear BSS from _edata
> to (_end - 1).
> 
> Signed-off-by: Jinyang He <hejinyang@loongson.cn>
> ---
>  arch/mips/boot/compressed/head.S | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

applied to mips-next.

Thomas.
diff mbox series

Patch

diff --git a/arch/mips/boot/compressed/head.S b/arch/mips/boot/compressed/head.S
index 070b2fb..5795d0a 100644
--- a/arch/mips/boot/compressed/head.S
+++ b/arch/mips/boot/compressed/head.S
@@ -26,8 +26,8 @@ 
 	PTR_LA	a0, _edata
 	PTR_LA	a2, _end
 1:	sw	zero, 0(a0)
+	addiu	a0, a0, 4
 	bne	a2, a0, 1b
-	 addiu	a0, a0, 4
 
 	PTR_LA	a0, (.heap)	     /* heap address */
 	PTR_LA	sp, (.stack + 8192)  /* stack address */