--- zzzz-none-000/linux-2.6.13.1/arch/mips/mips-boards/generic/cmdline.c 2005-09-10 02:42:58.000000000 +0000 +++ ohio-7170-487/linux-2.6.13.1/arch/mips/mips-boards/generic/cmdline.c 2006-11-09 09:11:12.000000000 +0000 @@ -17,10 +17,14 @@ * * Kernel command line creation using the prom monitor (YAMON) argc/argv. */ +#include +#include #include #include #include +#include +/*--- #define prom_printf printk ---*/ extern int prom_argc; extern int *_prom_argv; @@ -31,7 +35,7 @@ */ #define prom_argv(index) ((char *)(long)_prom_argv[(index)]) -char * __init prom_getcmdline(void) +char * prom_getcmdline(void) { return &(arcs_cmdline[0]); } @@ -41,19 +45,48 @@ { char *cp; int actr; + unsigned int test = 0; +#if defined(CONFIG_MIPS_OHIO) || defined(CONFIG_MIPS_AR7) || defined(CONFIG_MIPS_UR8) + unsigned int root_found = 0; +#endif /*--- #if defined(CONFIG_MIPS_OHIO) || defined(CONFIG_MIPS_AR7) || defined(CONFIG_MIPS_UR8) ---*/ + /*--- prom_printf("[prom_init_cmdline] 1\n"); ---*/ actr = 1; /* Always ignore argv[0] */ cp = &(arcs_cmdline[0]); + /*--- prom_printf("[prom_init_cmdline] 2 prom_argc=%u\n"); ---*/ while(actr < prom_argc) { - strcpy(cp, prom_argv(actr)); + if(prom_argv(actr) == NULL) + break; +#if defined(CONFIG_MIPS_OHIO) || defined(CONFIG_MIPS_AR7) || defined(CONFIG_MIPS_UR8) + if(strstr(prom_argv(actr), "root=")) + root_found = 1; +#endif /*--- #if defined(CONFIG_MIPS_OHIO) || defined(CONFIG_MIPS_AR7) || defined(CONFIG_MIPS_UR8) ---*/ + test++; + /*--- prom_printf("[prom_init_cmdline] 2.%u next: strcpy(cp=0x%x, prom_argv=0x%x)\n", test, cp, prom_argv(actr)); ---*/ + strcpy(cp, prom_argv(actr)); + /*--- prom_printf("[prom_init_cmdline] 3.%u\n", test); ---*/ + /*--- prom_printf("[prom_init_cmdline] 4.%u cp=%s\n", test, cp); ---*/ cp += strlen(prom_argv(actr)); *cp++ = ' '; actr++; + /*--- prom_printf("[prom_init_cmdline] 5.%u\n", test); ---*/ } +#if defined(CONFIG_MIPS_OHIO) || defined(CONFIG_MIPS_AR7) || defined(CONFIG_MIPS_UR8) + if(root_found == 0) { + strcpy(cp, "root=/dev/mtdblock3"); + *cp++ = ' '; + actr++; + /*--- prom_printf("[prom_init_cmdline] root added\n"); ---*/ + } +#endif /*--- #if defined(CONFIG_MIPS_OHIO) || defined(CONFIG_MIPS_AR7) || defined(CONFIG_MIPS_UR8) ---*/ + /*--- prom_printf("[prom_init_cmdline] 4\n"); ---*/ if (cp != &(arcs_cmdline[0])) { /* get rid of trailing space */ --cp; *cp = '\0'; } + /*--- prom_printf("[prom_init_cmdline] 5\n"); ---*/ } + +EXPORT_SYMBOL(prom_getcmdline);