1/* 2 * Copyright 2001 MontaVista Software Inc. 3 * Author: jsun@mvista.com or jsun@junsun.net 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License as published by the 7 * Free Software Foundation; either version 2 of the License, or (at your 8 * option) any later version. 9 */ 10#include <linux/init.h> 11#include <linux/mm.h> 12#include <linux/sched.h> 13#include <linux/bootmem.h> 14 15#include <asm/addrspace.h> 16#include <asm/bootinfo.h> 17#include <asm/pmon.h> 18 19struct callvectors* debug_vectors; 20 21extern unsigned long gt64120_base; 22 23const char *get_system_type(void) 24{ 25 return "Momentum Ocelot"; 26} 27 28/* [jsun@junsun.net] PMON passes arguments in C main() style */ 29void __init prom_init(void) 30{ 31 int argc = fw_arg0; 32 char **arg = (char **) fw_arg1; 33 char **env = (char **) fw_arg2; 34 struct callvectors *cv = (struct callvectors *) fw_arg3; 35 int i; 36 37 /* save the PROM vectors for debugging use */ 38 debug_vectors = cv; 39 40 /* arg[0] is "g", the rest is boot parameters */ 41 arcs_cmdline[0] = '\0'; 42 for (i = 1; i < argc; i++) { 43 if (strlen(arcs_cmdline) + strlen(arg[i] + 1) 44 >= sizeof(arcs_cmdline)) 45 break; 46 strcat(arcs_cmdline, arg[i]); 47 strcat(arcs_cmdline, " "); 48 } 49 50 mips_machgroup = MACH_GROUP_MOMENCO; 51 mips_machtype = MACH_MOMENCO_OCELOT; 52 53 while (*env) { 54 if (strncmp("gtbase", *env, 6) == 0) { 55 gt64120_base = simple_strtol(*env + strlen("gtbase="), 56 NULL, 16); 57 break; 58 } 59 *env++; 60 } 61 62 debug_vectors->printf("Booting Linux kernel...\n"); 63 64 /* All the boards have at least 64MiB. If there's more, we 65 detect and register it later */ 66 add_memory_region(0, 64 << 20, BOOT_MEM_RAM); 67} 68 69void __init prom_free_prom_memory(void) 70{ 71} 72