瀏覽代碼

[MIPS] Au1xx0: fix prom_getenv() to handle YAMON style environment

Alchemy boards use YAMON which passes the environment variables as the
tuples of strings (the name followed by the value) unlike PMON which
passes "name=<val>" strings.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

Sergei Shtylyov 19 年之前
父節點
當前提交
fef6d6a73a
共有 1 個文件被更改,包括 9 次插入15 次删除
  1. 9 15
      arch/mips/au1000/common/prom.c

+ 9 - 15
arch/mips/au1000/common/prom.c

@@ -1,10 +1,9 @@
 /*
 /*
  *
  *
  * BRIEF MODULE DESCRIPTION
  * BRIEF MODULE DESCRIPTION
- *    PROM library initialisation code, assuming a version of
- *    pmon is the boot code.
+ *    PROM library initialisation code, assuming YAMON is the boot loader.
  *
  *
- * Copyright 2000,2001 MontaVista Software Inc.
+ * Copyright 2000, 2001, 2006 MontaVista Software Inc.
  * Author: MontaVista Software, Inc.
  * Author: MontaVista Software, Inc.
  *         	ppopov@mvista.com or source@mvista.com
  *         	ppopov@mvista.com or source@mvista.com
  *
  *
@@ -49,9 +48,9 @@ extern char **prom_argv, **prom_envp;
 
 
 typedef struct
 typedef struct
 {
 {
-    char *name;
-/*    char *val; */
-}t_env_var;
+	char *name;
+	char *val;
+} t_env_var;
 
 
 
 
 char * prom_getcmdline(void)
 char * prom_getcmdline(void)
@@ -85,21 +84,16 @@ char *prom_getenv(char *envname)
 {
 {
 	/*
 	/*
 	 * Return a pointer to the given environment variable.
 	 * Return a pointer to the given environment variable.
-	 * Environment variables are stored in the form of "memsize=64".
 	 */
 	 */
 
 
 	t_env_var *env = (t_env_var *)prom_envp;
 	t_env_var *env = (t_env_var *)prom_envp;
-	int i;
-
-	i = strlen(envname);
 
 
-	while(env->name) {
-		if(strncmp(envname, env->name, i) == 0) {
-			return(env->name + strlen(envname) + 1);
-		}
+	while (env->name) {
+		if (strcmp(envname, env->name) == 0)
+			return env->val;
 		env++;
 		env++;
 	}
 	}
-	return(NULL);
+	return NULL;
 }
 }
 
 
 inline unsigned char str2hexnum(unsigned char c)
 inline unsigned char str2hexnum(unsigned char c)