Fix for 64 bit compilation.
RMI bootloader passes argv[] and envp[] as an array of 32 bit pointers. Convert the pointers to correct pointer type before use.
This commit is contained in:
parent
d47335eec9
commit
068c7ecd98
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user