home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / mmzone_64.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-09-09  |  1.3 KB  |  50 lines

  1. /* K8 NUMA support */
  2. /* Copyright 2002,2003 by Andi Kleen, SuSE Labs */
  3. /* 2.5 Version loosely based on the NUMAQ Code by Pat Gaughen. */
  4. #ifndef _ASM_X86_MMZONE_64_H
  5. #define _ASM_X86_MMZONE_64_H
  6.  
  7.  
  8. #ifdef CONFIG_NUMA
  9.  
  10. #include <linux/mmdebug.h>
  11.  
  12. #include <asm/smp.h>
  13.  
  14. /* Simple perfect hash to map physical addresses to node numbers */
  15. struct memnode {
  16.     int shift;
  17.     unsigned int mapsize;
  18.     s16 *map;
  19.     s16 embedded_map[64 - 8];
  20. } ____cacheline_aligned; /* total size = 128 bytes */
  21. extern struct memnode memnode;
  22. #define memnode_shift memnode.shift
  23. #define memnodemap memnode.map
  24. #define memnodemapsize memnode.mapsize
  25.  
  26. extern struct pglist_data *node_data[];
  27.  
  28. static inline __attribute__((pure)) int phys_to_nid(unsigned long addr)
  29. {
  30.     unsigned nid;
  31.     VIRTUAL_BUG_ON(!memnodemap);
  32.     nid = memnodemap[addr >> memnode_shift];
  33.     VIRTUAL_BUG_ON(nid >= MAX_NUMNODES || !node_data[nid]);
  34.     return nid;
  35. }
  36.  
  37. #define NODE_DATA(nid)        (node_data[nid])
  38.  
  39. #define node_start_pfn(nid)    (NODE_DATA(nid)->node_start_pfn)
  40. #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn +    \
  41.                  NODE_DATA(nid)->node_spanned_pages)
  42.  
  43. #ifdef CONFIG_NUMA_EMU
  44. #define FAKE_NODE_MIN_SIZE    (64 * 1024 * 1024)
  45. #define FAKE_NODE_MIN_HASH_MASK    (~(FAKE_NODE_MIN_SIZE - 1UL))
  46. #endif
  47.  
  48. #endif
  49. #endif /* _ASM_X86_MMZONE_64_H */
  50.