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