2008-10-22 22:26:29 -07:00
# ifndef _ASM_X86_E820_H
# define _ASM_X86_E820_H
2008-05-14 08:15:40 -07:00
# ifdef CONFIG_EFI
# include <linux/numa.h>
# define E820_X_MAX (E820MAX + 3 * MAX_NUMNODES)
# else /* ! CONFIG_EFI */
# define E820_X_MAX E820MAX
# endif
2012-12-14 22:37:13 +00:00
# include <uapi/asm/e820.h>
2007-10-22 10:56:19 +10:00
# ifndef __ASSEMBLY__
2008-06-27 13:12:55 +02:00
/* see comment in arch/x86/kernel/e820.c */
2008-05-11 00:30:15 -07:00
extern struct e820map e820 ;
2008-06-27 13:12:55 +02:00
extern struct e820map e820_saved ;
2008-05-11 00:30:15 -07:00
2008-07-21 22:19:29 +05:30
extern unsigned long pci_mem_start ;
2008-05-11 00:30:15 -07:00
extern int e820_any_mapped ( u64 start , u64 end , unsigned type ) ;
extern int e820_all_mapped ( u64 start , u64 end , unsigned type ) ;
2008-06-15 18:58:51 -07:00
extern void e820_add_region ( u64 start , u64 size , int type ) ;
2008-05-11 00:30:15 -07:00
extern void e820_print_map ( char * who ) ;
2008-05-14 08:15:34 -07:00
extern int
2009-03-23 02:13:01 +05:30
sanitize_e820_map ( struct e820entry * biosmap , int max_nr_map , u32 * pnr_map ) ;
2008-06-15 18:58:51 -07:00
extern u64 e820_update_range ( u64 start , u64 size , unsigned old_type ,
2008-05-11 00:30:15 -07:00
unsigned new_type ) ;
2008-06-21 14:48:05 -07:00
extern u64 e820_remove_range ( u64 start , u64 size , unsigned old_type ,
int checktype ) ;
2008-05-11 00:30:15 -07:00
extern void update_e820 ( void ) ;
extern void e820_setup_gap ( void ) ;
2008-06-24 11:48:30 -07:00
extern int e820_search_gap ( unsigned long * gapstart , unsigned long * gapsize ,
2008-06-25 11:02:42 -07:00
unsigned long start_addr , unsigned long long end_addr ) ;
2008-06-11 11:33:39 +08:00
struct setup_data ;
2013-08-13 15:46:41 -06:00
extern void parse_e820_ext ( u64 phys_addr , u32 data_len ) ;
2008-05-11 00:30:15 -07:00
2008-05-20 20:10:58 -07:00
# if defined(CONFIG_X86_64) || \
( defined ( CONFIG_X86_32 ) & & defined ( CONFIG_HIBERNATION ) )
extern void e820_mark_nosave_regions ( unsigned long limit_pfn ) ;
# else
static inline void e820_mark_nosave_regions ( unsigned long limit_pfn )
{
}
# endif
2008-07-10 20:38:26 -07:00
extern unsigned long e820_end_of_ram_pfn ( void ) ;
extern unsigned long e820_end_of_low_ram_pfn ( void ) ;
2011-07-12 11:15:58 +02:00
extern u64 early_reserve_e820 ( u64 sizet , u64 align ) ;
2010-08-25 13:39:17 -07:00
void memblock_x86_fill ( void ) ;
2010-08-25 13:39:18 -07:00
void memblock_find_dma_reserve ( void ) ;
2008-06-10 12:55:54 -07:00
extern void finish_e820_parsing ( void ) ;
2008-06-16 13:03:31 -07:00
extern void e820_reserve_resources ( void ) ;
2008-08-28 13:52:25 -07:00
extern void e820_reserve_resources_late ( void ) ;
2008-06-16 19:58:28 -07:00
extern void setup_memory_map ( void ) ;
2008-06-18 17:27:08 -07:00
extern char * default_machine_specific_memory_setup ( void ) ;
2007-10-22 10:56:19 +10:00
2009-11-30 21:33:51 -08:00
/*
* Returns true iff the specified range [ s , e ) is completely contained inside
* the ISA region .
*/
2009-11-23 14:44:39 -08:00
static inline bool is_ISA_range ( u64 s , u64 e )
{
2009-11-30 21:33:51 -08:00
return s > = ISA_START_ADDRESS & & e < = ISA_END_ADDRESS ;
2009-11-23 14:44:39 -08:00
}
2008-01-30 13:33:08 +01:00
2009-11-23 14:44:39 -08:00
# endif /* __ASSEMBLY__ */
2008-06-16 19:58:28 -07:00
# include <linux/ioport.h>
# define HIGH_MEMORY (1024*1024)
2008-10-22 22:26:29 -07:00
# endif /* _ASM_X86_E820_H */