|  | Summary of boot_params layout (kernel point of view) | 
|  | ( collected by Hans Lermen and Martin Mares ) | 
|  |  | 
|  | The contents of boot_params are used to pass parameters from the | 
|  | 16-bit realmode code of the kernel to the 32-bit part. References/settings | 
|  | to it mainly are in: | 
|  |  | 
|  | arch/i386/boot/setup.S | 
|  | arch/i386/boot/video.S | 
|  | arch/i386/kernel/head.S | 
|  | arch/i386/kernel/setup.c | 
|  |  | 
|  |  | 
|  | Offset	Type		Description | 
|  | ------  ----		----------- | 
|  | 0	32 bytes	struct screen_info, SCREEN_INFO | 
|  | ATTENTION, overlaps the following !!! | 
|  | 2	unsigned short	EXT_MEM_K, extended memory size in Kb (from int 0x15) | 
|  | 0x20	unsigned short	CL_MAGIC, commandline magic number (=0xA33F) | 
|  | 0x22	unsigned short	CL_OFFSET, commandline offset | 
|  | Address of commandline is calculated: | 
|  | 0x90000 + contents of CL_OFFSET | 
|  | (only taken, when CL_MAGIC = 0xA33F) | 
|  | 0x40	20 bytes	struct apm_bios_info, APM_BIOS_INFO | 
|  | 0x60	16 bytes	Intel SpeedStep (IST) BIOS support information | 
|  | 0x80	16 bytes	hd0-disk-parameter from intvector 0x41 | 
|  | 0x90	16 bytes	hd1-disk-parameter from intvector 0x46 | 
|  |  | 
|  | 0xa0	16 bytes	System description table truncated to 16 bytes. | 
|  | ( struct sys_desc_table_struct ) | 
|  | 0xb0 - 0x13f		Free. Add more parameters here if you really need them. | 
|  | 0x140- 0x1be		EDID_INFO Video mode setup | 
|  |  | 
|  | 0x1c4	unsigned long	EFI system table pointer | 
|  | 0x1c8	unsigned long	EFI memory descriptor size | 
|  | 0x1cc	unsigned long	EFI memory descriptor version | 
|  | 0x1d0	unsigned long	EFI memory descriptor map pointer | 
|  | 0x1d4	unsigned long	EFI memory descriptor map size | 
|  | 0x1e0	unsigned long	ALT_MEM_K, alternative mem check, in Kb | 
|  | 0x1e8	char		number of entries in E820MAP (below) | 
|  | 0x1e9	unsigned char	number of entries in EDDBUF (below) | 
|  | 0x1ea	unsigned char	number of entries in EDD_MBR_SIG_BUFFER (below) | 
|  | 0x1f1	char		size of setup.S, number of sectors | 
|  | 0x1f2	unsigned short	MOUNT_ROOT_RDONLY (if !=0) | 
|  | 0x1f4	unsigned short	size of compressed kernel-part in the | 
|  | (b)zImage-file (in 16 byte units, rounded up) | 
|  | 0x1f6	unsigned short	swap_dev (unused AFAIK) | 
|  | 0x1f8	unsigned short	RAMDISK_FLAGS | 
|  | 0x1fa	unsigned short	VGA-Mode (old one) | 
|  | 0x1fc	unsigned short	ORIG_ROOT_DEV (high=Major, low=minor) | 
|  | 0x1ff	char		AUX_DEVICE_INFO | 
|  |  | 
|  | 0x200	short jump to start of setup code aka "reserved" field. | 
|  | 0x202	4 bytes		Signature for SETUP-header, ="HdrS" | 
|  | 0x206	unsigned short	Version number of header format | 
|  | Current version is 0x0201... | 
|  | 0x208	8 bytes		(used by setup.S for communication with boot loaders, | 
|  | look there) | 
|  | 0x210	char		LOADER_TYPE, = 0, old one | 
|  | else it is set by the loader: | 
|  | 0xTV: T=0 for LILO | 
|  | 1 for Loadlin | 
|  | 2 for bootsect-loader | 
|  | 3 for SYSLINUX | 
|  | 4 for ETHERBOOT | 
|  | V = version | 
|  | 0x211	char		loadflags: | 
|  | bit0 = 1: kernel is loaded high (bzImage) | 
|  | bit7 = 1: Heap and pointer (see below) set by boot | 
|  | loader. | 
|  | 0x212	unsigned short	(setup.S) | 
|  | 0x214	unsigned long	KERNEL_START, where the loader started the kernel | 
|  | 0x218	unsigned long	INITRD_START, address of loaded ramdisk image | 
|  | 0x21c	unsigned long	INITRD_SIZE, size in bytes of ramdisk image | 
|  | 0x220	4 bytes		(setup.S) | 
|  | 0x224	unsigned short	setup.S heap end pointer | 
|  | 0x226   unsigned short	zero_pad | 
|  | 0x228   unsigned long	cmd_line_ptr | 
|  | 0x22c   unsigned long	ramdisk_max | 
|  | 0x230   16 bytes 	trampoline | 
|  | 0x290 - 0x2cf		EDD_MBR_SIG_BUFFER (edd.S) | 
|  | 0x2d0 - 0xd00		E820MAP | 
|  | 0xd00 - 0xeff		EDDBUF (edd.S) for disk signature read sector | 
|  | 0xd00 - 0xeeb		EDDBUF (edd.S) for edd data |