/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_X86_BOOTPARAM_H #define _ASM_X86_BOOTPARAM_H #include <asm/setup_data.h> /* ram_size flags */ #define RAMDISK_IMAGE_START_MASK … #define RAMDISK_PROMPT_FLAG … #define RAMDISK_LOAD_FLAG … /* loadflags */ #define LOADED_HIGH … #define KASLR_FLAG … #define QUIET_FLAG … #define KEEP_SEGMENTS … #define CAN_USE_HEAP … /* xloadflags */ #define XLF_KERNEL_64 … #define XLF_CAN_BE_LOADED_ABOVE_4G … #define XLF_EFI_HANDOVER_32 … #define XLF_EFI_HANDOVER_64 … #define XLF_EFI_KEXEC … #define XLF_5LEVEL … #define XLF_5LEVEL_ENABLED … #define XLF_MEM_ENCRYPTION … #ifndef __ASSEMBLY__ #include <linux/types.h> #include <linux/screen_info.h> #include <linux/apm_bios.h> #include <linux/edd.h> #include <asm/ist.h> #include <video/edid.h> struct setup_header { … } __attribute__((packed)); struct sys_desc_table { … }; /* Gleaned from OFW's set-parameters in cpu/x86/pc/linux.fth */ struct olpc_ofw_header { … } __attribute__((packed)); struct efi_info { … }; /* * This is the maximum number of entries in struct boot_params::e820_table * (the zeropage), which is part of the x86 boot protocol ABI: */ #define E820_MAX_ENTRIES_ZEROPAGE … /* * Smallest compatible version of jailhouse_setup_data required by this kernel. */ #define JAILHOUSE_SETUP_REQUIRED_VERSION … /* The so-called "zeropage" */ struct boot_params { … } __attribute__((packed)); /** * enum x86_hardware_subarch - x86 hardware subarchitecture * * The x86 hardware_subarch and hardware_subarch_data were added as of the x86 * boot protocol 2.07 to help distinguish and support custom x86 boot * sequences. This enum represents accepted values for the x86 * hardware_subarch. Custom x86 boot sequences (not X86_SUBARCH_PC) do not * have or simply *cannot* make use of natural stubs like BIOS or EFI, the * hardware_subarch can be used on the Linux entry path to revector to a * subarchitecture stub when needed. This subarchitecture stub can be used to * set up Linux boot parameters or for special care to account for nonstandard * handling of page tables. * * These enums should only ever be used by x86 code, and the code that uses * it should be well contained and compartmentalized. * * KVM and Xen HVM do not have a subarch as these are expected to follow * standard x86 boot entries. If there is a genuine need for "hypervisor" type * that should be considered separately in the future. Future guest types * should seriously consider working with standard x86 boot stubs such as * the BIOS or EFI boot stubs. * * WARNING: this enum is only used for legacy hacks, for platform features that * are not easily enumerated or discoverable. You should not ever use * this for new features. * * @X86_SUBARCH_PC: Should be used if the hardware is enumerable using standard * PC mechanisms (PCI, ACPI) and doesn't need a special boot flow. * @X86_SUBARCH_LGUEST: Used for x86 hypervisor demo, lguest, deprecated * @X86_SUBARCH_XEN: Used for Xen guest types which follow the PV boot path, * which start at asm startup_xen() entry point and later jump to the C * xen_start_kernel() entry point. Both domU and dom0 type of guests are * currently supported through this PV boot path. * @X86_SUBARCH_INTEL_MID: Used for Intel MID (Mobile Internet Device) platform * systems which do not have the PCI legacy interfaces. * @X86_SUBARCH_CE4100: Used for Intel CE media processor (CE4100) SoC * for settop boxes and media devices, the use of a subarch for CE4100 * is more of a hack... */ enum x86_hardware_subarch { … }; #endif /* __ASSEMBLY__ */ #endif /* _ASM_X86_BOOTPARAM_H */