// SPDX-License-Identifier: GPL-2.0-or-later /* * 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> #include <linux/swiotlb.h> #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> #include "head.h" #ifdef [31mCONFIG_DUMMY_CONSOLE[0m 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; unsigned long boot_cpu_hartid; void __init parse_dtb(void) { if (early_init_dt_scan(dtb_early_va)) return; pr_err("No DTB passed to the kernel\n"); #ifdef [31mCONFIG_CMDLINE_FORCE[0m strlcpy(boot_command_line, [31mCONFIG_CMDLINE[0m, COMMAND_LINE_SIZE); pr_info("Forcing kernel command line to: %s\n", boot_command_line); #endif } 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; *cmdline_p = boot_command_line; parse_early_param(); setup_bootmem(); paging_init(); unflatten_device_tree(); #ifdef [31mCONFIG_SWIOTLB[0m swiotlb_init(1); #endif #ifdef [31mCONFIG_SMP[0m setup_smp(); #endif #ifdef [31mCONFIG_DUMMY_CONSOLE[0m conswitchp = &dummy_con; #endif riscv_fill_hwcap(); } |