summaryrefslogtreecommitdiffstats
path: root/sys/mips
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2010-09-17 01:09:12 +0000
committerthompsa <thompsa@FreeBSD.org>2010-09-17 01:09:12 +0000
commit28dfe1ce48ce3ed12ed5179ad47a0bef5935005f (patch)
treed8f094fb507ef9bc595675ee838f9b580df663e6 /sys/mips
parente42c9c0204797e6d4e21ad8a7593f5e56adb1122 (diff)
downloadFreeBSD-src-28dfe1ce48ce3ed12ed5179ad47a0bef5935005f.zip
FreeBSD-src-28dfe1ce48ce3ed12ed5179ad47a0bef5935005f.tar.gz
Use getenv to find the mac address since it could be in the bootloader
environment or command line and under different names.
Diffstat (limited to 'sys/mips')
-rw-r--r--sys/mips/atheros/ar71xx_machdep.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/sys/mips/atheros/ar71xx_machdep.c b/sys/mips/atheros/ar71xx_machdep.c
index 3c1bd5f..f9bacb6 100644
--- a/sys/mips/atheros/ar71xx_machdep.c
+++ b/sys/mips/atheros/ar71xx_machdep.c
@@ -145,7 +145,7 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused,
{
uint64_t platform_counter_freq;
int argc, i, count = 0;
- char **argv, **envp;
+ char **argv, **envp, *var;
vm_offset_t kernend;
/*
@@ -167,19 +167,9 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused,
* Protect ourselves from garbage in registers
*/
if (MIPS_IS_VALID_PTR(envp)) {
- for (i = 0; envp[i]; i += 2)
- {
+ for (i = 0; envp[i]; i += 2) {
if (strcmp(envp[i], "memsize") == 0)
realmem = btoc(strtoul(envp[i+1], NULL, 16));
- else if (strcmp(envp[i], "ethaddr") == 0) {
- count = sscanf(envp[i+1], "%x.%x.%x.%x.%x.%x",
- &ar711_base_mac[0], &ar711_base_mac[1],
- &ar711_base_mac[2], &ar711_base_mac[3],
- &ar711_base_mac[4], &ar711_base_mac[5]);
- if (count < 6)
- memset(ar711_base_mac, 0,
- sizeof(ar711_base_mac));
- }
}
}
@@ -245,6 +235,18 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused,
else
printf ("envp is invalid\n");
+ if ((var = getenv("ethaddr")) != NULL ||
+ (var = getenv("kmac")) != NULL) {
+ count = sscanf(var, "%x%*c%x%*c%x%*c%x%*c%x%*c%x",
+ &ar711_base_mac[0], &ar711_base_mac[1],
+ &ar711_base_mac[2], &ar711_base_mac[3],
+ &ar711_base_mac[4], &ar711_base_mac[5]);
+ if (count < 6)
+ memset(ar711_base_mac, 0,
+ sizeof(ar711_base_mac));
+ freeenv(var);
+ }
+
init_param2(physmem);
mips_cpu_init();
pmap_bootstrap();
OpenPOWER on IntegriCloud