fpmem.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* 
  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) 2000-2002 Silicon Graphics, Inc.  All rights reserved.
  8.  */
  9. #include <linux/config.h>
  10. /*
  11.  * Structure of the mem config of the node as a SN1 MI reg
  12.  * Medusa supports this reg config.
  13.  *
  14.  * BankSize nibble to bank size mapping
  15.  *
  16.  *      1 - 64 MB
  17.  *      2 - 128 MB
  18.  *      3 - 256 MB
  19.  *      4 - 512 MB
  20.  *      5 - 1024 MB (1GB)
  21.  */
  22. #define MBSHIFT 20
  23. #ifdef CONFIG_IA64_SGI_SN1
  24. typedef struct node_memmap_s
  25. {
  26.         unsigned int    b0      :1,     /* 0 bank 0 present */
  27.                         b1      :1,     /* 1 bank 1 present */
  28.                         r01     :2,     /* 2-3 reserved */
  29.                         b01size :4,     /* 4-7 Size of bank 0 and 1 */
  30.                         b2      :1,     /* 8 bank 2 present */
  31.                         b3      :1,     /* 9 bank 3 present */
  32.                         r23     :2,     /* 10-11 reserved */
  33.                         b23size :4,     /* 12-15 Size of bank 2 and 3 */
  34.                         b4      :1,     /* 16 bank 4 present */
  35.                         b5      :1,     /* 17 bank 5 present */
  36.                         r45     :2,     /* 18-19 reserved */
  37.                         b45size :4,     /* 20-23 Size of bank 4 and 5 */
  38.                         b6      :1,     /* 24 bank 6 present */
  39.                         b7      :1,     /* 25 bank 7 present */
  40.                         r67     :2,     /* 26-27 reserved */
  41.                         b67size :4;     /* 28-31 Size of bank 6 and 7 */
  42. } node_memmap_t ;
  43. /* Support the medusa hack for 8M/16M/32M nodes */
  44. #define SN1_BANK_SIZE_SHIFT (MBSHIFT+6)     /* 64 MB */
  45. #define BankSizeBytes(bsize)            ((bsize<6) ? (1<<((bsize-1)+SN1_BANK_SIZE_SHIFT)) :
  46.                                          (1<<((bsize-9)+MBSHIFT)))
  47. #else
  48. typedef struct node_memmap_s
  49. {
  50.         unsigned int    b0size  :3,     /* 0-2   bank 0 size */
  51.                         b0dou   :1,     /* 3     bank 0 is 2-sided */
  52.                         ena0    :1,     /* 4     bank 0 enabled */
  53.                         r0      :3,     /* 5-7   reserved */
  54.          b1size  :3,     /* 8-10  bank 1 size */
  55.                         b1dou   :1,     /* 11    bank 1 is 2-sided */
  56.                         ena1    :1,     /* 12    bank 1 enabled */
  57.                         r1      :3,     /* 13-15 reserved */
  58.          b2size  :3,     /* 16-18 bank 2 size */
  59.                         b2dou   :1,     /* 19    bank 1 is 2-sided */
  60.                         ena2    :1,     /* 20    bank 2 enabled */
  61.                         r2      :3,     /* 21-23 reserved */
  62.          b3size  :3,     /* 24-26 bank 3 size */
  63.                         b3dou   :1,     /* 27    bank 3 is 2-sided */
  64.                         ena3    :1,     /* 28    bank 3 enabled */
  65.                         r3      :3;     /* 29-31 reserved */
  66. } node_memmap_t ;
  67. #define SN2_BANK_SIZE_SHIFT (MBSHIFT+6)     /* 64 MB */
  68. #define BankPresent(bsize) (bsize<6)
  69. #define BankSizeBytes(bsize)            (BankPresent(bsize) ? 1UL<<((bsize)+SN2_BANK_SIZE_SHIFT) : 0)
  70. #endif
  71. typedef struct sn_memmap_s
  72. {
  73. short nasid ;
  74. short cpuconfig;
  75. node_memmap_t  node_memmap ;
  76. } sn_memmap_t ;
  77. typedef struct sn_config_s
  78. {
  79. int cpus;
  80. int nodes;
  81. sn_memmap_t memmap[1]; /* start of array */
  82. } sn_config_t;
  83. extern void build_init(unsigned long);
  84. extern int build_efi_memmap(void *, int);
  85. extern int GetNumNodes(void);
  86. extern int GetNumCpus(void);
  87. extern int IsCpuPresent(int, int);
  88. extern int GetNasid(int);