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
				5 for ELILO
				7 for GRuB
				8 for U-BOOT
				9 for Xen
				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
