memory.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/include/asm-arm/arch-pxa/memory.h
  3.  *
  4.  * Author: Nicolas Pitre
  5.  * Copyright: (C) 2001 MontaVista Software Inc.
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 2 as
  9.  * published by the Free Software Foundation.
  10.  */
  11. #ifndef __ASM_ARCH_MEMORY_H
  12. #define __ASM_ARCH_MEMORY_H
  13. /*
  14.  * Physical DRAM offset.
  15.  */
  16. #define PHYS_OFFSET (0xa0000000UL)
  17. /*
  18.  * Virtual view <-> DMA view memory address translations
  19.  * virt_to_bus: Used to translate the virtual address to an
  20.  * address suitable to be passed to set_dma_addr
  21.  * bus_to_virt: Used to convert an address for DMA operations
  22.  * to an address that the kernel can use.
  23.  */
  24. #define __virt_to_bus(x)  __virt_to_phys(x)
  25. #define __bus_to_virt(x)  __phys_to_virt(x)
  26. #ifdef CONFIG_DISCONTIGMEM
  27. /*
  28.  * The nodes are matched with the physical SDRAM banks as follows:
  29.  *
  30.  *  node 0:  0xa0000000-0xa3ffffff -->  0xc0000000-0xc3ffffff
  31.  *  node 1:  0xa4000000-0xa7ffffff -->  0xc4000000-0xc7ffffff
  32.  *  node 2:  0xa8000000-0xabffffff -->  0xc8000000-0xcbffffff
  33.  *  node 3:  0xac000000-0xafffffff -->  0xcc000000-0xcfffffff
  34.  */
  35. /*
  36.  * Given a kernel address, find the home node of the underlying memory.
  37.  */
  38. #define KVADDR_TO_NID(addr) (((unsigned long)(addr) - PAGE_OFFSET) >> 26)
  39. /*
  40.  * Given a page frame number, convert it to a node id.
  41.  */
  42. #define PFN_TO_NID(pfn) (((pfn) - PHYS_PFN_OFFSET) >> (26 - PAGE_SHIFT))
  43. /*
  44.  * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory
  45.  * and returns the mem_map of that node.
  46.  */
  47. #define ADDR_TO_MAPBASE(kaddr) NODE_MEM_MAP(KVADDR_TO_NID(kaddr))
  48. /*
  49.  * Given a page frame number, find the owning node of the memory
  50.  * and returns the mem_map of that node.
  51.  */
  52. #define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn))
  53. /*
  54.  * Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory
  55.  * and returns the index corresponding to the appropriate page in the
  56.  * node's mem_map.
  57.  */
  58. #define LOCAL_MAP_NR(addr) 
  59. (((unsigned long)(addr) & 0x03ffffff) >> PAGE_SHIFT)
  60. #endif
  61. #endif