-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 07/05/2012 11:10 PM, Tetsuyuki Kobayashi wrote: > save_boot_params_default() in cpu.c accesses uninitialized stack > area when it compiled with -O0 (not optimized). > > Signed-off-by: Tetsuyuki Kobayashi <k...@kmckk.co.jp> --- Hi Tom, > Albert, > > I rewrite them in asm language and put it to start.S. No warning > now. I tested it quickly on my kzm9g board. > > Changes for v2: - include <linux/compiler.h> and use __naked > instead of __attribute__((naked)) > > Changes for v3: - move __naked after void - reformat comments > > Changes for v4: - v3 causes following warnings cpu.c: In function > 'save_boot_params_default': cpu.c:48:1: warning: -fstack-usage not > supported for this target [enabled by default] - move > save_boot_params_default() and save_boot_params() from cpu.c to > start.S and write them in asm language > > arch/arm/cpu/armv7/cpu.c | 7 ------- > arch/arm/cpu/armv7/start.S | 15 +++++++++++++++ 2 files changed, > 15 insertions(+), 7 deletions(-) > > diff --git a/arch/arm/cpu/armv7/cpu.c b/arch/arm/cpu/armv7/cpu.c > index c6fa8ef..b0677f4 100644 --- a/arch/arm/cpu/armv7/cpu.c +++ > b/arch/arm/cpu/armv7/cpu.c @@ -37,13 +37,6 @@ #include > <asm/cache.h> #include <asm/armv7.h> > > -void save_boot_params_default(u32 r0, u32 r1, u32 r2, u32 r3) -{ > -} - -void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) - > __attribute__((weak, alias("save_boot_params_default"))); - int > cleanup_before_linux(void) { /* diff --git > a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S index > 261835b..4feade5 100644 --- a/arch/arm/cpu/armv7/start.S +++ > b/arch/arm/cpu/armv7/start.S @@ -350,6 +350,21 @@ > ENTRY(cpu_init_crit) ENDPROC(cpu_init_crit) #endif > > +/************************************************************************* > > > + * > + * void save_boot_params_default(u32 r0, u32 r1, u32 r2, u32 r3) > + * + * Stack pointer is not yet initialized + * Don't save > anything to stack even if compiled with -O0 + * + > *************************************************************************/ > > > +ENTRY(save_boot_params_default) > + bx lr @ back to my caller > +ENDPROC(save_boot_params_default) + > + .weak save_boot_params + .set save_boot_params, > save_boot_params_default + #ifndef CONFIG_SPL_BUILD /* > *************************************************************************
We > > shouldn't, I believe, need to call this save_boot_params_default and then alias it. We should be able to just call it save_boot_params and declare it weak, then omap3 for example will override a link time (this should be easily verifiable with objdump). Thanks! - -- Tom -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJP9u9rAAoJENk4IS6UOR1W0oAQAJnM2ENHS3yhv3i+bUTJpXjI sFPiQAd9t/QzDpCr7/xm05+mTciRUmzJ9tIF/XUQbVZPJZvxnfit43EVxaNuyQyZ RC6Le9RBHzSFXmx2EwCUrNzog7Q3oOjAS6GVa2UaGsLf2lTcJrhomYNtk30cSwUw sSQobL/jr5668Obuf1WQxEbextTt6JLTeWqCfsEBesg1eENqkskWQHg6zA8HD85i RLYux9VEhZ/PaunH5K1RNOG3SzXZzhbxTwl4EpQ+6V8ocGqRG2tghWW/o5oG2Mjv /i65FD0RbQhzqjX4z2far4PYBvVs+LIwPIUKZmP7A3QDrzoapCC7bk2nRBsfLPMX xN3NeU13KsBre+7IFvMYvCCrZYSSMYRqAjNFxZwEJMeH7p3zGcDPGdAKaqCEDCJU chNzcfhFiYezGGT4x7Sk5Apw7dj7kReC4mcuXAr9KHDV0tZy78nqqOa8wgxKgsz1 S4fiiDRwIHY+U/KgLW8ayv8VzSnDLTN6GJ23MWQiv1BXHdq77F2vDpytepR9m6BU JT3Dtesdh5GmA0PSaRq9Wfh0TzTPkYJd91XD8JXulCpRJmxa70O5dVrE6mXWDyAQ 98esMJxyyOEFCcsRb7U2/NsRHLbuLjAKdF3nyzGaBp1qhvY/d5zsYwgNfIx3dpWk SZohRX5nOA0Y+ZcphGih =51Xu -----END PGP SIGNATURE----- _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot