common: remove unaligned access error in bootmenu_getoption()
authorLan Yixun (dlan) <dennis.yxun@gmail.com>
Thu, 27 Jun 2013 10:58:53 +0000 (18:58 +0800)
committerTom Rini <trini@ti.com>
Mon, 15 Jul 2013 21:06:13 +0000 (17:06 -0400)
Some ARM compilers may emit code that makes unaligned accesses when
faced with constructs such as:

    char name[12] = "bootmenu_";

same fix as commit: 064d55f8bc8d7d205ed0be6abb6717e92eeb7cad

=========================================================
data abort

    MAYBE you should read doc/README.arm-unaligned-accesses

pc : [<3ff4b60c>]          lr : [<3ff4b7b0>]
sp : 3f346a58  ip : 3ff9c8e6     fp : 02000060
r10: 00000000  r9 : 3df47fc0     r8 : 3f347f40
r7 : 00000000  r6 : 00000000     r5 : 00000003  r4 : 3f759140
r3 : 000003f0  r2 : 00000000     r1 : 000003f1  r0 : 00000000
Flags: nzCv  IRQs on  FIQs off  Mode SVC_32
Resetting CPU ...
======================================================

Signed-off-by: Lan Yixun (dlan) <dennis.yxun@gmail.com>
common/cmd_bootmenu.c

index a3cbffab24e4017d999752973b8f9a847ca5b8d5..7cb6876f1c894696dc72e2546de4f56640d0b47a 100644 (file)
@@ -64,12 +64,12 @@ enum bootmenu_key {
 
 static char *bootmenu_getoption(unsigned short int n)
 {
-       char name[MAX_ENV_SIZE] = "bootmenu_";
+       char name[MAX_ENV_SIZE];
 
        if (n > MAX_COUNT)
                return NULL;
 
-       sprintf(name + 9, "%d", n);
+       sprintf(name, "bootmenu_%d", n);
        return getenv(name);
 }