2019-05-23 12:14:57 +03:00
// SPDX-License-Identifier: GPL-2.0-or-later
2017-07-11 04:00:26 +03:00
/*
* Copyright ( C ) 2009 Sunplus Core Technology Co . , Ltd .
* Chen Liqin < liqin . chen @ sunplusct . com >
* Lennox Wu < lennox . wu @ sunplusct . com >
* Copyright ( C ) 2012 Regents of the University of California
*/
# include <linux/init.h>
# include <linux/mm.h>
# include <linux/memblock.h>
# include <linux/sched.h>
# include <linux/console.h>
# include <linux/screen_info.h>
# include <linux/of_fdt.h>
# include <linux/of_platform.h>
# include <linux/sched/task.h>
2018-04-27 09:43:14 +03:00
# include <linux/swiotlb.h>
2017-07-11 04:00:26 +03:00
# include <asm/setup.h>
# include <asm/sections.h>
# include <asm/pgtable.h>
# include <asm/smp.h>
# include <asm/tlbflush.h>
# include <asm/thread_info.h>
# ifdef CONFIG_DUMMY_CONSOLE
struct screen_info screen_info = {
. orig_video_lines = 30 ,
. orig_video_cols = 80 ,
. orig_video_mode = 0 ,
. orig_video_ega_bx = 0 ,
. orig_video_isVGA = 1 ,
. orig_video_points = 8
} ;
# endif
/* The lucky hart to first increment this variable will boot the other cores */
atomic_t hart_lottery ;
2018-10-02 22:15:05 +03:00
unsigned long boot_cpu_hartid ;
2017-07-11 04:00:26 +03:00
2019-06-28 23:36:21 +03:00
void __init parse_dtb ( void )
2017-07-11 04:00:26 +03:00
{
2019-06-28 23:36:21 +03:00
if ( early_init_dt_scan ( dtb_early_va ) )
2018-12-18 06:15:12 +03:00
return ;
pr_err ( " No DTB passed to the kernel \n " ) ;
# ifdef CONFIG_CMDLINE_FORCE
strlcpy ( boot_command_line , CONFIG_CMDLINE , COMMAND_LINE_SIZE ) ;
pr_info ( " Forcing kernel command line to: %s \n " , boot_command_line ) ;
# endif
2017-07-11 04:00:26 +03:00
}
void __init setup_arch ( char * * cmdline_p )
{
init_mm . start_code = ( unsigned long ) _stext ;
init_mm . end_code = ( unsigned long ) _etext ;
init_mm . end_data = ( unsigned long ) _edata ;
init_mm . brk = ( unsigned long ) _end ;
2019-01-07 16:49:14 +03:00
* cmdline_p = boot_command_line ;
parse_early_param ( ) ;
2017-07-11 04:00:26 +03:00
setup_bootmem ( ) ;
paging_init ( ) ;
unflatten_device_tree ( ) ;
2018-10-02 11:52:28 +03:00
# ifdef CONFIG_SWIOTLB
2018-04-27 09:43:14 +03:00
swiotlb_init ( 1 ) ;
2018-10-02 11:52:28 +03:00
# endif
2017-07-11 04:00:26 +03:00
# ifdef CONFIG_SMP
setup_smp ( ) ;
# endif
# ifdef CONFIG_DUMMY_CONSOLE
conswitchp = & dummy_con ;
# endif
riscv_fill_hwcap ( ) ;
}