Update debian/copyright file
[rrq/maintain_lilo.git] / src / lilo.h
1 /* lilo.h  -  LILO constants
2  * 
3  * Copyright 1992-1998 Werner Almesberger
4  * Copyright 1999-2006 John Coffman
5  * Copyright 2009-2013 Joachim Wiedorn
6  * All rights reserved.
7  * 
8  * Licensed under the terms contained in the file 'COPYING'
9  * in the source directory.
10  */
11
12 /* This file is also included by the boot loader assembler code. Put
13    everything that isn't legal C syntax or isn't swallowed by the
14    preprocessor into #ifdef LILO_ASM ... #endif */
15
16 #ifndef LILO_H
17 #define LILO_H
18
19 #if !__MSDOS__
20 #define INT4 int
21 #else
22 #define INT4 long
23 #endif /* !__MSDOS__ */
24
25 /* This is the stuff to check the configuration:
26  */
27 #if defined(LCF_READONLY) && defined(LCF_REWRITE_TABLE)
28 #error "Incompatible Makefile options: READONLY and REWRITE_TABLE"
29 #endif
30 #ifdef LCF_LARGE_EBDA
31 #error "Configuration option '-DLARGE_EBDA' is deprecated"
32 #endif
33
34 /*
35  * Starting with 2.1.something, Linux kernels put VGA constants and segment
36  * definitions into asm/boot.h instead of linux/config.h
37  */
38
39 #if 0
40
41 #ifdef HAS_BOOT_H
42 #include <asm/boot.h>
43 #else
44 #include <linux/config.h>
45 #endif
46
47 #else
48
49 /* Don't touch these, unless you really know what you're doing. */
50 #define DEF_INITSEG     0x9000
51 #define DEF_SYSSEG      0x1000
52 #define DEF_SETUPSEG    0x9020
53 #define DEF_SYSSIZE     0x7F00
54
55 /* Internal svga startup constants */
56 #define NORMAL_VGA      0xffff          /* 80x25 mode */
57 #define EXTENDED_VGA    0xfffe          /* 80x50 mode */
58 #define ASK_VGA         0xfffd          /* ask for it at bootup */
59
60 #endif
61
62 #if defined(HAS_VERSION_H) && !__MSDOS__
63 #include <linux/version.h>
64 #endif /* !__MSDOS__ */
65
66 #ifndef LINUX_VERSION_CODE
67 #define LINUX_VERSION_CODE 0
68 #endif
69 #ifndef KERNEL_VERSION
70 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
71 #endif
72
73 #define nelem(a) (sizeof(a)/sizeof((a)[0]))
74 #define S2(x) #x
75 #define SA(x) S2(x)
76
77 #include "version.h"
78 #define VERSION 256*VERSION_MINOR+VERSION_MAJOR
79 #if VERSION_MINOR >= 50
80 # define BETA_TEST 1
81 #else
82 # define BETA_TEST 0
83 #endif
84
85 /* definitions for pf_hard_disk_scan in device.c  */
86 #ifdef DEBUG_PARTITIONS
87 #define PARTITIONS "./devfs_partitions"
88 #else
89 #define PARTITIONS "/proc/partitions"
90 #endif
91
92
93 /* the known major device numbers */
94 #define MAJMIN_RAM      0x101 /* RAM disk */
95 #ifdef LCF_MDPRAID
96 #define MAJOR_MDP_SORT  1 /* Convert MAJOR_MDP to this for sorting */
97 #endif
98 #define MAJOR_EMD_SORT  2 /* Convert MAJOR_EMD to this for sorting */
99 #define MAJOR_HPT370_SORT  2 /* Convert MAJOR_HPT370 to this for sorting */
100 #define MAJOR_FD        2 /* floppy disks */
101 #define MAJOR_HD        3 /* IDE-type hard disks */
102 #define MAJOR_LOOP      7 /* Loopback devices 0-15 */
103 #define MAJOR_SD        8 /* SCSI disks 0-15 */
104 #define MAJOR_MD        9 /* multi-disk RAID sets */
105 #define MAJOR_XT        13 /* XT-type hard disks */
106 #define MAJOR_ACORN     21 /* Acorn MFM controller */
107 #define MAJOR_IDE2      22 /* IDE on second interface */
108 #define MAJOR_IDE3      33 /* IDE on third interface */
109 #define MAJOR_IDE4      34 /* IDE on fourth interface */
110 #define MAJOR_ESDI      36 /* PS/2 ESDI drives */
111 #define MAJOR_FTL       44 /* Flash Transition Layer on Memory Technology Device */
112 #define MAJOR_PP        45 /* Parallel Port IDE drive */
113 #define MAJOR_PPFD      47 /* Parallel Port floppy drive */
114 #define MAJOR_DAC960    48 /* First Mylex DAC960 PCI RAID controller */
115 #if !BETA_TEST || 1
116 #define MAJOR_IDE5      56 /* IDE on fifth interface */
117 #endif
118 #define MAJOR_IDE6      57 /* IDE on sixth interface */
119 #define MAJOR_LVM       58 /* Logical Volume Manager block device */
120 #define MAJOR_EXPR      60 /* Experimental devices 60..63 */
121 /*#define MAJOR_FL      62 / M-Systems Disk-On-Chip 2000 ***experimental*** */
122
123 #define MAJOR_SD_SORT   64 /*** MAJOR_SD converted to this for sorting ***/
124 #define MAJOR_SD2       65 /* SCSI disks 16-31 */
125 #define MAJOR_SD3       66 /* SCSI disks 32-47 */
126 #define MAJOR_SD4       67 /* SCSI disks 48-63 */
127 #define MAJOR_SD5       68 /* SCSI disks 64-79 */
128 #define MAJOR_SD6       69 /* SCSI disks 80-95 */
129 #define MAJOR_SD7       70 /* SCSI disks 96-111 */
130 #define MAJOR_SD8       71 /* SCSI disks 112-127 */
131 #define MAJOR_SMART2    72 /* First Compaq Smart/2 Major 72-79 */
132 #define MAJOR_I2O       80  /* First I2O block device 80-87 */
133 #define MAJOR_IDE7      88 /* IDE on seventh interface */
134 #define MAJOR_IDE8      89 /* IDE on eighth interface */
135 #define MAJOR_IDE9      90 /* IDE on ninth interface */
136 #define MAJOR_IDE10     91 /* IDE on tenth interface */
137 #define MAJOR_PPDD      92 /* PPDD encrypted disks - not supported */
138 #define MAJOR_NFTL      93 /* NAND Flash Translation Layer (Disk-On-Chip) */
139 #define MAJOR_DOC       100 /* Disk-On-Chip driver */
140 #define MAJOR_AMI_HYP   101 /* AMI Hyper Disk RAID controller */
141 #define MAJOR_CISS      104 /* First CCISS Major 104-111 */
142 #define MAJOR_IBM_iSER  112 /* IBM iSeries virtual disk */
143 #define MAJOR_HPT370    114 /* HPT370 controller */
144 #define MAJOR_EVMS      117 /* Enterprise Volume Management System */
145 #define MAJOR_SD9       128 /* SCSI disks 129     */
146 #define MAJOR_SD16      135 /* SCSI disks    -255 */
147 #define MAJOR_DAC960_8  136 /* Ninth Mylex DAC960 PCI RAID controller */
148 #define MAJOR_EMD       153 /* Enhanced multi-disk RAID sets */
149 #define MAJOR_CARM1     160 /* Carmel SATA Disk on first 8-port controller */
150 #define MAJOR_CARM2     161 /* Carmel SATA Disk on 2nd 8-port controller */
151
152 /* don't use the following */
153 #define MAJOR_MDP       254 /* Enhanced multi-disk RAID sets [experimental?] */
154
155 /* high partitions (>15) on SATA hard disks */
156 #define MAJOR_SATA1     259 /* high SATA disk partitions */
157 #define MAJOR_SATA2     260 /* high SATA disk partitions */
158
159 #define MAX_TOKEN       1023 /* max device Token length */
160 #define MAX_IMAGE_NAME  15 /* maximum name length (w/o terminating NUL) */
161 #define MAX_DESCR_SECTORS  12  /* upper limit on MAX_DESCR_SECS */
162
163 #ifdef LCF_PASS160
164 #undef SHS_PASSWORDS
165 #define SHS_PASSWORDS           /* use this one if SHS passwords are in use */
166 #define MAX_PW_CRC      5       /* max # of longwords in password digest */
167 #define PW_FILE_SUFFIX ".shs"   /* suffix for the file that saves password digest */
168 #else
169 #define CRC_PASSWORDS           /* use this one if CRC passwords are in use */
170 #define MAX_PW_CRC      2       /* max # of CRC-32's in password */
171 #define PW_FILE_SUFFIX ".crc"   /* suffix for the file that saves password CRC's */
172 #endif
173
174 #ifdef LCF_DSECS
175 #define MAX_DESCR_SECS LCF_DSECS
176 #else
177 #define MAX_DESCR_SECS 2        /* maximum # of descriptor sectors */
178 #endif
179 #if MAX_DESCR_SECS > MAX_DESCR_SECTORS
180 #error "Maximum DSECS=x exceeded."
181 #endif
182 #define MAX_IMAGES      ((int)((SECTOR_SIZE*MAX_DESCR_SECS-sizeof(INT4)-1)/sizeof(IMAGE_DESCR)))
183                           /* maximum number of images */
184
185 #define COMMAND_LINE_SIZE       512     /* CL_LENGTH */
186 #define SECTOR_SIZE     512 /* disk sector size */
187 #ifndef BLOCK_SIZE /* may also come from linux/fs.h */
188 #define BLOCK_SIZE      1024 /* disk block size */
189 #endif
190
191 #define PARTITION_ENTRY    16   /* size of one partition entry */
192 #define PARTITION_ENTRIES  4    /* number of partition entries */
193 #define PART_TABLE_SIZE    (PARTITION_ENTRY*PARTITION_ENTRIES)
194 #define PART_TABLE_OFFSET  0x1be /* offset in the master boot sector */
195 #define PART_ACT_ENT_OFF   0    /* offset in entry for active flag */
196 #define PART_TYPE_ENT_OFF  4    /* offset in entry for partition type */
197
198 #define P_MASK(x) ((~has_partitions(x))&0xFFFFFFFF)
199 #define D_MASK(x) (has_partitions(x))
200 #define PART_MAX PARTITION_ENTRIES /* biggest primary partition number */
201 #define PART_MAX_MAX    63      /* max. partition number (on IDE disks) */
202
203 #define MAX_BOOT_SIZE   0x1b6   /* (leave some space for NT's and DR DOS' dirty
204                                    hacks) scream if the boot sector gets any
205                                    bigger -- (22.5 - we now use those hacks) */
206
207 #define BOOT_SIGNATURE  0xAA55  /* boot signature */
208 #define BOOT_SIG_OFFSET 510     /* boot signature offset */
209 #define MAGIC_SERIAL    0xC9CF  /* LILO installed serial number */
210 #define PRIME           271     /* prime number used for serial no generation */
211 #define SMALL_PRIME     17      /* another prime, but a small one */
212 #if VERSION_MINOR>90
213 #define MAX_BIOS_DEVICES  2     /* max hard disk devices used by BIOS */
214 #define MAX_DEVICES     4       /* max hard disk devices, total */
215 #else
216 #define MAX_BIOS_DEVICES  16    /* max hard disk devices used by BIOS */
217 #define MAX_DEVICES     64      /* max hard disk devices, total */
218 #endif
219 #define MAX_RAID        30      /* max number of RAID disks in a set */
220 #if 0
221 #define MAX_RAID_DEVICES  6     /* max raid devices reported to second.S */
222 #else
223 #define MAX_RAID_DEVICES MAX_DESCR_SECTORS-MAX_DESCR_SECS+6     /* max raid devices reported to second.S */
224 #endif
225
226 #define PART_LINUX_MINIX  0x81  /* Linux/MINIX partition */
227 #define PART_LINUX_SWAP   0x82  /* Linux swap partition */
228 #define PART_LINUX_NATIVE 0x83  /* Linux native (file system) */
229 #define PART_DOS_EXTD     5     /* DOS Extended partition */
230 #define PART_WIN_EXTD_LBA 0xF   /* Win95/98 Extended partition */
231 #define PART_LINUX_EXTD   0x85  /* Linux Extended partition */
232 #define PART_LINUX_LVM    0x8E /* Linux LVM partition */
233 /* #define PART_OS2_BOOTMGR  0xA        -  OS/2 Boot Manager */
234
235 #define PART_DOS12        1     /* DOS 12 bit FAT partition type */
236 #define PART_DOS16_SMALL  4     /* DOS 16 bit FAT partition type, < 32 MB */
237 #define PART_DOS16_BIG    6     /* DOS 16 bit FAT partition type, >= 32 MB */
238 #define PART_HPFS         7     /* OS/2 High Performance File System */
239 #define PART_NTFS         7     /* WinNT File System */
240 #define PART_FAT32        0xB   /* Win95/98 FAT32 partition on small disk */
241 #define PART_FAT32_LBA    0xC   /* Win95/98 FAT32 partition on large disk */
242 #define PART_FAT16_LBA    0xE   /* Win95/98 FAT16 partition on large disk */
243 #define PART_INVALID      98    /* invalid partition type */
244
245 #define HIDDEN_OFF      0x10    /* type offset to hide partition (OS/2 BM) */
246 #define PART_HDOS12     (PART_DOS12+HIDDEN_OFF)
247 #define PART_HDOS16_SMALL (PART_DOS16_SMALL+HIDDEN_OFF)
248 #define PART_HDOS16_BIG (PART_DOS16_BIG+HIDDEN_OFF)
249
250 #define STAGE_FIRST     1       /* first stage loader code */
251 #define STAGE_SECOND    2       /* second stage loader code */
252 #define STAGE_CHAIN     0x10    /* chain loader code */
253 #define STAGE_DRIVE_MAP 0x11    /* chain loader drive mapper */
254 #define STAGE_MBR       0x12    /* mbr loader */
255 #define STAGE_MBR2      0x13    /* mbr2 loader (extended) */
256 #define STAGE_FLAG_SERIAL  0x0100       /* boot loader supports serial i/o */
257 #define STAGE_FLAG_MENU 0x0200  /* boot loader supports menu interface */
258 #define STAGE_FLAG_BMP4 0x0400  /* boot loader supports 640x480x4 bitmaps */
259
260 #define VSS_NUM         497     /* address where variable setup size is stored */
261 #define VGA_SET         506     /* address of initial kernel VGA mode */
262 #define SETUPSECS       4       /* default number of setup sectors */
263 #define MAX_SETUPSECS   63      /* maximum number of sectors in kernel
264                                    setup code (+ bootsect)  (for kernel >= 2.4.0) */
265 #define MAX_KERNEL_SECS 1024    /* absolute maximum kernel size */
266 #define SPECIAL_SECTORS 2       /* special sectors (don't compact) at beginning
267                                    of map sections */
268 #define SPECIAL_BOOTSECT 1      /* INITSEG bootsect.S bootloader at beginning
269                                    of all kernels, ahead of SETUPSECS */
270
271 #define LINEAR_FLAG     0x40    /* mark linear address */
272 #define LBA32_FLAG      0x20    /* mark lba 32-bit address */
273 #define LBA32_NOCOUNT   0x40    /* mark address with count absent */
274 #define RAID_REL_FLAG   0x10    /* mark address raid-relocatable */
275 /*
276  *      FLAG    Description
277  *
278  *      0x00     pure geometric addressing (C:H:S)
279  *      0x40     Linear address (24-bits) converted to CHS at boot-time
280  *      0x60     LBA32 address (32-bits), count=1, sets the high nibble!!
281  *      0x20     LBA32 address (24-bits) + (8-bit) high nibble (implied)
282  *
283 */
284 #define DEV_MASK_EXP    0x80+MAX_BIOS_DEVICES-1
285 #define DEV_MASK        (DEV_MASK_EXP)
286
287 #define EX_OFF          SETUP_STACKSIZE-8+SSDIFF /* external parameter block */
288 #define EX_DL_MAG       0xfe    /* magic number in DL */
289 #define EX_MAG_L        0x494c  /* magic number at ES:SI, "LI" */
290 #define EX_MAG_H        0x4f4c  /* magic number at ES:SI+2, "LO" */
291 #define EX_MAG_HL       0x4f4c494c  /* "LILO" */
292 #define EX_MAG_STRING   "LILO"  /* magic signature string as as string */
293
294 #define BIOS_MAX_DEVS   2       /* BIOS devices (2 fd, 2 hd) */
295 #define BIOS_MAX_HEADS  256     /* 8 bits head number; really 255 */
296                         /* but must account for oddball BIOS's that allow 256 */
297 #define BIOS_MAX_CYLS   1024    /* 10 bits cylinder number */
298 #define BIOS_MAX_SECS   64      /* 6 bits sector number (really 63) */
299
300 /* these are the boot record flags in the "prompt" variable */
301 #define FLAG_PROMPT     1       /* always issue boot: prompt */
302 #define FLAG_RAID       2       /* one boot record of many */
303 #define FLAG_RAID_DEFEAT  4     /* defeat finding this RAID boot record */
304 #if 0
305 #define FLAG_RAID_NOWRITE 8     /* defeat RAID writeback of command line */
306 #endif
307 #define FLAG_NOBD       16      /* defeat BIOS data collection at boot time */
308 #define FLAG_LARGEMEM   32      /* BIOS has MoveExtMemBlk support for 386 */
309 #define FLAG_MAP_ON_BOOT 64     /* map file is on the boot device */
310 #define FLAG_BD_OKAY    128     /* BIOS data collection known to work */
311 #ifdef FLAG_RAID_NOWRITE
312 #define FLAG_SAVE (~(FLAG_RAID|FLAG_RAID_DEFEAT|FLAG_RAID_NOWRITE))  /* All but raid flags */
313 #else
314 #define FLAG_SAVE (~(FLAG_RAID|FLAG_RAID_DEFEAT))  /* All but raid flags */
315 #endif
316
317 /* these are the second-stage specific flags */
318 #define FLAG2_EL_TORITO  2      /* El Torito format bootable CD */
319 #define FLAG2_UNATTENDED 4      /* Unattended booting option */
320 #define FLAG2_VIRTUAL    8      /* vmdefault, vmdisable, vmwarn used */
321 #define FLAG2_NOKBD     16      /* nokbdefault, nokbdisable used */
322
323 /* these are the descriptor flags */
324 #define FLAG_VGA        1       /* override VGA mode */
325 #define FLAG_RESTR      2       /* restrict additional parameters */
326 #define FLAG_LOCK       4       /* lock on target */
327 #define FLAG_MODKRN     8       /* modern kernel with high memory support */
328 #define FLAG_KERNEL     16      /* image is a kernel */
329 #define FLAG_TOOBIG     32      /* initrd so big that kernel could be overwritten */
330 #define FLAG_FALLBACK   64      /* fallback command line exists */
331 #define FLAG_PASSWORD   128     /* this image requires a password */
332 #define FLAG_LOADHI     256     /* this kernel loads high (>=1Mb) */
333 #ifdef LCF_VIRTUAL
334 #define FLAG_VMDISABLE  512     /* unable to boot if virtual */
335 #define FLAG_VMWARN     1024    /* warn on virtual boot */
336 #define FLAG_VMDEFAULT  2048    /* this is the default vitual load */
337 #endif
338 #define FLAG_SINGLE     4096    /* single key activation */
339 #define FLAG_RETAIN     0x2000  /* retain BMP screen on boot */
340 #ifdef LCF_NOKEYBOARD
341 #define FLAG_NOKBDEFAULT 0x4000 /* this is the default with no keyboard */
342 #define FLAG_NOKBDISABLE 0x8000 /* unable to boot if no keyboard */
343 #endif
344
345 #define VGA_NOCOVR      0x8000  /* VGA setting not overridden on command line */
346
347 #define SER_DFL_PRM     0xa3    /* default serial parameters: 2400n8 */
348
349 #define DC_MAGIC        0xf4f2  /* magic number of default cmd. line sector */
350 #define DC_MGOFF        0x6b6d  /* magic number for disabled line */
351
352 #define MAX_MESSAGE     65535   /* maximum message length */
353 #define MAX_MENU_TITLE  37      /* maximum MENU title length */
354
355 #define NEW_HDR_SIG     "HdrS"  /* setup header signature */
356 #define NEW_HDR_VERSION 0x200   /* header version number */
357 #define NEW2_HDR_VERSION 0x202  /* new cmdline protocol */
358 #define NEW3_HDR_VERSION 0X203  /* defines CL_RAMDISK_MAX */
359 #define LOADER_VERSION  0x02    /* loader version, for SETUP_HDR.loader */
360 #define LFLAG_HIGH      1       /* SETUP_HDR.flags */
361 #define LFLAG_USE_HEAP  0x80
362
363 #define PRTMAP_SIZE     32      /* number of partition type mappings */
364 #define DRVMAP_SIZE     24      /* number of drive mappings */
365
366 #define CRC_POLY1 0x04c11db7
367 #define CRC_POLY2 0x23a55379
368 #define CRC_POLY3 0x049f21c7
369 #define CRC_POLY4 0x1c632927
370 #define CRC_POLY5 0xA3139383
371
372 #define PROBE_SIGNATURE "LiLo"  /* signature placed in low memory */
373 #define PROBESEG 0x60           /* must be in first 4k page in memory */
374 #define EDD_LTH     30          /* length of the EDD return structure (max) */
375 #define EDD_PACKET  01          /* packet calls are supported */
376 #define EDD_LOCK    02          /* removable media may be locked */
377 #define EDD_SUBSET  04          /* EDD call supported */
378
379
380
381 #ifdef LILO_ASM
382 BOOTSEG   = 0x07C0                      ! original address of boot-sector
383 PARTS_LOAD= 0x0600                      ! partition sector load address
384 PARTS_SCR = 0x0800                      ! ditto, for non-boot partitions
385 PART_TABLE= 0x07BE                      ! partition table
386
387 INITSEG   = DEF_INITSEG                 ! we move boot here - out of the way
388 SETUPSEG  = DEF_SETUPSEG                ! setup starts here
389 SYSSEG    = DEF_SYSSEG                  ! system loaded at 0x10000 (65536).
390
391 MAX_DESCR_SECS_asm = MAX_DESCR_SECS     ! **
392 MAX_DESCR_SECTORS_asm = MAX_DESCR_SECTORS ! **
393 MAX_IMAGE_NAME_asm = MAX_IMAGE_NAME     ! **
394 MAX_PW_CRC_asm  = MAX_PW_CRC            ! **
395 SECTOR_SIZE_asm = SECTOR_SIZE           ! **
396 MAX_MENU_TITLE_asm = MAX_MENU_TITLE     ! **
397 MAX_BIOS_DEVICES_asm = MAX_BIOS_DEVICES ! **
398 MAX_RAID_DEVICES_asm = MAX_RAID_DEVICES ! **
399 DEV_MASK_asm = DEV_MASK_EXP             ! **
400
401
402 STACKSEG  = 0x9000           ! MUST == INITSEG for kernel 2.0.36 (and others?)
403 SETUP_STACKSIZE = 2048          ! stacksize for kernel setup.S
404
405 #else
406 #define BOOTSEG 0x07c0                  /* for probe.c  */
407 #endif
408
409 #define FIRSTSEG BOOTSEG
410
411 #ifdef LILO_ASM
412
413 STACK     = 2048                ! amount of stack space to reserve
414 SSDIFF  = 0
415
416 BOOTSECT  = 0x200               ! kernel bootsect.S
417
418 #define SETUP_STACK_DYN  PARMLINE
419 #define SLA_SIZE_DYN  SETUP_STACK_DYN-SETUP_STACKSIZE-BOOTSECT
420
421 KBBEG     = 0x41A                       ! beginning of keyboard buffer
422 KBEND     = 0x41C                       ! end of keyboard buffer
423 KBLOW     = 0x1e
424 KBHIGH    = 0x3e
425
426 !
427 !  Memory layout
428 !
429 ! 0x007BE-0x007FD    64 B    partition table
430 ! 0x07C00-0x07DFF   0.5 kB   HD/FD boot load address
431 ! 0x10000-0x8FFFF 512.0 kB   kernel (zImage)
432 ! 0x90000-0x901FF   0.5 kB   kernel floppy boot sector (bootsect.S)
433 ! 0x90200-0x967FF  25.5 kB   kernel setup code (setup.S) and heap
434 ! 0x96800-0x969FF   0.5 kB   LILO stack
435 ! 0x96A00-0x96BFF   0.5 kB   LILO first stage loader
436 ! 0x96C00-0x985FF   6.5 kB   LILO second stage loader
437 ! 0x98600-0x987FF   0.5 kB   file map load area
438 ! 0x98800-0x98BFF     1 kB   descriptor table load area
439 ! 0x98C00-0x98DFF   0.5 kB   default command line load area
440 ! 0x98E00-0x98FFF   0.5 kB   keyboard translation table load area
441 ! 0x99000-0x991FF   0.5 kB   parameter line construction area
442 ! 0x99200-0x9FFFF  27.5 kB   Extended BIOS Data Area
443
444 ! when LILO has loaded the kernel, and control is transfered to
445 ! the kernel setup.S code at 0x9020:0000
446 !
447 ! 0x007BE-0x007FD    64 B    partition table
448 ! 0x07C00-0x07DFF   0.5 kB   HD/FD boot load address
449 ! 0x10000-0x8FFFF 512.0 kB   kernel (zImage)
450 ! 0x90000-0x901FF   0.5 kB   kernel floppy boot sector (bootsect.S)
451 ! 0x90200-0x967FF  25.5 kB   kernel setup code (setup.S) and heap
452 ! 0x96800-0x987FF   8.0 kB   additional heap space
453 ! 0x98800-0x98FFF   2.0 kB   stack created for (setup.S)
454 ! 0x99000-0x991FF   0.5 kB   parameter line for kernel
455 ! 0x99200-0x9FFFF  27.5 kB   Extended BIOS Data Area
456
457 CL_MAGIC_ADDR   = 0x20                  ! command line magic number
458 CL_MAGIC        = 0xa33f                ! very unusual command sequence
459 CL_OFFSET       = 0x22                  ! command line offset
460 CL_LENGTH       = COMMAND_LINE_SIZE     ! maximum length = 256-1
461
462 ! 0x90020-0x90021     2 by   command line magic number
463 ! 0x90022-0x90023     2 by   command line offset
464
465 CL_HEADER_ID    = 0x202                 ! "HdrS"
466 CL_HDRS_VERSION = 0x206                 ! 0x0201=old;  0x0202=new
467 NEW_VERSION     = NEW2_HDR_VERSION      ! 0x0202 for new cmdline protocol
468 CL_POINTER      = 0x228                 ! new pointer is dword address
469 CL_RAMDISK_MAX  = CL_POINTER+4          ! ramdisk_max; header version 0x0203
470
471
472 #endif
473
474 /* Bug fix needed for some S-ATA controllers with the Silicon Image
475    3112 or 3114 chipsets.  Early versions of the SI BIOS do not properly
476    update the low memory size in the BIOS Data Area at 40h:13h when
477    they allocate space in the Extended BIOS Data Area (EBDA).
478 */
479 #ifdef LCF_BUG_SI_EBDA
480 # define EBDA_EXTRA LCF_BUG_SI_EBDA
481 #else
482 # define EBDA_EXTRA 0
483 #endif
484
485
486 /* the following configuration variable are now  required
487    don't compile without them ...
488  */
489
490 #ifndef LCF_UNIFY
491 # define LCF_UNIFY
492 #endif
493 #ifndef LCF_BUILTIN
494 # define LCF_BUILTIN
495 #endif
496 #ifndef LCF_FIRST6
497 # define LCF_FIRST6
498 #endif
499
500 #endif
501