1 Summary of empty_zero_page layout (kernel point of view)
2 ( collected by Hans Lermen and Martin Mares )
4 The contents of empty_zero_page are used to pass parameters from the
5 16-bit realmode code of the kernel to the 32-bit part. References/settings
10 arch/i386/kernel/head.S
11 arch/i386/kernel/setup.c
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 0x80 16 bytes hd0-disk-parameter from intvector 0x41
26 0x90 16 bytes hd1-disk-parameter from intvector 0x46
28 0xa0 16 bytes System description table truncated to 16 bytes.
29 ( struct sys_desc_table_struct )
30 0xb0 - 0x1df Free. Add more parameters here if you really need them.
32 0x1e0 unsigned long ALT_MEM_K, alternative mem check, in Kb
33 0x1e8 char number of entries in E820MAP (below)
34 0x1f1 char size of setup.S, number of sectors
35 0x1f2 unsigned short MOUNT_ROOT_RDONLY (if !=0)
36 0x1f4 unsigned short size of compressed kernel-part in the
37 (b)zImage-file (in 16 byte units, rounded up)
38 0x1f6 unsigned short swap_dev (unused AFAIK)
39 0x1f8 unsigned short RAMDISK_FLAGS
40 0x1fa unsigned short VGA-Mode (old one)
41 0x1fc unsigned short ORIG_ROOT_DEV (high=Major, low=minor)
42 0x1ff char AUX_DEVICE_INFO
44 0x200 short jump to start of setup code aka "reserved" field.
45 0x202 4 bytes Signature for SETUP-header, ="HdrS"
46 0x206 unsigned short Version number of header format
47 Current version is 0x0201...
48 0x208 8 bytes (used by setup.S for communication with boot loaders,
50 0x210 char LOADER_TYPE, = 0, old one
51 else it is set by the loader:
59 bit0 = 1: kernel is loaded high (bzImage)
60 bit7 = 1: Heap and pointer (see below) set by boot
62 0x212 unsigned short (setup.S)
63 0x214 unsigned long KERNEL_START, where the loader started the kernel
64 0x218 unsigned long INITRD_START, address of loaded ramdisk image
65 0x21c unsigned long INITRD_SIZE, size in bytes of ramdisk image
66 0x220 4 bytes (setup.S)
67 0x224 unsigned short setup.S heap end pointer
70 0x800 string, 2K max COMMAND_LINE, the kernel commandline as
71 copied using CL_OFFSET.
72 Note: this will be copied once more by setup.c
73 into a local buffer which is only 256 bytes long.
74 ( #define COMMAND_LINE_SIZE 256 )