1 | #ifndef meminit_h |
---|
2 | #define meminit_h |
---|
3 | |
---|
4 | /* |
---|
5 | * This file is subject to the terms and conditions of the GNU General Public |
---|
6 | * License. See the file "COPYING" in the main directory of this archive |
---|
7 | * for more details. |
---|
8 | */ |
---|
9 | |
---|
10 | |
---|
11 | /* |
---|
12 | * Entries defined so far: |
---|
13 | * - boot param structure itself |
---|
14 | * - memory map |
---|
15 | * - initrd (optional) |
---|
16 | * - command line string |
---|
17 | * - kernel code & data |
---|
18 | * - Kernel memory map built from EFI memory map |
---|
19 | * - xen start info |
---|
20 | * |
---|
21 | * More could be added if necessary |
---|
22 | */ |
---|
23 | #ifndef CONFIG_XEN |
---|
24 | #define IA64_MAX_RSVD_REGIONS 6 |
---|
25 | #else |
---|
26 | #define IA64_MAX_RSVD_REGIONS 7 |
---|
27 | #endif |
---|
28 | |
---|
29 | struct rsvd_region { |
---|
30 | unsigned long start; /* virtual address of beginning of element */ |
---|
31 | unsigned long end; /* virtual address of end of element + 1 */ |
---|
32 | }; |
---|
33 | |
---|
34 | extern struct rsvd_region rsvd_region[IA64_MAX_RSVD_REGIONS + 1]; |
---|
35 | extern int num_rsvd_regions; |
---|
36 | |
---|
37 | extern void find_memory (void); |
---|
38 | extern void reserve_memory (void); |
---|
39 | extern void find_initrd (void); |
---|
40 | extern int filter_rsvd_memory (unsigned long start, unsigned long end, void *arg); |
---|
41 | extern void efi_memmap_init(unsigned long *, unsigned long *); |
---|
42 | |
---|
43 | /* |
---|
44 | * For rounding an address to the next IA64_GRANULE_SIZE or order |
---|
45 | */ |
---|
46 | #define GRANULEROUNDDOWN(n) ((n) & ~(IA64_GRANULE_SIZE-1)) |
---|
47 | #define GRANULEROUNDUP(n) (((n)+IA64_GRANULE_SIZE-1) & ~(IA64_GRANULE_SIZE-1)) |
---|
48 | #define ORDERROUNDDOWN(n) ((n) & ~((PAGE_SIZE<<MAX_ORDER)-1)) |
---|
49 | |
---|
50 | #ifdef CONFIG_NUMA |
---|
51 | extern void call_pernode_memory (unsigned long start, unsigned long len, void *func); |
---|
52 | #else |
---|
53 | # define call_pernode_memory(start, len, func) (*func)(start, len, 0) |
---|
54 | #endif |
---|
55 | |
---|
56 | #define IGNORE_PFN0 1 /* XXX fix me: ignore pfn 0 until TLB miss handler is updated... */ |
---|
57 | |
---|
58 | #ifdef CONFIG_VIRTUAL_MEM_MAP |
---|
59 | # define LARGE_GAP 0x40000000 /* Use virtual mem map if hole is > than this */ |
---|
60 | extern unsigned long vmalloc_end; |
---|
61 | extern struct page *vmem_map; |
---|
62 | extern int find_largest_hole (u64 start, u64 end, void *arg); |
---|
63 | extern int create_mem_map_page_table (u64 start, u64 end, void *arg); |
---|
64 | extern int vmemmap_find_next_valid_pfn(int, int); |
---|
65 | #else |
---|
66 | static inline int vmemmap_find_next_valid_pfn(int node, int i) |
---|
67 | { |
---|
68 | return i + 1; |
---|
69 | } |
---|
70 | #endif |
---|
71 | #endif /* meminit_h */ |
---|