@ -4,6 +4,7 @@
*/
# include <common.h>
# include <efi_loader.h>
# include <asm/e820.h>
DECLARE_GLOBAL_DATA_PTR ;
@ -34,3 +35,41 @@ __weak unsigned int install_e820_map(unsigned int max_entries,
return 4 ;
}
# if defined(CONFIG_EFI_LOADER) && !defined(CONFIG_SPL_BUILD)
void efi_add_known_memory ( void )
{
struct e820_entry e820 [ E820MAX ] ;
unsigned int i , num ;
u64 start , pages ;
int type ;
num = install_e820_map ( ARRAY_SIZE ( e820 ) , e820 ) ;
for ( i = 0 ; i < num ; + + i ) {
start = e820 [ i ] . addr ;
pages = ALIGN ( e820 [ i ] . size , EFI_PAGE_SIZE ) > > EFI_PAGE_SHIFT ;
switch ( e820 [ i ] . type ) {
case E820_RAM :
type = EFI_CONVENTIONAL_MEMORY ;
break ;
case E820_RESERVED :
type = EFI_RESERVED_MEMORY_TYPE ;
break ;
case E820_ACPI :
type = EFI_ACPI_RECLAIM_MEMORY ;
break ;
case E820_NVS :
type = EFI_ACPI_MEMORY_NVS ;
break ;
case E820_UNUSABLE :
default :
type = EFI_UNUSABLE_MEMORY ;
break ;
}
efi_add_memory_map ( start , pages , type , false ) ;
}
}
# endif /* defined(EFI_LOADER) && !defined(CONFIG_SPL_BUILD) */