162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
362306a36Sopenharmony_ci * License.  See the file "COPYING" in the main directory of this archive
462306a36Sopenharmony_ci * for more details.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 2012 MIPS Technologies, Inc.
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci#ifndef __ASM_FW_H_
962306a36Sopenharmony_ci#define __ASM_FW_H_
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <asm/bootinfo.h>	/* For cleaner code... */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciextern int fw_argc;
1462306a36Sopenharmony_ciextern int *_fw_argv;
1562306a36Sopenharmony_ciextern int *_fw_envp;
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * Most firmware like YAMON, PMON, etc. pass arguments and environment
1962306a36Sopenharmony_ci * variables as 32-bit pointers. These take care of sign extension.
2062306a36Sopenharmony_ci */
2162306a36Sopenharmony_ci#define fw_argv(index)		((char *)(long)_fw_argv[(index)])
2262306a36Sopenharmony_ci#define fw_envp(index)		((char *)(long)_fw_envp[(index)])
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciextern void fw_init_cmdline(void);
2562306a36Sopenharmony_ciextern char *fw_getcmdline(void);
2662306a36Sopenharmony_ciextern void fw_meminit(void);
2762306a36Sopenharmony_ciextern char *fw_getenv(char *name);
2862306a36Sopenharmony_ciextern unsigned long fw_getenvl(char *name);
2962306a36Sopenharmony_ciextern void fw_init_early_console(void);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#endif /* __ASM_FW_H_ */
32