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