/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2020-2022 Loongson Technology Corporation Limited */ #ifndef _ASM_BOOTINFO_H #define _ASM_BOOTINFO_H #include #include const char *get_system_type(void); extern void init_environ(void); extern void memblock_init(void); extern void platform_init(void); extern int __init init_numa_memory(void); struct loongson_board_info { int bios_size; const char *bios_vendor; const char *bios_version; const char *bios_release_date; const char *board_name; const char *board_vendor; }; #define NR_WORDS DIV_ROUND_UP(NR_CPUS, BITS_PER_LONG) /* * The "core" of cores_per_node and cores_per_package stands for a * logical core, which means in a SMT system it stands for a thread. */ struct loongson_system_configuration { int nr_cpus; int nr_nodes; int boot_cpu_id; int cores_per_node; int cores_per_package; unsigned long cores_io_master[NR_WORDS]; unsigned long suspend_addr; const char *cpuname; }; extern u64 efi_system_table; extern unsigned long fw_arg0, fw_arg1, fw_arg2; extern struct loongson_board_info b_info; extern struct loongson_system_configuration loongson_sysconf; static inline bool io_master(int cpu) { return test_bit(cpu, loongson_sysconf.cores_io_master); } #endif /* _ASM_BOOTINFO_H */