diff --git a/sys/mips/rmi/xlr_machdep.c b/sys/mips/rmi/xlr_machdep.c index 41ec9d0fee98..072d84513338 100644 --- a/sys/mips/rmi/xlr_machdep.c +++ b/sys/mips/rmi/xlr_machdep.c @@ -89,7 +89,7 @@ struct boot1_info xlr_boot1_info; struct xlr_loader_info xlr_loader_info; /* FIXME : Unused */ int xlr_run_mode; int xlr_argc; -char **xlr_argv, **xlr_envp; +int32_t *xlr_argv, *xlr_envp; uint64_t cpu_mask_info; uint32_t xlr_online_cpumask; uint32_t xlr_core_cpu_mask = 0x1; /* Core 0 thread 0 is always there */ @@ -298,8 +298,11 @@ platform_start(__register_t a0 __unused, xlr_online_cpumask = read_c0_register32(MIPS_COP_0_OSSCRATCH, 2); xlr_run_mode = read_c0_register32(MIPS_COP_0_OSSCRATCH, 3); xlr_argc = read_c0_register32(MIPS_COP_0_OSSCRATCH, 4); - xlr_argv = (char **)(intptr_t)(int)read_c0_register32(MIPS_COP_0_OSSCRATCH, 5); - xlr_envp = (char **)(intptr_t)(int)read_c0_register32(MIPS_COP_0_OSSCRATCH, 6); + /* + * argv and envp are passed in array of 32bit pointers + */ + xlr_argv = (int32_t *)(intptr_t)(int)read_c0_register32(MIPS_COP_0_OSSCRATCH, 5); + xlr_envp = (int32_t *)(intptr_t)(int)read_c0_register32(MIPS_COP_0_OSSCRATCH, 6); /* TODO: Verify the magic number here */ /* FIXMELATER: xlr_boot1_info.magic_number */ @@ -331,14 +334,15 @@ platform_start(__register_t a0 __unused, if (xlr_argc == 1) printf("\tNone\n"); for (i = 1; i < xlr_argc; i++) { - char *n; + char *n, *arg; - printf("\t%s\n", xlr_argv[i]); - n = strsep(&xlr_argv[i], "="); - if (xlr_argv[i] == NULL) + arg = (char *)(intptr_t)xlr_argv[i]; + printf("\t%s\n", arg); + n = strsep(&arg, "="); + if (arg == NULL) setenv(n, "1"); else - setenv(n, xlr_argv[i]); + setenv(n, arg); } xlr_set_boot_flags();