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_SPINLOCKS 13 #undef CONFIG_KASAN 14 15 #include <linux/linkage.h> 16 #include <linux/screen_info.h> 17 #include <linux/elf.h> 18 #include <linux/io.h> 19 #include <asm/page.h> 20 #include <asm/boot.h> 21 #include <asm/bootparam.h> 22 #include <asm/bootparam_utils.h> 23 24 #define BOOT_BOOT_H 25 #include "../ctype.h" 26 27 #ifdef CONFIG_X86_64 28 #define memptr long 29 #else 30 #define memptr unsigned 31 #endif 32 33 /* misc.c */ 34 extern memptr free_mem_ptr; 35 extern memptr free_mem_end_ptr; 36 extern struct boot_params *boot_params; 37 void __putstr(const char *s); 38 void __puthex(unsigned long value); 39 #define error_putstr(__x) __putstr(__x) 40 #define error_puthex(__x) __puthex(__x) 41 42 #ifdef CONFIG_X86_VERBOSE_BOOTUP 43 44 #define debug_putstr(__x) __putstr(__x) 45 #define debug_puthex(__x) __puthex(__x) 46 #define debug_putaddr(__x) { \ 47 debug_putstr(#__x ": 0x"); \ 48 debug_puthex((unsigned long)(__x)); \ 49 debug_putstr("\n"); \ 50 } 51 52 #else 53 54 static inline void debug_putstr(const char *s) 55 { } 56 static inline void debug_puthex(const char *s) 57 { } 58 #define debug_putaddr(x) /* */ 59 60 #endif 61 62 #if CONFIG_EARLY_PRINTK || CONFIG_RANDOMIZE_BASE 63 /* cmdline.c */ 64 int cmdline_find_option(const char *option, char *buffer, int bufsize); 65 int cmdline_find_option_bool(const char *option); 66 #endif 67 68 69 #if CONFIG_RANDOMIZE_BASE 70 /* kaslr.c */ 71 void choose_random_location(unsigned long input, 72 unsigned long input_size, 73 unsigned long *output, 74 unsigned long output_size, 75 unsigned long *virt_addr); 76 /* cpuflags.c */ 77 bool has_cpuflag(int flag); 78 #else 79 static inline void choose_random_location(unsigned long input, 80 unsigned long input_size, 81 unsigned long *output, 82 unsigned long output_size, 83 unsigned long *virt_addr) 84 { 85 } 86 #endif 87 88 #ifdef CONFIG_X86_64 89 void initialize_identity_maps(void); 90 void add_identity_map(unsigned long start, unsigned long size); 91 void finalize_identity_maps(void); 92 extern unsigned char _pgtable[]; 93 #else 94 static inline void initialize_identity_maps(void) 95 { } 96 static inline void add_identity_map(unsigned long start, unsigned long size) 97 { } 98 static inline void finalize_identity_maps(void) 99 { } 100 #endif 101 102 #ifdef CONFIG_EARLY_PRINTK 103 /* early_serial_console.c */ 104 extern int early_serial_base; 105 void console_init(void); 106 #else 107 static const int early_serial_base; 108 static inline void console_init(void) 109 { } 110 #endif 111 112 unsigned long get_sev_encryption_mask(void); 113 114 #endif 115