init.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public+ 
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * PROM library initialisation code.
  7.  *
  8.  * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
  9.  */
  10. #include <linux/init.h>
  11. #include <linux/kernel.h>
  12. #include <asm/sgialib.h>
  13. #undef DEBUG_PROM_INIT
  14. /* Master romvec interface. */
  15. struct linux_romvec *romvec;
  16. struct linux_promblock *sgi_pblock;
  17. int prom_argc;
  18. char **prom_argv, **prom_envp;
  19. unsigned short prom_vers, prom_rev;
  20. extern void prom_testtree(void);
  21. extern void arc_setup_console(void);
  22. void __init prom_init(int argc, char **argv, char **envp, int *prom_vec)
  23. {
  24. struct linux_promblock *pb;
  25. romvec = ROMVECTOR;
  26. pb = sgi_pblock = PROMBLOCK;
  27. prom_argc = argc;
  28. prom_argv = argv;
  29. prom_envp = envp;
  30. #if 0
  31. /* arc_printf should not use prom_printf as soon as we free
  32.  * the prom buffers - This horribly breaks on Indys with framebuffer
  33.  * as it simply stops after initialising swap - On the Indigo2 serial
  34.  * console you will get A LOT illegal instructions - Only enable
  35.  * this for early init crashes - This also brings up artefacts of
  36.  * printing everything twice on serial console and on GFX Console
  37.  * this has the effect of having the prom printing everything
  38.  * in the small rectangle and the kernel printing around.
  39.  */
  40. arc_setup_console();
  41. #endif
  42. if (pb->magic != 0x53435241) {
  43. prom_printf("Aieee, bad prom vector magic %08lxn", pb->magic);
  44. while(1)
  45. ;
  46. }
  47. prom_init_cmdline();
  48. prom_vers = pb->ver;
  49. prom_rev = pb->rev;
  50. prom_identify_arch();
  51. printk("PROMLIB: ARC firmware Version %d Revision %dn",
  52.     prom_vers, prom_rev);
  53. prom_meminit();
  54. #ifdef DEBUG_PROM_INIT
  55. {
  56. prom_printf("Press a key to rebootn");
  57. (void) prom_getchar();
  58. romvec->imode();
  59. }
  60. #endif
  61. }