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 - 0x600		E820MAP
0x600 - 0x7ff		EDDBUF (edd.S) for disk signature read sector
0x600 - 0x7eb		EDDBUF (edd.S) for edd data
