svn commit: r210126 - head/sys/mips/rmi
Jayachandran C.
jchandra at FreeBSD.org
Thu Jul 15 16:39:17 UTC 2010
Author: jchandra
Date: Thu Jul 15 16:39:17 2010
New Revision: 210126
URL: http://svn.freebsd.org/changeset/base/210126
Log:
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.
Modified:
head/sys/mips/rmi/xlr_machdep.c
Modified: head/sys/mips/rmi/xlr_machdep.c
==============================================================================
--- head/sys/mips/rmi/xlr_machdep.c Thu Jul 15 16:32:59 2010 (r210125)
+++ head/sys/mips/rmi/xlr_machdep.c Thu Jul 15 16:39:17 2010 (r210126)
@@ -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();
More information about the svn-src-all
mailing list