zero-page.txt
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
- Summary of empty_zero_page layout (kernel point of view)
- ( collected by Hans Lermen and Martin Mares )
-
- The contents of empty_zero_page 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
- 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 - 0x1df Free. Add more parameters here if you really need them.
- 0x1e0 unsigned long ALT_MEM_K, alternative mem check, in Kb
- 0x1e8 char number of entries in E820MAP (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
- 0x2d0 - 0x600 E820MAP
- 0x800 string, 2K max COMMAND_LINE, the kernel commandline as
- copied using CL_OFFSET.
- Note: this will be copied once more by setup.c
- into a local buffer which is only 256 bytes long.
- ( #define COMMAND_LINE_SIZE 256 )