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