2017-07-10 18:00:26 -07:00
/*
* Copyright ( C ) 2012 Regents of the University of California
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation , version 2.
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/
# include <linux/init.h>
# include <linux/mm.h>
# include <linux/memblock.h>
2018-10-30 15:09:49 -07:00
# include <linux/initrd.h>
2017-07-10 18:00:26 -07:00
# include <linux/swap.h>
2018-01-16 09:37:50 +01:00
# include <linux/sizes.h>
2017-07-10 18:00:26 -07:00
# include <asm/tlbflush.h>
# include <asm/sections.h>
# include <asm/pgtable.h>
# include <asm/io.h>
static void __init zone_sizes_init ( void )
{
2018-01-16 09:37:50 +01:00
unsigned long max_zone_pfns [ MAX_NR_ZONES ] = { 0 , } ;
2017-07-10 18:00:26 -07:00
2018-06-25 16:49:37 +08:00
# ifdef CONFIG_ZONE_DMA32
2019-01-12 16:16:27 +08:00
max_zone_pfns [ ZONE_DMA32 ] = PFN_DOWN ( min ( 4UL * SZ_1G ,
( unsigned long ) PFN_PHYS ( max_low_pfn ) ) ) ;
2018-06-25 16:49:37 +08:00
# endif
2018-01-16 09:37:50 +01:00
max_zone_pfns [ ZONE_NORMAL ] = max_low_pfn ;
free_area_init_nodes ( max_zone_pfns ) ;
2017-07-10 18:00:26 -07:00
}
void setup_zero_page ( void )
{
memset ( ( void * ) empty_zero_page , 0 , PAGE_SIZE ) ;
}
void __init paging_init ( void )
{
setup_zero_page ( ) ;
local_flush_tlb_all ( ) ;
zone_sizes_init ( ) ;
}
void __init mem_init ( void )
{
# ifdef CONFIG_FLATMEM
BUG_ON ( ! mem_map ) ;
# endif /* CONFIG_FLATMEM */
high_memory = ( void * ) ( __va ( PFN_PHYS ( max_low_pfn ) ) ) ;
2018-10-30 15:09:30 -07:00
memblock_free_all ( ) ;
2017-07-10 18:00:26 -07:00
mem_init_print_info ( NULL ) ;
}
void free_initmem ( void )
{
free_initmem_default ( 0 ) ;
}
# ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem ( unsigned long start , unsigned long end )
{
}
# endif /* CONFIG_BLK_DEV_INITRD */