memory.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * linux/include/asm-arm/arch-aaec2000/memory.h
  3. *
  4. * Copyright (c) 2005 Nicolas Bellido Y Ortega
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 as
  8. * published by the Free Software Foundation.
  9. */
  10. #ifndef __ASM_ARCH_MEMORY_H
  11. #define __ASM_ARCH_MEMORY_H
  12. #define PHYS_OFFSET UL(0xf0000000)
  13. #define __virt_to_bus(x) __virt_to_phys(x)
  14. #define __bus_to_virt(x) __phys_to_virt(x)
  15. #ifdef CONFIG_DISCONTIGMEM
  16. /*
  17. * The nodes are the followings:
  18. *
  19. * node 0: 0xf000.0000 - 0xf3ff.ffff
  20. * node 1: 0xf400.0000 - 0xf7ff.ffff
  21. * node 2: 0xf800.0000 - 0xfbff.ffff
  22. * node 3: 0xfc00.0000 - 0xffff.ffff
  23. */
  24. /*
  25. * Given a kernel address, find the home node of the underlying memory.
  26. */
  27. #define KVADDR_TO_NID(addr) \
  28. (((unsigned long)(addr) - PAGE_OFFSET) >> NODE_MAX_MEM_SHIFT)
  29. /*
  30. * Given a page frame number, convert it to a node id.
  31. */
  32. #define PFN_TO_NID(pfn) \
  33. (((pfn) - PHYS_PFN_OFFSET) >> (NODE_MAX_MEM_SHIFT - PAGE_SHIFT))
  34. /*
  35. * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory
  36. * and return the mem_map of that node.
  37. */
  38. #define ADDR_TO_MAPBASE(kaddr) NODE_MEM_MAP(KVADDR_TO_NID(kaddr))
  39. /*
  40. * Given a page frame number, find the owning node of the memory
  41. * and return the mem_map of that node.
  42. */
  43. #define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn))
  44. /*
  45. * Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory
  46. * and returns the index corresponding to the appropriate page in the
  47. * node's mem_map.
  48. */
  49. #define LOCAL_MAP_NR(addr) \
  50. (((unsigned long)(addr) & (NODE_MAX_MEM_SIZE - 1)) >> PAGE_SHIFT)
  51. #define NODE_MAX_MEM_SHIFT 26
  52. #define NODE_MAX_MEM_SIZE (1 << NODE_MAX_MEM_SHIFT)
  53. #endif /* CONFIG_DISCONTIGMEM */
  54. #endif /* __ASM_ARCH_MEMORY_H */