Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | Summary of boot_params layout (kernel point of view) |
2 | ( collected by Hans Lermen and Martin Mares ) | |
3 | ||
4 | The contents of boot_params are used to pass parameters from the | |
5 | 16-bit realmode code of the kernel to the 32-bit part. References/settings | |
6 | to it mainly are in: | |
7 | ||
8 | arch/i386/boot/setup.S | |
9 | arch/i386/boot/video.S | |
10 | arch/i386/kernel/head.S | |
11 | arch/i386/kernel/setup.c | |
12 | ||
13 | ||
14 | Offset Type Description | |
15 | ------ ---- ----------- | |
16 | 0 32 bytes struct screen_info, SCREEN_INFO | |
17 | ATTENTION, overlaps the following !!! | |
18 | 2 unsigned short EXT_MEM_K, extended memory size in Kb (from int 0x15) | |
19 | 0x20 unsigned short CL_MAGIC, commandline magic number (=0xA33F) | |
20 | 0x22 unsigned short CL_OFFSET, commandline offset | |
21 | Address of commandline is calculated: | |
22 | 0x90000 + contents of CL_OFFSET | |
23 | (only taken, when CL_MAGIC = 0xA33F) | |
24 | 0x40 20 bytes struct apm_bios_info, APM_BIOS_INFO | |
25 | 0x60 16 bytes Intel SpeedStep (IST) BIOS support information | |
26 | 0x80 16 bytes hd0-disk-parameter from intvector 0x41 | |
27 | 0x90 16 bytes hd1-disk-parameter from intvector 0x46 | |
28 | ||
29 | 0xa0 16 bytes System description table truncated to 16 bytes. | |
30 | ( struct sys_desc_table_struct ) | |
31 | 0xb0 - 0x13f Free. Add more parameters here if you really need them. | |
32 | 0x140- 0x1be EDID_INFO Video mode setup | |
33 | ||
34 | 0x1c4 unsigned long EFI system table pointer | |
35 | 0x1c8 unsigned long EFI memory descriptor size | |
36 | 0x1cc unsigned long EFI memory descriptor version | |
37 | 0x1d0 unsigned long EFI memory descriptor map pointer | |
38 | 0x1d4 unsigned long EFI memory descriptor map size | |
39 | 0x1e0 unsigned long ALT_MEM_K, alternative mem check, in Kb | |
40 | 0x1e8 char number of entries in E820MAP (below) | |
41 | 0x1e9 unsigned char number of entries in EDDBUF (below) | |
42 | 0x1ea unsigned char number of entries in EDD_MBR_SIG_BUFFER (below) | |
43 | 0x1f1 char size of setup.S, number of sectors | |
44 | 0x1f2 unsigned short MOUNT_ROOT_RDONLY (if !=0) | |
45 | 0x1f4 unsigned short size of compressed kernel-part in the | |
46 | (b)zImage-file (in 16 byte units, rounded up) | |
47 | 0x1f6 unsigned short swap_dev (unused AFAIK) | |
48 | 0x1f8 unsigned short RAMDISK_FLAGS | |
49 | 0x1fa unsigned short VGA-Mode (old one) | |
50 | 0x1fc unsigned short ORIG_ROOT_DEV (high=Major, low=minor) | |
51 | 0x1ff char AUX_DEVICE_INFO | |
52 | ||
53 | 0x200 short jump to start of setup code aka "reserved" field. | |
54 | 0x202 4 bytes Signature for SETUP-header, ="HdrS" | |
55 | 0x206 unsigned short Version number of header format | |
56 | Current version is 0x0201... | |
57 | 0x208 8 bytes (used by setup.S for communication with boot loaders, | |
58 | look there) | |
59 | 0x210 char LOADER_TYPE, = 0, old one | |
60 | else it is set by the loader: | |
61 | 0xTV: T=0 for LILO | |
62 | 1 for Loadlin | |
63 | 2 for bootsect-loader | |
64 | 3 for SYSLINUX | |
65 | 4 for ETHERBOOT | |
66 | V = version | |
67 | 0x211 char loadflags: | |
68 | bit0 = 1: kernel is loaded high (bzImage) | |
69 | bit7 = 1: Heap and pointer (see below) set by boot | |
70 | loader. | |
71 | 0x212 unsigned short (setup.S) | |
72 | 0x214 unsigned long KERNEL_START, where the loader started the kernel | |
73 | 0x218 unsigned long INITRD_START, address of loaded ramdisk image | |
74 | 0x21c unsigned long INITRD_SIZE, size in bytes of ramdisk image | |
75 | 0x220 4 bytes (setup.S) | |
76 | 0x224 unsigned short setup.S heap end pointer | |
77 | 0x226 unsigned short zero_pad | |
78 | 0x228 unsigned long cmd_line_ptr | |
79 | 0x22c unsigned long ramdisk_max | |
80 | 0x230 16 bytes trampoline | |
81 | 0x290 - 0x2cf EDD_MBR_SIG_BUFFER (edd.S) | |
f9ba7053 VP |
82 | 0x2d0 - 0xd00 E820MAP |
83 | 0xd00 - 0xeff EDDBUF (edd.S) for disk signature read sector | |
84 | 0xd00 - 0xeeb EDDBUF (edd.S) for edd data |