2005-04-16 15:20:36 -07:00
# ifndef meminit_h
# define meminit_h
/*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*/
/*
* Entries defined so far :
* - boot param structure itself
* - memory map
* - initrd ( optional )
* - command line string
* - kernel code & data
2006-12-07 09:51:35 -08:00
* - crash dumping code reserved region
2005-09-08 12:39:59 -07:00
* - Kernel memory map built from EFI memory map
2007-03-06 02:34:26 -08:00
* - ELF core header
2008-10-17 11:17:47 +09:00
* - xen start info if CONFIG_XEN
2005-04-16 15:20:36 -07:00
*
* More could be added if necessary
*/
2008-10-17 11:17:47 +09:00
# define IA64_MAX_RSVD_REGIONS 9
2005-04-16 15:20:36 -07:00
struct rsvd_region {
2009-05-22 13:49:49 -07:00
u64 start ; /* virtual address of beginning of element */
u64 end ; /* virtual address of end of element + 1 */
2005-04-16 15:20:36 -07:00
} ;
extern struct rsvd_region rsvd_region [ IA64_MAX_RSVD_REGIONS + 1 ] ;
extern int num_rsvd_regions ;
extern void find_memory ( void ) ;
extern void reserve_memory ( void ) ;
extern void find_initrd ( void ) ;
2009-05-22 13:49:49 -07:00
extern int filter_rsvd_memory ( u64 start , u64 end , void * arg ) ;
extern int filter_memory ( u64 start , u64 end , void * arg ) ;
extern unsigned long efi_memmap_init ( u64 * s , u64 * e ) ;
extern int find_max_min_low_pfn ( u64 , u64 , void * ) ;
2005-04-16 15:20:36 -07:00
2007-03-06 02:34:26 -08:00
extern unsigned long vmcore_find_descriptor_size ( unsigned long address ) ;
2009-05-22 13:49:49 -07:00
extern int reserve_elfcorehdr ( u64 * start , u64 * end ) ;
2007-03-06 02:34:26 -08:00
2005-04-16 15:20:36 -07:00
/*
* For rounding an address to the next IA64_GRANULE_SIZE or order
*/
# define GRANULEROUNDDOWN(n) ((n) & ~(IA64_GRANULE_SIZE-1))
# define GRANULEROUNDUP(n) (((n)+IA64_GRANULE_SIZE-1) & ~(IA64_GRANULE_SIZE-1))
2005-10-04 15:13:50 -04:00
# ifdef CONFIG_NUMA
2005-04-16 15:20:36 -07:00
extern void call_pernode_memory ( unsigned long start , unsigned long len , void * func ) ;
# else
# define call_pernode_memory(start, len, func) (*func)(start, len, 0)
# endif
# define IGNORE_PFN0 1 /* XXX fix me: ignore pfn 0 until TLB miss handler is updated... */
2008-04-11 15:21:35 -07:00
extern int register_active_ranges ( u64 start , u64 len , int nid ) ;
2007-01-30 02:11:09 -08:00
2005-04-16 15:20:36 -07:00
# ifdef CONFIG_VIRTUAL_MEM_MAP
# define LARGE_GAP 0x40000000 /* Use virtual mem map if hole is > than this */
extern unsigned long vmalloc_end ;
extern struct page * vmem_map ;
2009-05-22 13:49:49 -07:00
extern int find_largest_hole ( u64 start , u64 end , void * arg ) ;
extern int create_mem_map_page_table ( u64 start , u64 end , void * arg ) ;
2006-06-28 12:55:43 -04:00
extern int vmemmap_find_next_valid_pfn ( int , int ) ;
# else
static inline int vmemmap_find_next_valid_pfn ( int node , int i )
{
return i + 1 ;
}
2005-04-16 15:20:36 -07:00
# endif
# endif /* meminit_h */