xref: /openbmc/linux/arch/s390/boot/boot.h (revision bf64f051)
18f75582aSVasily Gorbik /* SPDX-License-Identifier: GPL-2.0 */
28f75582aSVasily Gorbik #ifndef BOOT_BOOT_H
38f75582aSVasily Gorbik #define BOOT_BOOT_H
48f75582aSVasily Gorbik 
5256d78d0SAlexander Egorenkov #include <linux/types.h>
69a78c70aSVasily Gorbik 
7834979c2SHeiko Carstens #define IPL_START	0x200
8834979c2SHeiko Carstens 
9834979c2SHeiko Carstens #ifndef __ASSEMBLY__
10834979c2SHeiko Carstens 
11bd50b743SAlexander Gordeev struct machine_info {
12bd50b743SAlexander Gordeev 	unsigned char has_edat1 : 1;
13bd50b743SAlexander Gordeev 	unsigned char has_edat2 : 1;
14bd50b743SAlexander Gordeev 	unsigned char has_nx : 1;
15bd50b743SAlexander Gordeev };
16bd50b743SAlexander Gordeev 
179c3205b2SAlexander Gordeev struct vmlinux_info {
189c3205b2SAlexander Gordeev 	unsigned long default_lma;
19bb1520d5SAlexander Gordeev 	unsigned long entry;
209c3205b2SAlexander Gordeev 	unsigned long image_size;	/* does not include .bss */
219c3205b2SAlexander Gordeev 	unsigned long bss_size;		/* uncompressed image .bss size */
229c3205b2SAlexander Gordeev 	unsigned long bootdata_off;
239c3205b2SAlexander Gordeev 	unsigned long bootdata_size;
249c3205b2SAlexander Gordeev 	unsigned long bootdata_preserved_off;
259c3205b2SAlexander Gordeev 	unsigned long bootdata_preserved_size;
269c3205b2SAlexander Gordeev 	unsigned long dynsym_start;
279c3205b2SAlexander Gordeev 	unsigned long rela_dyn_start;
289c3205b2SAlexander Gordeev 	unsigned long rela_dyn_end;
299c3205b2SAlexander Gordeev 	unsigned long amode31_size;
30bb1520d5SAlexander Gordeev 	unsigned long init_mm_off;
31bb1520d5SAlexander Gordeev 	unsigned long swapper_pg_dir_off;
32bb1520d5SAlexander Gordeev 	unsigned long invalid_pg_dir_off;
339c3205b2SAlexander Gordeev };
349c3205b2SAlexander Gordeev 
358f75582aSVasily Gorbik void startup_kernel(void);
3622476f47SVasily Gorbik unsigned long detect_memory(unsigned long *safe_addr);
37*bf64f051SVasily Gorbik void mem_detect_truncate(unsigned long limit);
3873045a08SVasily Gorbik bool is_ipl_block_dump(void);
3949698745SVasily Gorbik void store_ipl_parmblock(void);
4022476f47SVasily Gorbik unsigned long read_ipl_report(unsigned long safe_addr);
4149698745SVasily Gorbik void setup_boot_command_line(void);
42b5e80459SVasily Gorbik void parse_boot_command_line(void);
43868202ceSVasily Gorbik void verify_facilities(void);
446d85dac2SVasily Gorbik void print_missing_facilities(void);
45f1d3c532SAlexander Egorenkov void sclp_early_setup_buffer(void);
46724dc336SVasily Gorbik void print_pgm_check_info(void);
47b2d24b97SGerald Schaefer unsigned long get_random_base(unsigned long safe_addr);
48*bf64f051SVasily Gorbik void setup_vmem(unsigned long asce_limit);
499a78c70aSVasily Gorbik void __printf(1, 2) decompressor_printk(const char *fmt, ...);
509c3205b2SAlexander Gordeev void error(char *m);
51b2d24b97SGerald Schaefer 
52bd50b743SAlexander Gordeev extern struct machine_info machine;
53bd50b743SAlexander Gordeev 
547fadcc07SAlexander Egorenkov /* Symbols defined by linker scripts */
556abe2819SVasily Gorbik extern const char kernel_version[];
5673045a08SVasily Gorbik extern unsigned long memory_limit;
570c4f2623SVasily Gorbik extern unsigned long vmalloc_size;
5873045a08SVasily Gorbik extern int vmalloc_size_set;
5973045a08SVasily Gorbik extern int kaslr_enabled;
607fadcc07SAlexander Egorenkov extern char __boot_data_start[], __boot_data_end[];
617fadcc07SAlexander Egorenkov extern char __boot_data_preserved_start[], __boot_data_preserved_end[];
627fadcc07SAlexander Egorenkov extern char _decompressor_syms_start[], _decompressor_syms_end[];
63256d78d0SAlexander Egorenkov extern char _stack_start[], _stack_end[];
649c3205b2SAlexander Gordeev extern char _end[];
659c3205b2SAlexander Gordeev extern unsigned char _compressed_start[];
669c3205b2SAlexander Gordeev extern unsigned char _compressed_end[];
679c3205b2SAlexander Gordeev extern struct vmlinux_info _vmlinux_info;
689c3205b2SAlexander Gordeev #define vmlinux _vmlinux_info
699641b8ccSMartin Schwidefsky 
702154e0b3SAlexander Gordeev #define __abs_lowcore_pa(x)	(((unsigned long)(x) - __abs_lowcore) % sizeof(struct lowcore))
712154e0b3SAlexander Gordeev 
72834979c2SHeiko Carstens #endif /* __ASSEMBLY__ */
738f75582aSVasily Gorbik #endif /* BOOT_BOOT_H */
74