diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /include/asm-sh/mmzone.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'include/asm-sh/mmzone.h')
-rw-r--r-- | include/asm-sh/mmzone.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/asm-sh/mmzone.h b/include/asm-sh/mmzone.h new file mode 100644 index 000000000000..0e7406601fdf --- /dev/null +++ b/include/asm-sh/mmzone.h | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | * linux/include/asm-sh/mmzone.h | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | #ifndef __ASM_SH_MMZONE_H | ||
9 | #define __ASM_SH_MMZONE_H | ||
10 | |||
11 | #include <linux/config.h> | ||
12 | |||
13 | #ifdef CONFIG_DISCONTIGMEM | ||
14 | |||
15 | /* Currently, just for HP690 */ | ||
16 | #define PHYSADDR_TO_NID(phys) ((((phys) - __MEMORY_START) >= 0x01000000)?1:0) | ||
17 | |||
18 | extern pg_data_t discontig_page_data[MAX_NUMNODES]; | ||
19 | extern bootmem_data_t discontig_node_bdata[MAX_NUMNODES]; | ||
20 | |||
21 | /* | ||
22 | * Following are macros that each numa implmentation must define. | ||
23 | */ | ||
24 | |||
25 | /* | ||
26 | * Given a kernel address, find the home node of the underlying memory. | ||
27 | */ | ||
28 | #define KVADDR_TO_NID(kaddr) PHYSADDR_TO_NID(__pa(kaddr)) | ||
29 | |||
30 | /* | ||
31 | * Return a pointer to the node data for node n. | ||
32 | */ | ||
33 | #define NODE_DATA(nid) (&discontig_page_data[nid]) | ||
34 | |||
35 | /* | ||
36 | * NODE_MEM_MAP gives the kaddr for the mem_map of the node. | ||
37 | */ | ||
38 | #define NODE_MEM_MAP(nid) (NODE_DATA(nid)->node_mem_map) | ||
39 | |||
40 | #define phys_to_page(phys) \ | ||
41 | ({ unsigned int node = PHYSADDR_TO_NID(phys); \ | ||
42 | NODE_MEM_MAP(node) \ | ||
43 | + (((phys) - NODE_DATA(node)->node_start_paddr) >> PAGE_SHIFT); }) | ||
44 | |||
45 | static inline int is_valid_page(struct page *page) | ||
46 | { | ||
47 | unsigned int i; | ||
48 | |||
49 | for (i = 0; i < MAX_NUMNODES; i++) { | ||
50 | if (page >= NODE_MEM_MAP(i) && | ||
51 | page < NODE_MEM_MAP(i) + NODE_DATA(i)->node_size) | ||
52 | return 1; | ||
53 | } | ||
54 | return 0; | ||
55 | } | ||
56 | |||
57 | #define VALID_PAGE(page) is_valid_page(page) | ||
58 | #define page_to_phys(page) PHYSADDR(page_address(page)) | ||
59 | |||
60 | #endif /* CONFIG_DISCONTIGMEM */ | ||
61 | #endif | ||