2019-05-23 11:14:57 +02:00
// SPDX-License-Identifier: GPL-2.0-or-later
2017-07-10 18:00:26 -07: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 08:43:14 +02:00
# include <linux/swiotlb.h>
2017-07-10 18:00:26 -07: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 12:15:05 -07:00
unsigned long boot_cpu_hartid ;
2017-07-10 18:00:26 -07:00
2019-04-15 11:14:38 +02:00
void __init parse_dtb ( phys_addr_t dtb_phys )
2017-07-10 18:00:26 -07:00
{
2019-04-15 11:14:38 +02:00
void * dtb = __va ( dtb_phys ) ;
if ( early_init_dt_scan ( dtb ) )
2018-12-17 19:15:12 -08: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-10 18:00:26 -07: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 19:19:14 +05:30
* cmdline_p = boot_command_line ;
parse_early_param ( ) ;
2017-07-10 18:00:26 -07:00
setup_bootmem ( ) ;
paging_init ( ) ;
unflatten_device_tree ( ) ;
2018-10-02 16:52:28 +08:00
# ifdef CONFIG_SWIOTLB
2018-04-27 08:43:14 +02:00
swiotlb_init ( 1 ) ;
2018-10-02 16:52:28 +08:00
# endif
2017-07-10 18:00:26 -07:00
# ifdef CONFIG_SMP
setup_smp ( ) ;
# endif
# ifdef CONFIG_DUMMY_CONSOLE
conswitchp = & dummy_con ;
# endif
riscv_fill_hwcap ( ) ;
}