Messages in this thread | | | Date | Sun, 31 May 1998 23:37:58 +0200 (MEST) | From | Hans Lermen <> | Subject | Re: empty_zero_page+setup on intel? |
| |
On Sat, 30 May 1998, Martin Mares wrote:
> Hi,
ReHi,
> > > Ok, in order to not do the work twice, I'll append a summary, that should > > perhaps go some where under linux/Documents. > > That's exactly I was going to do... ;-) [well, at least for one year...]
Good, so we agree;-) Could you please manage to pass it to the right places while submitting the related patches (else the below summary won't match)
Here the re-worked version (assuming your patches will be applied):
------------------------------------------------------------------- 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 18 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 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 - 0x7ff setup.S code.
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 )
Hans <lermen@fgan.de>
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |