2005-04-16 15:20:36 -07:00
/*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
* PROM library initialisation code .
*
2011-04-04 14:15:29 -07:00
* Copyright ( C ) 1996 David S . Miller ( davem @ davemloft . net )
2005-04-16 15:20:36 -07:00
*/
# include <linux/init.h>
# include <linux/kernel.h>
# include <asm/bootinfo.h>
# include <asm/sgialib.h>
2007-11-19 12:23:51 +00:00
# include <asm/smp-ops.h>
2005-04-16 15:20:36 -07:00
# undef DEBUG_PROM_INIT
/* Master romvec interface. */
struct linux_romvec * romvec ;
int prom_argc ;
LONG * _prom_argv , * _prom_envp ;
void __init prom_init ( void )
{
PSYSTEM_PARAMETER_BLOCK pb = PROMBLOCK ;
2007-03-08 00:47:11 +00:00
2005-04-16 15:20:36 -07:00
romvec = ROMVECTOR ;
2007-03-01 11:56:43 +00:00
2005-04-16 15:20:36 -07:00
prom_argc = fw_arg0 ;
_prom_argv = ( LONG * ) fw_arg1 ;
_prom_envp = ( LONG * ) fw_arg2 ;
if ( pb - > magic ! = 0x53435241 ) {
2007-03-08 00:47:11 +00:00
printk ( KERN_CRIT " Aieee, bad prom vector magic %08lx \n " ,
( unsigned long ) pb - > magic ) ;
2005-04-16 15:20:36 -07:00
while ( 1 )
;
}
prom_init_cmdline ( ) ;
prom_identify_arch ( ) ;
printk ( KERN_INFO " PROMLIB: ARC firmware Version %d Revision %d \n " ,
pb - > ver , pb - > rev ) ;
prom_meminit ( ) ;
# ifdef DEBUG_PROM_INIT
2007-03-01 11:56:43 +00:00
pr_info ( " Press a key to reboot \n " ) ;
ArcRead ( 0 , & c , 1 , & cnt ) ;
2005-04-16 15:20:36 -07:00
ArcEnterInteractiveMode ( ) ;
# endif
2007-11-19 12:23:51 +00:00
# ifdef CONFIG_SGI_IP27
{
extern struct plat_smp_ops ip27_smp_ops ;
register_smp_ops ( & ip27_smp_ops ) ;
}
# endif
2005-04-16 15:20:36 -07:00
}