diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-11-30 15:39:18 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-11-30 17:52:28 -0500 |
commit | b7dc96d75309346c1213875be68fdbbec92da5e7 (patch) | |
tree | b6f85da5e99cb3f20fef42504ce7b82b4a69c6fc /include/asm-arm/arch-aaec2000 | |
parent | 0215ffb08ce99e2bb59eca114a99499a4d06e704 (diff) |
[ARM] Clean up discontigmem support
Most architectures have fairly simple discontiguous memory - a
simple set of successive regions each containing some memory.
These can be described simply as a log2 of their maximum size,
along with the base address of the first region and the number
of regions.
The base address is already described by PHYS_PFN_OFFSET, and
the number of regions via the MAX_NUMNODES and the number of
online nodes.
If we then supply the log2 of their maximum size, all the other
discontigmem macros can move into generic code.
There is one exception: lh7a40x seems to have a more complicated
setup; this is left alone.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/arch-aaec2000')
-rw-r--r-- | include/asm-arm/arch-aaec2000/memory.h | 40 |
1 files changed, 1 insertions, 39 deletions
diff --git a/include/asm-arm/arch-aaec2000/memory.h b/include/asm-arm/arch-aaec2000/memory.h index 24b51cccde8f..9eceb4148922 100644 --- a/include/asm-arm/arch-aaec2000/memory.h +++ b/include/asm-arm/arch-aaec2000/memory.h | |||
@@ -17,8 +17,6 @@ | |||
17 | #define __virt_to_bus(x) __virt_to_phys(x) | 17 | #define __virt_to_bus(x) __virt_to_phys(x) |
18 | #define __bus_to_virt(x) __phys_to_virt(x) | 18 | #define __bus_to_virt(x) __phys_to_virt(x) |
19 | 19 | ||
20 | #ifdef CONFIG_DISCONTIGMEM | ||
21 | |||
22 | /* | 20 | /* |
23 | * The nodes are the followings: | 21 | * The nodes are the followings: |
24 | * | 22 | * |
@@ -27,42 +25,6 @@ | |||
27 | * node 2: 0xf800.0000 - 0xfbff.ffff | 25 | * node 2: 0xf800.0000 - 0xfbff.ffff |
28 | * node 3: 0xfc00.0000 - 0xffff.ffff | 26 | * node 3: 0xfc00.0000 - 0xffff.ffff |
29 | */ | 27 | */ |
30 | 28 | #define NODE_MEM_SIZE_BITS 26 | |
31 | /* | ||
32 | * Given a kernel address, find the home node of the underlying memory. | ||
33 | */ | ||
34 | #define KVADDR_TO_NID(addr) \ | ||
35 | (((unsigned long)(addr) - PAGE_OFFSET) >> NODE_MAX_MEM_SHIFT) | ||
36 | |||
37 | /* | ||
38 | * Given a page frame number, convert it to a node id. | ||
39 | */ | ||
40 | #define PFN_TO_NID(pfn) \ | ||
41 | (((pfn) - PHYS_PFN_OFFSET) >> (NODE_MAX_MEM_SHIFT - PAGE_SHIFT)) | ||
42 | |||
43 | /* | ||
44 | * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory | ||
45 | * and return the mem_map of that node. | ||
46 | */ | ||
47 | #define ADDR_TO_MAPBASE(kaddr) NODE_MEM_MAP(KVADDR_TO_NID(kaddr)) | ||
48 | |||
49 | /* | ||
50 | * Given a page frame number, find the owning node of the memory | ||
51 | * and return the mem_map of that node. | ||
52 | */ | ||
53 | #define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn)) | ||
54 | |||
55 | /* | ||
56 | * Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory | ||
57 | * and returns the index corresponding to the appropriate page in the | ||
58 | * node's mem_map. | ||
59 | */ | ||
60 | #define LOCAL_MAP_NR(addr) \ | ||
61 | (((unsigned long)(addr) & (NODE_MAX_MEM_SIZE - 1)) >> PAGE_SHIFT) | ||
62 | |||
63 | #define NODE_MAX_MEM_SHIFT 26 | ||
64 | #define NODE_MAX_MEM_SIZE (1 << NODE_MAX_MEM_SHIFT) | ||
65 | |||
66 | #endif /* CONFIG_DISCONTIGMEM */ | ||
67 | 29 | ||
68 | #endif /* __ASM_ARCH_MEMORY_H */ | 30 | #endif /* __ASM_ARCH_MEMORY_H */ |