Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | /* SPDX-License-Identifier: GPL-2.0 */ #ifndef BOOT_COMPRESSED_MISC_H #define BOOT_COMPRESSED_MISC_H /* * Special hack: we have to be careful, because no indirections are allowed here, * and paravirt_ops is a kind of one. As it will only run in baremetal anyway, * we just keep it from happening. (This list needs to be extended when new * paravirt and debugging variants are added.) */ #undef CONFIG_PARAVIRT #undef CONFIG_PARAVIRT_XXL #undef CONFIG_PARAVIRT_SPINLOCKS #undef CONFIG_KASAN /* cpu_feature_enabled() cannot be used this early */ #define USE_EARLY_PGTABLE_L5 #include <linux/linkage.h> #include <linux/screen_info.h> #include <linux/elf.h> #include <linux/io.h> #include <asm/page.h> #include <asm/boot.h> #include <asm/bootparam.h> #define BOOT_CTYPE_H #include <linux/acpi.h> #define BOOT_BOOT_H #include "../ctype.h" #ifdef CONFIG_X86_64 #define memptr long #else #define memptr unsigned #endif /* misc.c */ extern memptr free_mem_ptr; extern memptr free_mem_end_ptr; extern struct boot_params *boot_params; void __putstr(const char *s); void __puthex(unsigned long value); #define error_putstr(__x) __putstr(__x) #define error_puthex(__x) __puthex(__x) #ifdef CONFIG_X86_VERBOSE_BOOTUP #define debug_putstr(__x) __putstr(__x) #define debug_puthex(__x) __puthex(__x) #define debug_putaddr(__x) { \ debug_putstr(#__x ": 0x"); \ debug_puthex((unsigned long)(__x)); \ debug_putstr("\n"); \ } #else static inline void debug_putstr(const char *s) { } static inline void debug_puthex(const char *s) { } #define debug_putaddr(x) /* */ #endif /* cmdline.c */ int cmdline_find_option(const char *option, char *buffer, int bufsize); int cmdline_find_option_bool(const char *option); struct mem_vector { unsigned long long start; unsigned long long size; }; #if CONFIG_RANDOMIZE_BASE /* kaslr.c */ void choose_random_location(unsigned long input, unsigned long input_size, unsigned long *output, unsigned long output_size, unsigned long *virt_addr); /* cpuflags.c */ bool has_cpuflag(int flag); #else static inline void choose_random_location(unsigned long input, unsigned long input_size, unsigned long *output, unsigned long output_size, unsigned long *virt_addr) { } #endif #ifdef CONFIG_X86_64 void initialize_identity_maps(void); void add_identity_map(unsigned long start, unsigned long size); void finalize_identity_maps(void); extern unsigned char _pgtable[]; #else static inline void initialize_identity_maps(void) { } static inline void add_identity_map(unsigned long start, unsigned long size) { } static inline void finalize_identity_maps(void) { } #endif #ifdef CONFIG_EARLY_PRINTK /* early_serial_console.c */ extern int early_serial_base; void console_init(void); #else static const int early_serial_base; static inline void console_init(void) { } #endif void set_sev_encryption_mask(void); /* acpi.c */ #ifdef CONFIG_ACPI acpi_physical_address get_rsdp_addr(void); #else static inline acpi_physical_address get_rsdp_addr(void) { return 0; } #endif #if defined(CONFIG_RANDOMIZE_BASE) && defined(CONFIG_MEMORY_HOTREMOVE) && defined(CONFIG_ACPI) extern struct mem_vector immovable_mem[MAX_NUMNODES*2]; int count_immovable_mem_regions(void); #else static inline int count_immovable_mem_regions(void) { return 0; } #endif #endif /* BOOT_COMPRESSED_MISC_H */ |