18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef BOOT_COMPRESSED_DECOMPRESSOR_H
38c2ecf20Sopenharmony_ci#define BOOT_COMPRESSED_DECOMPRESSOR_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#ifdef CONFIG_KERNEL_UNCOMPRESSED
68c2ecf20Sopenharmony_cistatic inline void *decompress_kernel(void) {}
78c2ecf20Sopenharmony_ci#else
88c2ecf20Sopenharmony_civoid *decompress_kernel(void);
98c2ecf20Sopenharmony_ci#endif
108c2ecf20Sopenharmony_ciunsigned long mem_safe_offset(void);
118c2ecf20Sopenharmony_civoid error(char *m);
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cistruct vmlinux_info {
148c2ecf20Sopenharmony_ci	unsigned long default_lma;
158c2ecf20Sopenharmony_ci	void (*entry)(void);
168c2ecf20Sopenharmony_ci	unsigned long image_size;	/* does not include .bss */
178c2ecf20Sopenharmony_ci	unsigned long bss_size;		/* uncompressed image .bss size */
188c2ecf20Sopenharmony_ci	unsigned long bootdata_off;
198c2ecf20Sopenharmony_ci	unsigned long bootdata_size;
208c2ecf20Sopenharmony_ci	unsigned long bootdata_preserved_off;
218c2ecf20Sopenharmony_ci	unsigned long bootdata_preserved_size;
228c2ecf20Sopenharmony_ci	unsigned long dynsym_start;
238c2ecf20Sopenharmony_ci	unsigned long rela_dyn_start;
248c2ecf20Sopenharmony_ci	unsigned long rela_dyn_end;
258c2ecf20Sopenharmony_ci};
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ciextern char _vmlinux_info[];
288c2ecf20Sopenharmony_ci#define vmlinux (*(struct vmlinux_info *)_vmlinux_info)
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci#endif /* BOOT_COMPRESSED_DECOMPRESSOR_H */
31