switch-coreboot/Documentation/configmanual.lyx
Ronald G. Minnich 7c62dad87c added config for building per-mainboard docs
updates to the config manual
2001-06-23 20:58:05 +00:00

1260 lines
22 KiB
Text

#This file was created by <root> Tue Jun 19 09:13:32 2001
#LyX 1.0 (C) 1995-1999 Matthias Ettrich and the LyX Team
\lyxformat 2.15
\textclass article
\language default
\inputencoding latin1
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default
\layout Title
The LinuxBIOS Configuration Tool
\layout Author
Ron Minnich
\layout Section
All you need to know
\layout Standard
LinuxBIOS consists of two parts: a small bootstrap, which brings the hardware
up; and a Linux kernel.
The kernel is built in the usual manner.
The bootstrap is built in a build directory, using source components that
reside in a source tree.
Unlike Linux, and very much like BSD, the bootstrap is intended to be built
in a directory that is the
\emph on
outside
\emph default
the source tree.
We structure it this way so that users can easily load the newest snapshot
of LinuxBIOS from the sourceforge.net server, and then build a new LinuxBIOS.
The directory in which LinuxBIOS is built is called the
\emph on
build
\emph default
directory; the source directory is called the
\emph on
source
\emph default
directory, and the Linux kernel directory is called (strangely enough)
the
\emph on
kernel
\emph default
directory.
\layout Standard
The build directory is initially empty.
Three files are needed to build a complete LInuxBIOS: a Makefile; a crt0.S
(assembly startup) file; and ldscript.ld, a script for ld to link the objects
into a bootstrap.
Note that the bootstrap and the kernel are not linked via ld; they are
totally seperated components.
The Makefile contains the list of objects used to build the bootstrap;
the location of the source tree; the location of the kernel; and any other
commands needed to build a full LinuxBIOS romimage.
The crt0.S file contains is just enough code to make the machine usable
for the rest of the bootstrap, which is itself written in C.
The ldscript.ld file defines address relocations for the bootstrap so it
will run correctly from FLASH or Disk On Chip.
\layout Standard
The LinuxBIOS configuration tool is used to build these three critical files.
The user writes a top-level configuration file and then runs the configuration
tool.
The tool uses other files in the source tree to set parameters for the
generated files, and then writes the configuration files for a given build.
\layout Subsection
Configuration file Format
\layout Standard
We show an example of a configuration file in Figure
\begin_inset LatexCommand \ref{sampleconfig}
\end_inset
.
\layout Standard
We will describe this file line by line.
First, we name the build directory, in this case matsonic.
Next, we name the mainboard: matsonic/ms7308e.
Next we set a few options, such as SERIAL_CONSOLE (enable serial console
logging); UPDATE_MICROCODE (the bootstrap will load new microcode on the
broken Coppermine PIIIs if needed); ENABLE_L2_CACHE (the bootstrap will
correctly enable L2 cache if needed); and finally, enable the VGA frame
buffer.
The next command (
\family typewriter
\size footnotesize
linux /usr/src/linux
\family default
\size default
) defines the path to vmlinux.
Finally, the
\family typewriter
\size footnotesize
commandline
\family default
\size default
command sets the command line for Linux.
The minimum commandline currently required is the one which sets the root
file system.
\layout Standard
\begin_float fig
\layout Standard
\family typewriter
\size footnotesize
# Sample config file for Matsonic MS7308E with DoC Millennium (as root)
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Standard
\family typewriter
\size footnotesize
# This will make a target directory of ./matsonic
\layout Standard
\family typewriter
\size footnotesize
target matsonic
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Standard
\family typewriter
\size footnotesize
# Matsonic MS7308E mainboard
\layout Standard
\family typewriter
\size footnotesize
mainboard matsonic/ms7308e
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Standard
\family typewriter
\size footnotesize
# Enable Serial Console for debugging
\layout Standard
\family typewriter
\size footnotesize
option SERIAL_CONSOLE
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Standard
\family typewriter
\size footnotesize
# Enable MicroCode update and L2 Cache init for PII and PIII
\layout Standard
\family typewriter
\size footnotesize
option UPDATE_MICROCODE
\layout Standard
\family typewriter
\size footnotesize
option CONFIGURE_L2_CACHE
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Standard
\family typewriter
\size footnotesize
# Use the internal VGA frame buffer device
\layout Standard
\family typewriter
\size footnotesize
option HAVE_FRAMEBUFFER
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Standard
\family typewriter
\size footnotesize
# Path to your kernel (vmlinux)
\layout Standard
\family typewriter
\size footnotesize
linux /usr/src/linux
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Standard
\family typewriter
\size footnotesize
# Kernel command line parameters
\layout Standard
\family typewriter
\size footnotesize
commandline root=/dev/nftla1 single
\layout Standard
\family typewriter
\size footnotesize
\protected_separator
\layout Caption
\begin_inset LatexCommand \label{sampleconfig}
\end_inset
A Sample Configuration File for the Matsonic MS7308E
\end_float
\layout Standard
This sample configuration file is all that you will usually need.
In fact, all the configuration files we have written to date involve small
variations on this file.
\layout Subsection
The commands you need to know
\layout Standard
There are only five commands used in the file above.
We describe them in Table
\begin_inset LatexCommand \ref{fivecommands}
\end_inset
.
\layout Standard
\begin_float tab
\layout Standard
\align center \LyXTable
multicol5
10 2 0 0 -1 -1 -1 -1
1 1 0 0
1 0 0 0
1 0 0 0
0 0 1 0
0 0 1 0
0 0 1 0
0 0 1 0
1 0 0 0
1 1 0 0
1 1 0 0
8 1 0 "" ""
2 1 1 "4in" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
Command
\newline
What it does
\newline
target
\newline
Name the build directory.
(Should we remove this? seems pointless.)
\newline
mainboard
\newline
Name the mainboard to be used for this build.
This command will
\newline
\newline
cause the tool to look in the source tree for
\newline
\newline
src/<mainboard name>/Config
\newline
\newline
Commands in that Config file are processed.
\newline
\newline
\newline
option
\newline
Set an option in the Makefile
\newline
linux
\newline
Name the directory in which the kernel image (vmlinux) resides
\newline
commandline
\newline
Set the command line for Linux
\layout Standard
\begin_inset LatexCommand \label{fivecommands}
\end_inset
\end_float
\layout Comment
A question on the target command.
Shouldn't it be part of the invocation of the command? We're not sure we
like this command.
\layout Subsection
Running the configuration tool
\layout Standard
To run the configuration tool, you need to make a build directory, then
run the tool.
The standard BSD config tool will delete and re-create build directories
as needed, but we are not that confident.
If you want the build directory removed or created, it is up to you.
\layout Standard
We show a sample run in Figure
\begin_inset LatexCommand \ref{samplerun}
\end_inset
.
We cd to /tmp, make a build directory (matsonic), make a build file (matsonic.co
nfig), and run the config tool using Python.
The tool will show the additional config files it processes.
Error handling right now is not very good, but there are some errors that
it will show.
\layout Standard
\begin_float fig
\layout Standard
\family typewriter
\size scriptsize
[root@maxroach /tmp]# cd /tmp
\layout Standard
\family typewriter
\size scriptsize
[root@maxroach /tmp]# mkdir matsonic
\layout Standard
\family typewriter
\size scriptsize
[root@maxroach /tmp]# cat > matsonic.config
\layout Standard
\family typewriter
\size scriptsize
target matsonic
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Standard
\family typewriter
\size scriptsize
# Matsonic MS7308E mainboard
\layout Standard
\family typewriter
\size scriptsize
mainboard matsonic/ms7308e
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Standard
\family typewriter
\size scriptsize
# Enable Serial Console for debugging
\layout Standard
\family typewriter
\size scriptsize
option SERIAL_CONSOLE
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Standard
\family typewriter
\size scriptsize
# Enable MicroCode update and L2 Cache init for PII and PIII
\layout Standard
\family typewriter
\size scriptsize
option UPDATE_MICROCODE
\layout Standard
\family typewriter
\size scriptsize
option CONFIGURE_L2_CACHE
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Standard
\family typewriter
\size scriptsize
# Use the internal VGA frame buffer device
\layout Standard
\family typewriter
\size scriptsize
option HAVE_FRAMEBUFFER
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Standard
\family typewriter
\size scriptsize
# Path to your kernel (vmlinux)
\layout Standard
\family typewriter
\size scriptsize
linux /usr/src/linux
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Standard
\family typewriter
\size scriptsize
# Kernel command line parameters
\layout Standard
\family typewriter
\size scriptsize
commandline root=/dev/hda1
\layout Standard
\family typewriter
\size scriptsize
[root@maxroach /tmp]# python ~/src/freebios/util/config/NLBConfig.py matsonic.conf
ig ~/src/freebios
\layout Standard
\family typewriter
\size scriptsize
Will place Makefile, crt0.S, ldscript.ld in
\protected_separator
matsonic
\layout Standard
\family typewriter
\size scriptsize
Process config file:
\protected_separator
/root/src/freebios/src/mainboard/matsonic/ms7308e/Config
\layout Standard
\family typewriter
\size scriptsize
Process config file:
\protected_separator
/root/src/freebios/src/northsouthbridge/sis/630/Config
\layout Standard
\family typewriter
\size scriptsize
Added ram init file:
\protected_separator
northsouthbridge/sis/630/raminit.inc
\layout Standard
\family typewriter
\size scriptsize
Process config file:
\protected_separator
/root/src/freebios/src/cpu/p5/Config
\layout Standard
\family typewriter
\size scriptsize
Process config file:
\protected_separator
/root/src/freebios/src/cpu/p6/Config
\layout Standard
\family typewriter
\size scriptsize
Process config file:
\protected_separator
/root/src/freebios/src/lib/Config
\layout Standard
\family typewriter
\size scriptsize
Now Process the base files
\layout Standard
\family typewriter
\size scriptsize
Makebase is : /root/src/freebios/util/config/make.base :
\layout Standard
\family typewriter
\size scriptsize
Trying to create
\protected_separator
matsonic/Makefile
\layout Standard
\family typewriter
\size scriptsize
Trying to create
\protected_separator
matsonic/ldscript.ld
\layout Standard
\family typewriter
\size scriptsize
Trying to create
\protected_separator
matsonic/crt0.S
\layout Standard
\family typewriter
\size scriptsize
Check for crt0.S param file: /root/src/freebios/src/include/northsouthbridge/sis/
630/param.h
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
Adding include to crt0.S for this parameter file:
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
#include <northsouthbridge/sis/630/param.h>
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Standard
\family typewriter
\size scriptsize
[root@maxroach /tmp]#
\layout Standard
\family typewriter
\size scriptsize
\protected_separator
\layout Caption
\begin_inset LatexCommand \label{samplerun}
\end_inset
Running the config tool.
Your output may vary somewhat.
\end_float
\layout Standard
That is about all you should need to know to build most Linux kernels.
In the next section we will cover more detail, for those who need to know
more.
\layout Section
More than you need to know
\layout Standard
The config tool is written in Python, and processes files written in a little
language.
Most of the commands in the little language set values of variables in
the program, or add elements to lists.
Some of the commands result in other files being read in and processed.
In most cases these are other configuration files.
Commands that name hardware (such as the
\family typewriter
mainboard
\family default
command) in most cases search for a configuration file in the path TOP/src/<nam
e>/Config, where TOP represents the top of the source tree.
For an example, see Table
\begin_inset LatexCommand \ref{fivecommands}
\end_inset
.
\layout Subsection
Commands that name resource directories.
\layout Standard
Resource directories contain C source code for LinuxBIOS.
The naming of resource directories in most cases is <vendor id>/<hardware>.
We show the resource directory commands in Table
\begin_inset LatexCommand \ref{resourcepaths}
\end_inset
.
\layout Standard
\begin_float tab
\layout Standard
\align center \LyXTable
multicol5
14 2 0 0 -1 -1 -1 -1
1 1 0 0
1 0 0 0
1 0 0 0
0 0 1 0
0 0 1 0
1 0 0 0
1 0 0 0
0 0 1 0
0 0 1 0
1 0 0 0
1 0 0 0
1 1 0 0
1 1 0 0
0 1 1 0
2 1 0 "1in" ""
2 1 1 "4in" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
Resource Name
\newline
Path
\newline
inboard
\newline
TOP/src/mainboard/<vendor>/<partname>
\newline
cpu
\newline
TOP/src/cpu/<partname>.
\newline
\newline
NOTE: no vendor in this path.
We did this because so much of this
\newline
\newline
code is generic.
Was this right?
\newline
northbridge
\newline
TOP/src/northbridge/<vendor>/<partname>
\newline
northsouthbridge
\newline
TOP/src/northsouthbridge/<vendor>/<partname>
\newline
\newline
NOTE: sets path for northbridge and southbridge,
\newline
\newline
since this command is for integrated chipsets (i.e.
SiS 630)
\newline
southbridge
\newline
TOP/src/southbridge/<vendor>/<partname>
\newline
superio
\newline
TOP/src/superio/<vendor>/<partname>
\newline
pcibridge
\newline
TOP/src/pcibridge/<vendor>/<partname>
\newline
arch
\newline
Set the architecture.
Current valid values are i386 and alpha.
\newline
\newline
This command should only appear in the mainboard file.
\layout Caption
\begin_inset LatexCommand \label{resourcepaths}
\end_inset
How resources are named
\end_float
\layout Standard
The commands and their resulting path are shown in Table
\begin_inset LatexCommand \ref{resourcepaths}
\end_inset
.
Each of these commands (except for superio, currently) will check for a
Config file in the directory and process that file.
The Config file can contain any command.
\layout Comment
Was it a mistake to not have a Config file for superio? There's only one
file, but it is inconsistent.
\layout Standard
The configuration tool keeps track of three directories: the resource directory
that it is currently processing (think of this as the current working directory
); the TOP of the freebios source tree; and the directory that holds the
build (i.e.
the target directory).
All of these variables come into use when resource directory Config files
are processed.
For example, if the Config directory for northbridge specifies the file
northbridge.c, then an object rule for northbridge.o will be added to the
Makefile, with source being found in the resource directory.
All source names are made relative to TOP.
\layout Subsection
Commands that modify the Makefile
\layout Standard
There are several commands that add rules and options to the Makefile.
They are shown below.
\layout Comment
Makefile flags for the LinuxBIOS are set in a variable called CPUFLAGS,
not in CFLAGS.
\layout Standard
\begin_float tab
\layout Standard
\align center \LyXTable
multicol5
19 2 0 0 -1 -1 -1 -1
1 1 0 0
1 0 0 0
0 0 1 0
0 0 1 0
1 0 0 0
0 0 1 0
1 0 0 0
1 0 0 0
1 0 0 0
0 0 1 0
0 0 1 0
1 0 0 0
1 0 0 0
1 0 0 0
0 0 1 0
1 0 0 0
0 0 1 0
0 0 1 0
1 1 0 0
2 1 0 "2in" ""
2 1 1 "4in" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 0 0 0 "" ""
0 2 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
Rule Name
\newline
Result
\newline
object <name>.o
\newline
Add the object <name>.o to the Makefile, depending on
\newline
\newline
TOP/current-directory/<name>.c.
Add a rule for building
\newline
\newline
the object using cc.
\newline
makerule <name> : [<deps>] ; [<rule>]
\newline
Add a rule for <name>, depending on <deps> (
\newline
\newline
optional), with actions <rule> (optional).
\newline
addaction <rule> <action>
\newline
Add an action to an existing rule
\newline
adddepend <rule> <dependency>
\newline
Add a dependency to an existing rule
\newline
makedefine <variable>=<value>
\newline
Add a makerule to the Makefile.
Note: if you just want
\newline
\newline
to add a -Doption or -Uoption to the Makefile, use the
\newline
\newline
option and nooption commands instead.
\newline
option <name>
\newline
add -D<name> to the Makefile CPUFLAGS
\newline
nooption
\newline
add -U<name> to the Makefile CPUFLAGS
\newline
commandline <linux-command-line>
\newline
Set the commandline for Linux.
This can include spaces, e.g.
\newline
\newline
commandline root=/dev/hda1 console=tty0 single
\newline
docipl <path>
\newline
Turn on Millenium Disk On Chip Makefile options.
This changes
\newline
\newline
variables for ldscript.ld, sets option for crt0.S, and sets the USE_DOC
\newline
\newline
option in CPUFLAGS.
\newline
linux <path>
\newline
Set the path for Linux, assumed to be in <path>/vmlinux.
\layout Caption
Commands that modify the Makefile
\end_float
\layout Subsection
Commands that modify ldscript.ld
\layout Standard
There are four commands that modify ldscript.ld.
These commands determine the base address of the data, bss, stack, and
LinuxBIOS code segments (not x86 segment registers, but ELF-style segments).
These commands are currently used primarily by the docipl command.
\layout Standard
\begin_float tab
\layout Standard
\align center \LyXTable
multicol5
5 2 0 0 -1 -1 -1 -1
1 1 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 1 0 0
8 1 0 "" ""
2 1 1 "4in" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
Command
\newline
Action
\newline
setdata <value>
\newline
Set the base of data.
Default is 0x4000.
\newline
setbss <value>
\newline
Set the base of bss.
Default is 0x5000.
\newline
setstack <value>
\newline
Set the base of the stack.
Default is 0x90000.
\newline
setlinuxbiosbase <value>
\newline
Set the linuxbios code base.
Default is 0xf0000.
\layout Caption
The ldscript.ld commands
\end_float
\layout Subsection
Commands that affect crt0.S
\layout Standard
The only commands that affect crt0.S are option commands.
These set options that affect how crt0.S operates when it starts.
The options that affect crt0.S are shown below.
Note that except for RAMTEST, these options affect other
\layout Standard
\begin_float tab
\layout Standard
\align center \LyXTable
multicol5
8 2 0 0 -1 -1 -1 -1
1 1 0 0
1 0 0 0
1 0 0 0
0 0 1 0
0 0 1 0
0 0 1 0
0 0 1 0
1 1 0 0
8 1 0 "" ""
2 1 1 "4in" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 2 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 1 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
Option
\newline
Meaning
\newline
RAMTEST
\newline
Run a simple RAM diagnostic after initializing SDRAM
\newline
USE_DOC_MIL
\newline
This option is usually set by the docipl command, and has two main effects.
\newline
\newline
It turns off the SDRAM
\newline
\newline
init in crt0.S (since the docipl does it).
It also modifies the range of memory
\newline
\newline
used by the SDRAM test code (since we don't want SDRAM test code overwriting
\newline
\newline
LinuxBIOS code in SDRAM)
\newline
SERIAL_CONSOLE
\newline
Enables serial console output in crt0.S
\layout Caption
Options that affect crt0.S
\end_float
\the_end