doc update
This commit is contained in:
parent
9ad024eb56
commit
7e5417927c
3 changed files with 516 additions and 127 deletions
339
docs/grub.texi
339
docs/grub.texi
|
@ -979,7 +979,11 @@ where to find Stage 2, and the Stage 2 has to know where to find its
|
|||
configuration file (if Stage 2 doesn't have a configuration file, it
|
||||
drops into the command-line interface and waits for a user command).
|
||||
|
||||
Here is the memory map of the various components:
|
||||
Here is the memory map of the various components
|
||||
@footnote{Currently GRUB does not use the extended memory for itself,
|
||||
since it is used to load an operating system. But we are planning to use
|
||||
it for GRUB itself in the future by @dfn{lazy loading}. Ask okuji for
|
||||
more information.}:
|
||||
|
||||
@table @asis
|
||||
@item 0 to 4K-1
|
||||
|
@ -1141,19 +1145,346 @@ which address range should be treated by operating systems.
|
|||
@node Query System Address Map
|
||||
@subsection INT 15H, AX=E820h interrupt call
|
||||
|
||||
mem64mb.html
|
||||
Real mode only.
|
||||
|
||||
This call returns a memory map of all the installed @sc{ram}, and of
|
||||
physical memory ranges reserved by the BIOS. The address map is returned
|
||||
by making successive calls to this API, each returning one "run" of
|
||||
physical address information. Each run has a type which dictates how
|
||||
this run of physical address range should be treated by the operating
|
||||
system.
|
||||
|
||||
If the information returned from INT 15h, AX=E820h in some way differs
|
||||
from INT 15h, AX=E801h (@pxref{Get Large Memory Size}) or INT 15h AH=88h
|
||||
(@pxref{Get Extended Memory Size}), then the information returned from
|
||||
E820h supersedes what is returned from these older interfaces. This
|
||||
allows the BIOS to return whatever information it wishes to for
|
||||
compatibility reasons.
|
||||
|
||||
Input:
|
||||
|
||||
@multitable @columnfractions .15 .25 .6
|
||||
@item @code{EAX} @tab Function Code @tab E820h
|
||||
|
||||
@item @code{EBX} @tab Continuation @tab Contains the @dfn{continuation
|
||||
value} to get the next run of physical memory. This is the value
|
||||
returned by a previous call to this routine. If this is the first call,
|
||||
@code{EBX} must contain zero.
|
||||
|
||||
@item @code{ES:DI} @tab Buffer Pointer @tab Pointer to an Address Range
|
||||
Descriptor structure which the BIOS is to fill in.
|
||||
|
||||
@item @code{ECX} @tab Buffer Size @tab The length in bytes of the
|
||||
structure passed to the BIOS. The BIOS will fill in at most @code{ECX}
|
||||
bytes of the structure or however much of the structure the BIOS
|
||||
implements. The minimum size which must be supported by both the BIOS
|
||||
and the caller is 20 bytes. Future implementations may extend this
|
||||
structure.
|
||||
|
||||
@item @code{EDX} @tab Signature @tab @samp{SMAP} - Used by the BIOS to
|
||||
verify the caller is requesting the system map information to be
|
||||
returned in @code{ES:DI}.
|
||||
@end multitable
|
||||
|
||||
Output:
|
||||
|
||||
@multitable @columnfractions 0.15 0.25 0.6
|
||||
@item @code{CF} @tab Carry Flag @tab Non-Carry - indicates no error
|
||||
|
||||
@item @code{EAX} @tab Signature @tab @samp{SMAP} - Signature to verify
|
||||
correct BIOS revision.
|
||||
|
||||
@item @code{ES:DI} @tab Buffer Pointer @tab Returned Address Range
|
||||
Descriptor pointer. Same value as on input.
|
||||
|
||||
@item @code{ECX} @tab Buffer Size @tab Number of bytes returned by the
|
||||
BIOS in the address range descriptor. The minimum size structure
|
||||
returned by the BIOS is 20 bytes.
|
||||
|
||||
@item @code{EBX} @tab Continuation @tab Contains the continuation value
|
||||
to get the next address descriptor. The actual significance of the
|
||||
continuation value is up to the discretion of the BIOS. The caller must
|
||||
pass the continuation value unchanged as input to the next iteration of
|
||||
the E820h call in order to get the next Address Range Descriptor. A
|
||||
return value of zero means that this is the last descriptor. Note that
|
||||
the BIOS indicate that the last valid descriptor has been returned by
|
||||
either returning a zero as the continuaition value, or by returning
|
||||
carry.
|
||||
@end multitable
|
||||
|
||||
The Address Range Descriptor Structure is:
|
||||
|
||||
@multitable @columnfractions 0.25 0.3 0.45
|
||||
@item Offset in Bytes @tab Name @tab Description
|
||||
|
||||
@item 0 @tab @dfn{BaseAddrLow} @tab Low 32 Bits of Base Address
|
||||
|
||||
@item 4 @tab @dfn{BaseAddrHigh} @tab High 32 Bits of Base Address
|
||||
|
||||
@item 8 @tab @dfn{LengthLow} @tab Low 32 Bits of Length in Bytes
|
||||
|
||||
@item 12 @tab @dfn{LengthHigh} @tab High 32 Bits of Length in Bytes
|
||||
|
||||
@item 16 @tab @dfn{Type} @tab Address type of this range
|
||||
@end multitable
|
||||
|
||||
The @dfn{BaseAddrLow} and @dfn{BaseAddrHigh} together are the 64 bit
|
||||
@dfn{BaseAddress} of this range. The @dfn{BaseAddress} is the physical
|
||||
address of the start of the range being specified.
|
||||
|
||||
The @dfn{LengthLow} and @dfn{LengthHigh} together are the 64 bit
|
||||
@dfn{Length} of this range. The @dfn{Length} is the physical contiguous
|
||||
length in bytes of a range being specified.
|
||||
|
||||
The @dfn{Type} field describes the usage of the described address range
|
||||
as defined in the table below:
|
||||
|
||||
@multitable @columnfractions 0.1 0.35 0.55
|
||||
@item Value @tab Pneumonic @tab Description
|
||||
|
||||
@item 1 @tab @dfn{AddressRangeMemory} @tab This run is available
|
||||
@sc{ram} usable by the operating system.
|
||||
|
||||
@item 2 @tab @dfn{AddressRangeReserved} @tab This run of addresses is in
|
||||
use or reserved by the system, and must not be used by the operating
|
||||
system.
|
||||
|
||||
@item Other @tab @dfn{Undefined} @tab Undefined - Reserved for future
|
||||
use. Any range of this type must be treated by the OS as if the type
|
||||
returned was @dfn{AddressRangeReserved}.
|
||||
@end multitable
|
||||
|
||||
The BIOS can use the @dfn{AddressRangeReserved} address range type to
|
||||
block out various addresses as @emph{not suitable} for use by a
|
||||
programmable device.
|
||||
|
||||
Some of the reasons a BIOS would do this are:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The address range contains system @sc{rom}.
|
||||
|
||||
@item
|
||||
The address range contains @sc{ram} in use by the @sc{rom}.
|
||||
|
||||
@item
|
||||
The address range is in use by a memory mapped system device.
|
||||
|
||||
@item
|
||||
The address range is for whatever reason are unsuitable for a
|
||||
standard device to use as a device memory space.
|
||||
@end itemize
|
||||
|
||||
Here is the list of assumptions and limitations:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
The BIOS will return address ranges describing base board memory and ISA
|
||||
or PCI memory that is contiguous with that base board memory.
|
||||
|
||||
@item
|
||||
The BIOS @emph{will not} return a range description for the memory
|
||||
mapping of PCI devices. ISA Option @sc{rom}'s, and ISA plug & play
|
||||
cards. This is because the OS has mechanisms available to detect them.
|
||||
|
||||
@item
|
||||
The BIOS will return chipset defined address holes that are not being
|
||||
used by devices as reserved.
|
||||
|
||||
@item
|
||||
Address ranges defined for base board memory mapped I/O devices (for
|
||||
example APICs) will be returned as reserved.
|
||||
|
||||
@item
|
||||
All occurrences of the system BIOS will be mapped as reserved. This
|
||||
includes the area below 1 MB, at 16 MB (if present) and at end of the
|
||||
address space (4 GB).
|
||||
|
||||
@item
|
||||
Standard PC address ranges will not be reported. Example video memory at
|
||||
A0000 to BFFFF physical will not be described by this function. THe
|
||||
range from E0000 to EFFFF is base board specific and will be reported as
|
||||
suits the bas board.
|
||||
|
||||
@item
|
||||
All of lower memory is reported as normal memory. It is OS's
|
||||
responsibility to handle standard @sc{ram} locations reserved for
|
||||
specific uses, for example: the interrupt vector table (0:0) and the
|
||||
BIOS data area (40:0).
|
||||
@end enumerate
|
||||
|
||||
Here we explain an example address map. This sample address map
|
||||
describes a machine which has 128 MB @sc{ram}, 640K of base memory and
|
||||
127 MB extended. The base memory has 639K available for the user and 1K
|
||||
for an extended BIOS data area. There is a 4 MB Linear Frame Buffer
|
||||
(LFB) based at 12 MB. The memory hole created by the chipset is from 8
|
||||
M to 16 M. There are memory mapped APIC devices in the system. The IO
|
||||
Unit is at FEC00000 and the Local Unit is at FEE00000. The system BIOS
|
||||
is remapped to 4G - 64K.
|
||||
|
||||
Note that the 639K endpoint of the first memory range is also the base
|
||||
memory size reported in the BIOS data segment at 40:13.
|
||||
|
||||
Key to types: @dfn{ARM} is AddressRangeMemory, @dfn{ARR} is
|
||||
AddressRangeReserved.
|
||||
|
||||
@multitable @columnfractions 0.15 0.1 0.1 0.65
|
||||
@item Base (Hex) @tab Length @tab Type @tab Description
|
||||
|
||||
@item 0000 0000 @tab 639K @tab ARM @tab Available Base memory -
|
||||
typically the same value as is returned via the INT 12 function.
|
||||
|
||||
@item 0009 FC00 @tab 1K @tab ARR @tab Memory reserved for use by the
|
||||
BIOS(s). This area typically includes the Extended BIOS data area.
|
||||
|
||||
@item 000F 0000 @tab 64K @tab ARR @tab System BIOS.
|
||||
|
||||
@item 0010 0000 @tab 7M @tab ARM @tab Extended memory, this is not
|
||||
limited to the 64MB address range.
|
||||
|
||||
@item 0080 0000 @tab 8M @tab ARR @tab Chipset memory hole required to
|
||||
support the LFB mapping at 12 MB.
|
||||
|
||||
@item 0100 0000 @tab 120M @tab ARM @tab Base board @sc{ram} relocated
|
||||
above a chipset memory hole.
|
||||
|
||||
@item FE00 0000 @tab 4K @tab ARR @tab IO APIC memory mapped I/O at
|
||||
FEC00000. Note the range of addresses required for an APIC device may
|
||||
vary from base OEM to OEM.
|
||||
|
||||
@item FEE0 0000 @tab 4K @tab ARR @tab Local APIC memory mapped I/O at
|
||||
FEE00000.
|
||||
|
||||
@item FFFF 0000 @tab 64K @tab ARR @tab Remapped System BIOS at end of
|
||||
address space.
|
||||
@end multitable
|
||||
|
||||
The following code segment is intended to describe the algorithm needed
|
||||
when calling the Query System Address Map function. It is an
|
||||
implementation example and uses non standard mechanisms.
|
||||
|
||||
@example
|
||||
E820Present = FALSE;
|
||||
Regs.ebx = 0;
|
||||
do
|
||||
@{
|
||||
Regs.eax = 0xE820;
|
||||
Regs.es = SEGMENT (&Descriptor);
|
||||
Regs.di = OFFSET (&Descriptor);
|
||||
Regs.ecx = sizeof (Descriptor);
|
||||
Regs.edx = 'SMAP';
|
||||
|
||||
_int (0x15, Regs);
|
||||
|
||||
if ((Regs.eflags & EFLAGS_CARRY) || Regs.eax != 'SMAP')
|
||||
@{
|
||||
break;
|
||||
@}
|
||||
|
||||
if (Regs.ecx < 20 || Regs.ecx > sizeof (Descriptor))
|
||||
@{
|
||||
/* bug in bios - all returned descriptors must be at
|
||||
least 20 bytes long, and can not be larger than
|
||||
the input buffer. */
|
||||
break;
|
||||
@}
|
||||
|
||||
E820Present = TRUE;
|
||||
.
|
||||
.
|
||||
.
|
||||
Add address range Descriptor.BaseAddress through
|
||||
Descriptor.BaseAddress + Descriptor.Length
|
||||
as type Descriptor.Type
|
||||
.
|
||||
.
|
||||
.
|
||||
@}
|
||||
while (Regs.ebx != 0);
|
||||
|
||||
if (! E820Present)
|
||||
@{
|
||||
.
|
||||
.
|
||||
.
|
||||
call INT 15H, AX E801h and/or INT 15H, AH=88h to obtain old style
|
||||
memory information
|
||||
.
|
||||
.
|
||||
.
|
||||
@}
|
||||
@end example
|
||||
|
||||
|
||||
@node Get Large Memory Size
|
||||
@subsection INT 15H, AX=E801h interrupt call
|
||||
|
||||
mem64mb.html
|
||||
Real mode only.
|
||||
|
||||
Originally defined for EISA servers, this interface is capable of
|
||||
reporting up to 4 GB of @sc{ram}. While not nearly as flexible as
|
||||
E820h, it is present in many more systems.
|
||||
|
||||
Input:
|
||||
|
||||
@multitable @columnfractions 0.15 0.25 0.6
|
||||
@item @code{AX} @tab Function Code @tab E801h
|
||||
@end multitable
|
||||
|
||||
Output:
|
||||
|
||||
@multitable @columnfractions 0.15 0.25 0.6
|
||||
@item @code{CF} @tab Carry Flag @tab Non-Carry - indicates no error.
|
||||
|
||||
@item @code{AX} @tab Extended 1 @tab Number of contiguous KB between 1
|
||||
and 16 MB, maximum 0x3C00 = 15 MB.
|
||||
|
||||
@item @code{BX} @tab Extended 2 @tab Number of contiguous 64KB blocks
|
||||
between 16 MB and 4GB.
|
||||
|
||||
@item @code{CX} @tab Configured 1 @tab Number of contiguous KB between 1
|
||||
and 16 MB, maximum 0x3c00 = 15 MB.
|
||||
|
||||
@item @code{DX} @tab Configured 2 @tab Number of contiguous 64KB blocks
|
||||
between 16 MB and 4 GB.
|
||||
@end multitable
|
||||
|
||||
Not sure what this difference between the @dfn{Extended} and
|
||||
@dfn{Configured} numbers are, but they appear to be identical, as
|
||||
reported from the BIOS.
|
||||
|
||||
It is possible for a machine using this interface to report a memory
|
||||
hole just under 16 MB (Count 1 is less than 15 MB, but Count 2 is
|
||||
non-zero).
|
||||
|
||||
|
||||
@node Get Extended Memory Size
|
||||
@subsection INT 15H, AX=88h interrupt call
|
||||
|
||||
mem64mb.html
|
||||
Real mode only.
|
||||
|
||||
This interface is quite primitive. It returns a single value for
|
||||
contiguous memory above 1 MB. The biggest limitation is that the value
|
||||
returned is a 16-bit value, in KB, so it has a maximum saturation of
|
||||
just under 64 MB even presuming it returns as much as it can. On some
|
||||
systems, it won't return anything above the 16 MB boundary.
|
||||
|
||||
The one useful point is that it works on every PC available.
|
||||
|
||||
Input:
|
||||
|
||||
@multitable @columnfractions 0.15 0.25 0.6
|
||||
@item @code{AH} @tab Function Code @tab 88h
|
||||
@end multitable
|
||||
|
||||
Output:
|
||||
|
||||
@multitable @columnfractions 0.15 0.25 0.6
|
||||
@item @code{CF} @tab Carry Flag @tab Non-Carry - indicates no error.
|
||||
|
||||
@item @code{AX} @tab Memory Count @tab Number of contiguous KB above 1
|
||||
MB.
|
||||
@end multitable
|
||||
|
||||
|
||||
@node Low-level disk I/O
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Makefile.in generated automatically by automake 1.3 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4a from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
@ -10,8 +10,7 @@
|
|||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
@ -32,7 +31,7 @@ mandir = @mandir@
|
|||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DISTDIR =
|
||||
DESTDIR =
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
|
@ -47,6 +46,7 @@ INSTALL = @INSTALL@
|
|||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_FLAG =
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
|
@ -70,6 +70,7 @@ host_vendor = @host_vendor@
|
|||
sbingrub = @sbingrub@
|
||||
stage2debug = @stage2debug@
|
||||
|
||||
|
||||
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
||||
pkgdata_DATA = stage2
|
||||
CLEANFILES = $(pkgdata_DATA)
|
||||
|
@ -83,6 +84,7 @@ INCLUDES = -I$(top_srcdir)/shared_src
|
|||
stage2_exec_LDADD = asm.o boot.o common.o char_io.o cmdline.o disk_io.o \
|
||||
gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o stage2.o bios.o
|
||||
|
||||
|
||||
noinst_PROGRAMS = stage2.exec
|
||||
|
||||
# FIXME: Automake hackery.
|
||||
|
@ -103,21 +105,21 @@ stage2_exec_DEPENDENCIES = asm.o boot.o common.o char_io.o cmdline.o \
|
|||
disk_io.o gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o stage2.o bios.o
|
||||
stage2_exec_LDFLAGS =
|
||||
CFLAGS = @CFLAGS@
|
||||
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DATA = $(pkgdata_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
DIST_COMMON = $(pkgdata_DATA) Makefile.am Makefile.in
|
||||
|
||||
|
||||
GZIP = --best
|
||||
GZIP_ENV = --best
|
||||
SOURCES = $(stage2_exec_SOURCES)
|
||||
OBJECTS = $(stage2_exec_OBJECTS)
|
||||
|
||||
all: Makefile $(PROGRAMS) $(DATA)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .o .s
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu stage2/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
|
@ -154,26 +156,29 @@ install-pkgdataDATA: $(pkgdata_DATA)
|
|||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
|
||||
@list='$(pkgdata_DATA)'; for p in $$list; do \
|
||||
if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p; \
|
||||
else if test -f $$p; then \
|
||||
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p; \
|
||||
fi; fi; \
|
||||
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
$(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \
|
||||
done
|
||||
|
||||
uninstall-pkgdataDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(pkgdata_DATA)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/$$p; \
|
||||
@list='$(pkgdata_DATA)'; for p in $$list; do \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/$$f; \
|
||||
done
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
here=`pwd` && cd $(srcdir) \
|
||||
&& mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
|
||||
&& mkid -f$$here/ID $$unique $(LISP)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||
tags=; \
|
||||
|
@ -206,9 +211,13 @@ distdir: $(DISTFILES)
|
|||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu stage2/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
|
@ -220,40 +229,53 @@ mostlyclean-depend:
|
|||
clean-depend:
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf .deps
|
||||
|
||||
maintainer-clean-depend:
|
||||
-rm -rf .deps
|
||||
|
||||
%.o: %.c
|
||||
@echo '$(COMPILE) -c $<'; \
|
||||
$(COMPILE) -Wp,-MD,.deps/$(*F).P -c $<
|
||||
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm .deps/$(*F).pp
|
||||
|
||||
%.lo: %.c
|
||||
@echo '$(LTCOMPILE) -c $<'; \
|
||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).p -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o:/\1.lo \1.o:/' \
|
||||
< .deps/$(*F).p > .deps/$(*F).P
|
||||
@-rm -f .deps/$(*F).p
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm -f .deps/$(*F).pp
|
||||
info-am:
|
||||
info: info-am
|
||||
dvi-am:
|
||||
dvi: dvi-am
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data: install-pkgdataDATA
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-pkgdataDATA
|
||||
install-data-am: install-pkgdataDATA
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am: uninstall-pkgdataDATA
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile $(PROGRAMS) $(DATA)
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DATADIR)$(pkgdatadir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
|
@ -263,40 +285,46 @@ clean-generic:
|
|||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(DISTCLEANFILES)
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-noinstPROGRAMS mostlyclean-compile \
|
||||
mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
|
||||
mostlyclean-tags mostlyclean-depend mostlyclean-generic
|
||||
|
||||
clean: clean-noinstPROGRAMS clean-compile clean-tags clean-depend \
|
||||
clean-generic mostlyclean
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
distclean: distclean-noinstPROGRAMS distclean-compile distclean-tags \
|
||||
distclean-depend distclean-generic clean
|
||||
-rm -f config.status
|
||||
clean-am: clean-noinstPROGRAMS clean-compile clean-tags clean-depend \
|
||||
clean-generic mostlyclean-am
|
||||
|
||||
maintainer-clean: maintainer-clean-noinstPROGRAMS \
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-noinstPROGRAMS distclean-compile distclean-tags \
|
||||
distclean-depend distclean-generic clean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
maintainer-clean-am: maintainer-clean-noinstPROGRAMS \
|
||||
maintainer-clean-compile maintainer-clean-tags \
|
||||
maintainer-clean-depend maintainer-clean-generic \
|
||||
distclean
|
||||
distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
.PHONY: mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
|
||||
clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
|
||||
mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile uninstall-pkgdataDATA install-pkgdataDATA tags \
|
||||
mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \
|
||||
distdir mostlyclean-depend distclean-depend clean-depend \
|
||||
maintainer-clean-depend info dvi installcheck install-exec install-data \
|
||||
install uninstall all installdirs mostlyclean-generic distclean-generic \
|
||||
clean-generic maintainer-clean-generic clean mostlyclean distclean \
|
||||
maintainer-clean
|
||||
maintainer-clean-depend info-am info dvi-am dvi check check-am \
|
||||
installcheck-am installcheck install-exec-am install-exec \
|
||||
install-data-am install-data install-am install uninstall-am uninstall \
|
||||
all-redirect all-am all install-strip installdirs mostlyclean-generic \
|
||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
stage2.exec: $(stage2_exec_LDADD)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Makefile.in generated automatically by automake 1.3 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4a from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
@ -10,8 +10,7 @@
|
|||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
@ -32,7 +31,7 @@ mandir = @mandir@
|
|||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DISTDIR =
|
||||
DESTDIR =
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
|
@ -47,6 +46,7 @@ INSTALL = @INSTALL@
|
|||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_FLAG =
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
|
@ -70,6 +70,7 @@ host_vendor = @host_vendor@
|
|||
sbingrub = @sbingrub@
|
||||
stage2debug = @stage2debug@
|
||||
|
||||
|
||||
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
||||
pkgdata_DATA = $(stage2debug)
|
||||
EXTRA_DATA = stage2_debug
|
||||
|
@ -79,12 +80,14 @@ MOSTLYCLEANFILES = stage2_debug.exec
|
|||
# We can't use builtins or standard includes.
|
||||
COMPILE = $(CC) -fno-builtin -nostdinc -DDEBUG=1 $(DEFS) $(INCLUDES) \
|
||||
$(CPPFLAGS) $(CFLAGS)
|
||||
|
||||
INCLUDES = -I$(top_srcdir)/shared_src
|
||||
|
||||
# asm.o absolutely needs to come first!
|
||||
stage2_debug_exec_LDADD = asm.o boot.o common.o char_io.o cmdline.o disk_io.o \
|
||||
gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o stage2.o bios.o
|
||||
|
||||
|
||||
EXTRA_PROGRAMS = stage2_debug.exec
|
||||
|
||||
# FIXME: Automake hackery.
|
||||
|
@ -104,21 +107,21 @@ cmdline.o disk_io.o gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o \
|
|||
stage2.o bios.o
|
||||
stage2_debug_exec_LDFLAGS =
|
||||
CFLAGS = @CFLAGS@
|
||||
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DATA = $(pkgdata_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
DIST_COMMON = $(EXTRA_DATA) $(pkgdata_DATA) Makefile.am Makefile.in
|
||||
|
||||
|
||||
GZIP = --best
|
||||
GZIP_ENV = --best
|
||||
SOURCES = $(stage2_debug_exec_SOURCES)
|
||||
OBJECTS = $(stage2_debug_exec_OBJECTS)
|
||||
|
||||
all: Makefile $(DATA)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .o .s
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu stage2_debug/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
|
@ -146,26 +149,29 @@ install-pkgdataDATA: $(pkgdata_DATA)
|
|||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
|
||||
@list='$(pkgdata_DATA)'; for p in $$list; do \
|
||||
if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p; \
|
||||
else if test -f $$p; then \
|
||||
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p; \
|
||||
fi; fi; \
|
||||
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
$(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \
|
||||
done
|
||||
|
||||
uninstall-pkgdataDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(pkgdata_DATA)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/$$p; \
|
||||
@list='$(pkgdata_DATA)'; for p in $$list; do \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/$$f; \
|
||||
done
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
here=`pwd` && cd $(srcdir) \
|
||||
&& mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
|
||||
&& mkid -f$$here/ID $$unique $(LISP)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||
tags=; \
|
||||
|
@ -198,9 +204,13 @@ distdir: $(DISTFILES)
|
|||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu stage2_debug/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
|
@ -212,40 +222,53 @@ mostlyclean-depend:
|
|||
clean-depend:
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf .deps
|
||||
|
||||
maintainer-clean-depend:
|
||||
-rm -rf .deps
|
||||
|
||||
%.o: %.c
|
||||
@echo '$(COMPILE) -c $<'; \
|
||||
$(COMPILE) -Wp,-MD,.deps/$(*F).P -c $<
|
||||
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm .deps/$(*F).pp
|
||||
|
||||
%.lo: %.c
|
||||
@echo '$(LTCOMPILE) -c $<'; \
|
||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).p -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o:/\1.lo \1.o:/' \
|
||||
< .deps/$(*F).p > .deps/$(*F).P
|
||||
@-rm -f .deps/$(*F).p
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm -f .deps/$(*F).pp
|
||||
info-am:
|
||||
info: info-am
|
||||
dvi-am:
|
||||
dvi: dvi-am
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data: install-pkgdataDATA
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-pkgdataDATA
|
||||
install-data-am: install-pkgdataDATA
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am: uninstall-pkgdataDATA
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile $(DATA)
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DATADIR)$(pkgdatadir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
|
@ -255,36 +278,43 @@ clean-generic:
|
|||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(DISTCLEANFILES)
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-compile mostlyclean-tags mostlyclean-depend \
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-tags mostlyclean-depend \
|
||||
mostlyclean-generic
|
||||
|
||||
clean: clean-compile clean-tags clean-depend clean-generic mostlyclean
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
distclean: distclean-compile distclean-tags distclean-depend \
|
||||
distclean-generic clean
|
||||
-rm -f config.status
|
||||
clean-am: clean-compile clean-tags clean-depend clean-generic \
|
||||
mostlyclean-am
|
||||
|
||||
maintainer-clean: maintainer-clean-compile maintainer-clean-tags \
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-compile distclean-tags distclean-depend \
|
||||
distclean-generic clean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
maintainer-clean-am: maintainer-clean-compile maintainer-clean-tags \
|
||||
maintainer-clean-depend maintainer-clean-generic \
|
||||
distclean
|
||||
distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
.PHONY: mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile uninstall-pkgdataDATA install-pkgdataDATA tags \
|
||||
mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \
|
||||
distdir mostlyclean-depend distclean-depend clean-depend \
|
||||
maintainer-clean-depend info dvi installcheck install-exec install-data \
|
||||
install uninstall all installdirs mostlyclean-generic distclean-generic \
|
||||
clean-generic maintainer-clean-generic clean mostlyclean distclean \
|
||||
maintainer-clean
|
||||
maintainer-clean-depend info-am info dvi-am dvi check check-am \
|
||||
installcheck-am installcheck install-exec-am install-exec \
|
||||
install-data-am install-data install-am install uninstall-am uninstall \
|
||||
all-redirect all-am all install-strip installdirs mostlyclean-generic \
|
||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
stage2_debug.exec: $(stage2_debug_exec_LDADD)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue