|
|
|
@ -29,20 +29,12 @@ |
|
|
|
|
#include <asm/bootinfo.h> |
|
|
|
|
#include <asm/addrspace.h> |
|
|
|
|
|
|
|
|
|
/* boot loaders specific definitions */ |
|
|
|
|
#define CFE_EPTSEAL 0x43464531 /* CFE1 is the magic number to recognize CFE from other bootloaders */ |
|
|
|
|
#define CFE 1 |
|
|
|
|
#define UBOOT 2 |
|
|
|
|
#define MYLOADER 3 |
|
|
|
|
#define UNKNOWN 0 |
|
|
|
|
#include <adm5120_info.h> |
|
|
|
|
|
|
|
|
|
void setup_prom_printf(int); |
|
|
|
|
void prom_printf(char *, ...); |
|
|
|
|
void prom_meminit(void); |
|
|
|
|
|
|
|
|
|
/* we assume we don't know the boot loader by default */ |
|
|
|
|
int boot_loader_type = UNKNOWN; |
|
|
|
|
|
|
|
|
|
#define ADM5120_ENVC 1 |
|
|
|
|
|
|
|
|
|
char *adm5120_envp[2*ADM5120_ENVC] = {"memsize","0x001000000"}; |
|
|
|
@ -105,6 +97,7 @@ char *prom_getenv(char *envname) |
|
|
|
|
printk(KERN_INFO "GETENV: not found.\n"); |
|
|
|
|
return(NULL); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* initialize the prom module. |
|
|
|
@ -114,35 +107,12 @@ void __init prom_init(void) |
|
|
|
|
/* you should these macros defined in include/asm/bootinfo.h */ |
|
|
|
|
mips_machgroup = MACH_GROUP_ADM_GW; |
|
|
|
|
mips_machtype = MACH_ADM_GW_5120; |
|
|
|
|
|
|
|
|
|
adm5120_info_init(); |
|
|
|
|
|
|
|
|
|
/* init command line, register a default kernel command line */ |
|
|
|
|
strcpy(&(arcs_cmdline[0]), "console=ttyS0,115200 rootfstype=squashfs,jffs2 init=/etc/preinit"); |
|
|
|
|
|
|
|
|
|
/* check for CFE by finding the CFE magic number */ |
|
|
|
|
int *prom_vec = (int *) fw_arg3; |
|
|
|
|
int argc = fw_arg0; |
|
|
|
|
unsigned int cfe_eptseal; |
|
|
|
|
|
|
|
|
|
if (argc < 0) |
|
|
|
|
cfe_eptseal = (uint32_t)(unsigned long)prom_vec; |
|
|
|
|
else { |
|
|
|
|
if ((int32_t)(long)prom_vec < 0) |
|
|
|
|
/*
|
|
|
|
|
* Old loaders all it gives us is the handle, |
|
|
|
|
* so assume the seal. |
|
|
|
|
*/ |
|
|
|
|
cfe_eptseal = CFE_EPTSEAL; |
|
|
|
|
else |
|
|
|
|
/*
|
|
|
|
|
* Newer loaders bundle the handle/ept/eptseal |
|
|
|
|
*/ |
|
|
|
|
cfe_eptseal = (unsigned int)((uint32_t *)prom_vec)[3]; |
|
|
|
|
} |
|
|
|
|
if (cfe_eptseal == CFE_EPTSEAL) { |
|
|
|
|
boot_loader_type = CFE; |
|
|
|
|
printk("adm5120 : CFE boot loader\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* init memory map */ |
|
|
|
|
prom_meminit(); |
|
|
|
|
} |
|
|
|
|