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