From d06bfff7c9f22b7046525d351493c8cf45f03f26 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Thu, 16 Aug 2012 15:53:35 +0200 Subject: [PATCH] --- yaml --- r: 331455 b: refs/heads/master c: fcc1c0ff2506cab8c3a019374550f68b3cbadcbe h: refs/heads/master i: 331453: 66a63af4989e0593f661c11fe30cdcb2c7503a01 331451: e68026eff990c77f5cd0a4affc78269193a9e9a9 331447: da4ed3e9e4c241bec2d172aab2e44481b241b9db 331439: 6a6466296401400d66718320682b3ecabd82892d 331423: fc1cbef536ef8e0fb4f774f8e71319335abc86f4 331391: 4dafa5449856a73d921a21aa062e76e2bc83c517 v: v3 --- [refs] | 2 +- trunk/arch/microblaze/kernel/head.S | 14 +++++++++----- trunk/arch/microblaze/kernel/setup.c | 13 ++++++------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index 28c29f690ff1..053032ef9265 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c7e9a211e22782af5857d265a83abf55619f19ea +refs/heads/master: fcc1c0ff2506cab8c3a019374550f68b3cbadcbe diff --git a/trunk/arch/microblaze/kernel/head.S b/trunk/arch/microblaze/kernel/head.S index 98b17f9f904b..eef84de5e8c8 100644 --- a/trunk/arch/microblaze/kernel/head.S +++ b/trunk/arch/microblaze/kernel/head.S @@ -109,20 +109,24 @@ no_fdt_arg: #ifndef CONFIG_CMDLINE_BOOL /* * handling command line - * copy command line to __init_end. There is space for storing command line. + * copy command line directly to cmd_line placed in data section. */ + beqid r5, skip /* Skip if NULL pointer */ or r6, r0, r0 /* incremment */ - ori r4, r0, __init_end /* load address of command line */ + ori r4, r0, cmd_line /* load address of command line */ tophys(r4,r4) /* convert to phys address */ ori r3, r0, COMMAND_LINE_SIZE - 1 /* number of loops */ _copy_command_line: - lbu r2, r5, r6 /* r2=r5+r6 - r5 contain pointer to command line */ - sb r2, r4, r6 /* addr[r4+r6]= r2*/ + /* r2=r5+r6 - r5 contain pointer to command line */ + lbu r2, r5, r6 + beqid r2, skip /* Skip if no data */ + sb r2, r4, r6 /* addr[r4+r6]= r2*/ addik r6, r6, 1 /* increment counting */ bgtid r3, _copy_command_line /* loop for all entries */ - addik r3, r3, -1 /* descrement loop */ + addik r3, r3, -1 /* decrement loop */ addik r5, r4, 0 /* add new space for command line */ tovirt(r5,r5) +skip: #endif /* CONFIG_CMDLINE_BOOL */ #ifdef NOT_COMPILE diff --git a/trunk/arch/microblaze/kernel/setup.c b/trunk/arch/microblaze/kernel/setup.c index 4da971d4392f..9dbc9ecb28f1 100644 --- a/trunk/arch/microblaze/kernel/setup.c +++ b/trunk/arch/microblaze/kernel/setup.c @@ -40,7 +40,12 @@ DEFINE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */ DEFINE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */ unsigned int boot_cpuid; -char cmd_line[COMMAND_LINE_SIZE]; +/* + * Placed cmd_line to .data section because can be initialized from + * ASM code. Default position is BSS section which is cleared + * in machine_early_init(). + */ +char cmd_line[COMMAND_LINE_SIZE] __attribute__ ((section(".data"))); void __init setup_arch(char **cmdline_p) { @@ -130,12 +135,6 @@ void __init machine_early_init(const char *cmdline, unsigned int ram, memset(__bss_start, 0, __bss_stop-__bss_start); memset(_ssbss, 0, _esbss-_ssbss); - /* Copy command line passed from bootloader */ -#ifndef CONFIG_CMDLINE_BOOL - if (cmdline && cmdline[0] != '\0') - strlcpy(cmd_line, cmdline, COMMAND_LINE_SIZE); -#endif - lockdep_init(); /* initialize device tree for usage in early_printk */