Patchwork [U-Boot,v2] powerpc/mpc85xx: The end address of the bss in the SPL should be 4byte alignment

login
register
mail settings
Submitter ying.zhang@freescale.com
Date May 14, 2013, 8:41 a.m.
Message ID <1368520918-22496-1-git-send-email-ying.zhang@freescale.com>
Download mbox | patch
Permalink /patch/243639/
State Rejected
Delegated to: Wolfgang Denk
Headers show

Comments

ying.zhang@freescale.com - May 14, 2013, 8:41 a.m.
From: Ying Zhang <b40530@freescale.com>

There will clear the BSS in the function clear_bss(), the reset address of
the BSS started from the __bss_start, and increased by four-byte increments,
finally stoped depending on the adress is equal to the _bss_end. If the end
address __bss_end is not alignment to 4byte, it will be an infinite loop.

The end address of the bss should be 4byte aligned.

This patch is on top of the patch "powerpc/mpc85xx: support application
without resetvec segment in the linker script".

Signed-off-by: Ying Zhang <b40530@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/u-boot-spl.lds |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Wolfgang Denk - May 14, 2013, 10:30 a.m.
Dear ying.zhang@freescale.com,

In message <1368520918-22496-1-git-send-email-ying.zhang@freescale.com> you wrote:
> From: Ying Zhang <b40530@freescale.com>

You mark this patch as V2 but there is no history of changes.  Please
always include information what exactly was changed.

> There will clear the BSS in the function clear_bss(), the reset address of
> the BSS started from the __bss_start, and increased by four-byte increments,
> finally stoped depending on the adress is equal to the _bss_end. If the end
> address __bss_end is not alignment to 4byte, it will be an infinite loop.
> 
> The end address of the bss should be 4byte aligned.

NAK. This is the wrong way to fix this.

Instead, the test in the loop should be fixed to test for "<=".

>  /*
> - * (C) Copyright 2006
> + * (C) Copyright 2013
>   * Wolfgang Denk, DENX Software Engineering, wd@denx.de

And PLEASE do not mess with _my_ copyrights!!!


Best regards,

Wolfgang Denk
Scott Wood - May 15, 2013, 4:50 p.m.
On 05/14/2013 05:30:05 AM, Wolfgang Denk wrote:
> Dear ying.zhang@freescale.com,
> 
> In message  
> <1368520918-22496-1-git-send-email-ying.zhang@freescale.com> you  
> wrote:
> > From: Ying Zhang <b40530@freescale.com>
> 
> You mark this patch as V2 but there is no history of changes.  Please
> always include information what exactly was changed.
> 
> > There will clear the BSS in the function clear_bss(), the reset  
> address of
> > the BSS started from the __bss_start, and increased by four-byte  
> increments,
> > finally stoped depending on the adress is equal to the _bss_end. If  
> the end
> > address __bss_end is not alignment to 4byte, it will be an infinite  
> loop.
> >
> > The end address of the bss should be 4byte aligned.
> 
> NAK. This is the wrong way to fix this.
> 
> Instead, the test in the loop should be fixed to test for "<=".

I agree that we should use <= in the loop, but 4-byte alignment is also  
needed unless we change it from an stw loop to an stb loop.

-Scott

Patch

diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
index dff2398..154438b 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
@@ -1,5 +1,5 @@ 
 /*
- * (C) Copyright 2006
+ * (C) Copyright 2013
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de
  *
  * Copyright 2009 Freescale Semiconductor, Inc.
@@ -98,5 +98,6 @@  SECTIONS
 		*(.sbss*)
 		*(.bss*)
 	}
+	. = ALIGN(4);
 	__bss_end = .;
 }