clean
[linux-2.4.21-pre4.git] / Documentation / i386 / zero-page.txt
1 Summary of empty_zero_page layout (kernel point of view)
2      ( collected by Hans Lermen and Martin Mares )
3  
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
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  0x80   16 bytes        hd0-disk-parameter from intvector 0x41
26  0x90   16 bytes        hd1-disk-parameter from intvector 0x46
27
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.
31
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
43
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,
49                          look there)
50 0x210   char            LOADER_TYPE, = 0, old one
51                         else it is set by the loader:
52                         0xTV: T=0 for LILO
53                                 1 for Loadlin
54                                 2 for bootsect-loader
55                                 3 for SYSLINUX
56                                 4 for ETHERBOOT
57                                 V = version
58 0x211   char            loadflags:
59                         bit0 = 1: kernel is loaded high (bzImage)
60                         bit7 = 1: Heap and pointer (see below) set by boot
61                                   loader.
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
68 0x2d0 - 0x600           E820MAP
69
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 )