meminit.h 2.1 KB

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