Kernel initialisation parameters on ARM Linux
---------------------------------------------

The following document describes the kernel initialisation parameter
structure, otherwise known as 'struct param_struct' which is used
for most ARM Linux architectures.

This structure is used to pass initialisation parameters from the
kernel loader to the Linux kernel proper, and may be short lived
through the kernel initialisation process.  As a general rule, it
should not be referenced outside of arch/arm/kernel/setup.c:setup_arch().

There are a lot of parameters listed in there, and they are described
below:

 page_size

   This parameter must be set to the page size of the machine, and
   will be checked by the kernel.

 nr_pages

   This is the total number of pages of memory in the system.  If
   the memory is banked, then this should contain the total number
   of pages in the system.

   If the system contains separate VRAM, this value should not
   include this information.

 ramdisk_size

   This is now obsolete, and should not be used.

 flags

   Various kernel flags, including:
    bit 0 - 1 = mount root read only
    bit 1 - unused
    bit 2 - 0 = load ramdisk
    bit 3 - 0 = prompt for ramdisk

 rootdev

   major/minor number pair of device to mount as the root filesystem.

 video_num_cols
 video_num_rows

   These two together describe the character size of the dummy console,
   or VGA console character size.  They should not be used for any other
   purpose.

   It's generally a good idea to set these to be either standard VGA, or
   the equivalent character size of your fbcon display.  This then allows
   all the bootup messages to be displayed correctly.

 video_x
 video_y

   This describes the character position of cursor on VGA console, and
   is otherwise unused. (should not be used for other console types, and
   should not be used for other purposes).

 memc_control_reg

   MEMC chip control register for Acorn Archimedes and Acorn A5000
   based machines.  May be used differently by different architectures.

 sounddefault

   Default sound setting on Acorn machines.  May be used differently by
   different architectures.

 adfsdrives

   Number of ADFS/MFM disks.  May be used differently by different
   architectures.

 bytes_per_char_h
 bytes_per_char_v

   These are now obsolete, and should not be used.

 pages_in_bank[4]

   Number of pages in each bank of the systems memory (used for RiscPC).
   This is intended to be used on systems where the physical memory
   is non-contiguous from the processors point of view.

 pages_in_vram

   Number of pages in VRAM (used on Acorn RiscPC).  This value may also
   be used by loaders if the size of the video RAM can't be obtained
   from the hardware.

 initrd_start
 initrd_size

   This describes the kernel virtual start address and size of the
   initial ramdisk.

 rd_start

   Start address in sectors of the ramdisk image on a floppy disk.

 system_rev

   system revision number.

 system_serial_low
 system_serial_high

   system 64-bit serial number

 mem_fclk_21285

   The speed of the external oscillator to the 21285 (footbridge),
   which control's the speed of the memory bus, timer & serial port.
   Depending upon the speed of the cpu its value can be between
   0-66 MHz. If no params are passed or a value of zero is passed,
   then a value of 50 Mhz is the default on 21285 architectures.

 paths[8][128]

   These are now obsolete, and should not be used.

 commandline

   Kernel command line parameters.  Details can be found elsewhere.
