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

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
  8.  * Copyright (C) 2000 by Colin Ngam
  9.  */
  10. #include <linux/types.h>
  11. #include <asm/sn/sgi.h>
  12. #include <asm/sn/agent.h>
  13. #include <asm/sn/klconfig.h>
  14. #include <asm/sn/module.h>
  15. #include <asm/sn/nic.h>
  16. #include <asm/sn/sn_private.h>
  17. #include <asm/sn/synergy.h>
  18. cpuid_t         master_procid = 0;
  19. int maxnodes;
  20. char arg_maxnodes[4];
  21. nodepda_t       *Nodepdaindr[MAX_COMPACT_NODES];
  22. nodepda_t        *nodepda;
  23. subnode_pda_t    *subnodepda;
  24. synergy_da_t *Synergy_da_indr[MAX_COMPACT_NODES * 2];
  25. extern void init_all_devices(void);
  26. /*
  27.  * Return non-zero if the given variable was specified
  28.  */
  29. int
  30. is_specified(char *s)
  31. {
  32.         return (strlen(s) != 0);
  33. }
  34. void xbmon_init(void)
  35. {
  36. FIXME("xbmon_init : no-opn");
  37. }
  38. void pciiox_init(void)
  39. {
  40. FIXME("pciiox_init : no-opn");
  41. }
  42. void usrpci_init(void)
  43. {
  44. FIXME("usrpci_init : no-opn");
  45. }
  46. void ioc3_init(void)
  47. {
  48. FIXME("ioc3_init : no-opn");
  49. }
  50. void initialize_io(void)
  51. {
  52. init_all_devices();
  53. }
  54. /*
  55.  * Routines provided by ml/SN/promif.c.
  56.  */
  57. static __psunsigned_t master_bridge_base = (__psunsigned_t)NULL;
  58. nasid_t console_nasid;
  59. static char console_wid;
  60. static char console_pcislot;
  61. void
  62. set_master_bridge_base(void)
  63. {
  64.         console_nasid = KL_CONFIG_CH_CONS_INFO(master_nasid)->nasid;
  65.         console_wid = WIDGETID_GET(KL_CONFIG_CH_CONS_INFO(master_nasid)->memory_base);
  66.         console_pcislot = KL_CONFIG_CH_CONS_INFO(master_nasid)->npci;
  67.         master_bridge_base = (__psunsigned_t)NODE_SWIN_BASE(console_nasid,
  68.                                                             console_wid);
  69. FIXME("WARNING: set_master_bridge_base: NON NASID 0 DOES NOT WORKn");
  70. }
  71. int
  72. check_nasid_equiv(nasid_t nasida, nasid_t nasidb)
  73. {
  74.         if ((nasida == nasidb) ||
  75.             (nasida == NODEPDA(NASID_TO_COMPACT_NODEID(nasidb))->xbow_peer))
  76.                 return 1;
  77.         else
  78.                 return 0;
  79. }
  80. int
  81. is_master_nasid_widget(nasid_t test_nasid, xwidgetnum_t test_wid)
  82. {
  83.         /*
  84.          * If the widget numbers are different, we're not the master.
  85.          */
  86.         if (test_wid != (xwidgetnum_t)console_wid)
  87.                 return 0;
  88.         /*
  89.          * If the NASIDs are the same or equivalent, we're the master.
  90.          */
  91.         if (check_nasid_equiv(test_nasid, console_nasid)) {
  92.                 return 1;
  93.         } else {
  94.                 return 0;
  95.         }
  96. }
  97. /*
  98.  * Routines provided by ml/SN/nvram.c
  99.  */
  100. void
  101. nvram_baseinit(void)
  102. {
  103. FIXME("nvram_baseinit : no-opn");
  104. }