Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | ||
12 | #ifndef __ASM_ARCH_MEMORY_H | |
13 | #define __ASM_ARCH_MEMORY_H | |
14 | ||
15 | /* | |
16 | * Physical DRAM offset. | |
17 | */ | |
f09b9979 | 18 | #define PHYS_OFFSET UL(0xa0000000) |
1da177e4 LT |
19 | |
20 | /* | |
21 | * Virtual view <-> DMA view memory address translations | |
22 | * virt_to_bus: Used to translate the virtual address to an | |
23 | * address suitable to be passed to set_dma_addr | |
24 | * bus_to_virt: Used to convert an address for DMA operations | |
25 | * to an address that the kernel can use. | |
26 | */ | |
27 | #define __virt_to_bus(x) __virt_to_phys(x) | |
28 | #define __bus_to_virt(x) __phys_to_virt(x) | |
29 | ||
30 | #ifdef CONFIG_DISCONTIGMEM | |
31 | /* | |
32 | * The nodes are matched with the physical SDRAM banks as follows: | |
33 | * | |
34 | * node 0: 0xa0000000-0xa3ffffff --> 0xc0000000-0xc3ffffff | |
35 | * node 1: 0xa4000000-0xa7ffffff --> 0xc4000000-0xc7ffffff | |
36 | * node 2: 0xa8000000-0xabffffff --> 0xc8000000-0xcbffffff | |
37 | * node 3: 0xac000000-0xafffffff --> 0xcc000000-0xcfffffff | |
38 | */ | |
39 | ||
40 | /* | |
41 | * Given a kernel address, find the home node of the underlying memory. | |
42 | */ | |
43 | #define KVADDR_TO_NID(addr) (((unsigned long)(addr) - PAGE_OFFSET) >> 26) | |
44 | ||
45 | /* | |
46 | * Given a page frame number, convert it to a node id. | |
47 | */ | |
48 | #define PFN_TO_NID(pfn) (((pfn) - PHYS_PFN_OFFSET) >> (26 - PAGE_SHIFT)) | |
49 | ||
50 | /* | |
51 | * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory | |
52 | * and returns the mem_map of that node. | |
53 | */ | |
54 | #define ADDR_TO_MAPBASE(kaddr) NODE_MEM_MAP(KVADDR_TO_NID(kaddr)) | |
55 | ||
56 | /* | |
57 | * Given a page frame number, find the owning node of the memory | |
58 | * and returns the mem_map of that node. | |
59 | */ | |
60 | #define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn)) | |
61 | ||
62 | /* | |
63 | * Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory | |
64 | * and returns the index corresponding to the appropriate page in the | |
65 | * node's mem_map. | |
66 | */ | |
67 | #define LOCAL_MAP_NR(addr) \ | |
68 | (((unsigned long)(addr) & 0x03ffffff) >> PAGE_SHIFT) | |
69 | ||
1da177e4 LT |
70 | #endif |
71 | ||
72 | #endif |