add a workaround for some BIOSes into stage1, remove our own rult to produce info files.

This commit is contained in:
okuji 1999-10-26 03:44:30 +00:00
parent c17c927969
commit 9d7344365c
8 changed files with 42 additions and 221 deletions

View file

@ -1,3 +1,11 @@
1999-10-25 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
* stage1/stage1.S: Long jump to real_start, because some bogus
BIOSes jump to 07C0:0000 instead of 0000:7C00.
(real_start): New label.
* docs/Makefile.am (grub.info): Removed. Use the default rule
instead.
1999-10-25 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp> 1999-10-25 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
* stage2/asm.S [DEFINE_TRACK_INT13] (int3_handler): Save the * stage2/asm.S [DEFINE_TRACK_INT13] (int3_handler): Save the

12
README
View file

@ -15,7 +15,7 @@ See the file NEWS for a description of recent changes to GRUB.
You need recent developmental environment to build GRUB. We recommend You need recent developmental environment to build GRUB. We recommend
you use the following utilities: you use the following utilities:
* binutils 2.9.1.0.23 and later (Do not use early 2.9.1.0.x!) * binutils 2.9.1.0.23 or later (Do not use early 2.9.1.0.x!)
Binutils has changed the behavior of 16bit assembler between 2.9.1 Binutils has changed the behavior of 16bit assembler between 2.9.1
and 2.9.1.0.x, and we support only 2.9.1.0.x and higher. It is available and 2.9.1.0.x, and we support only 2.9.1.0.x and higher. It is available
@ -34,15 +34,21 @@ The latter is what you should see. If you have installed a recent
version of binutils but this version number is not identical with it, version of binutils but this version number is not identical with it,
you need to specify the option ``--with-binutils=DIR'' for configure. you need to specify the option ``--with-binutils=DIR'' for configure.
* texinfo 4.0 or later
We use some new macros in the manuals, so you need a recent TeXinfo
release. See http://www.gnu.org/software/texinfo/texinfo.html, for more
information.
These below are required when you develop GRUB or when you get it from These below are required when you develop GRUB or when you get it from
the CVS: the CVS:
* automake 19990620 and later * automake 19990620 or later
The new feature, per-executable flags, is requred, so you need to get The new feature, per-executable flags, is requred, so you need to get
an unreleased version from the CVS. See an unreleased version from the CVS. See
http://sourceware.cygnus.com/automake/ for more information. http://sourceware.cygnus.com/automake/, for more information.
See the file INSTALL for instructions on how to build and install the See the file INSTALL for instructions on how to build and install the

View file

@ -1,15 +1,3 @@
dnl aclocal.m4 generated automatically by aclocal 1.4a
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
dnl grub_ASM_USCORE checks if C symbols get an underscore after dnl grub_ASM_USCORE checks if C symbols get an underscore after
dnl compiling to assembler. dnl compiling to assembler.
dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by
@ -295,174 +283,3 @@ fi
AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol]) AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol])
]) ])
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
# serial 1
dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN(AM_INIT_AUTOMAKE,
[AC_REQUIRE([AC_PROG_INSTALL])
dnl We require 2.13 because we rely on SHELL being computed by configure.
AC_PREREQ([2.13])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
AC_SUBST(VERSION)
dnl test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
dnl Set install_sh for make dist
install_sh="$missing_dir/install-sh"
test -f "$install_sh" || install_sh="$missing_dir/install.sh"
AC_SUBST(install_sh)
dnl We check for tar when the user configures the end package.
dnl This is sad, since we only need this for "dist". However,
dnl there's no other good way to do it. We prefer GNU tar if
dnl we can find it. If we can't find a tar, it doesn't really matter.
AC_CHECK_PROGS(AMTAR, gnutar gtar tar)
dnl We need awk for the "check" target. The system "awk" is bad on
dnl some platforms.
AC_REQUIRE([AC_PROG_AWK])
AMTARFLAGS=
if test -n "$AMTAR"; then
if $SHELL -c "$AMTAR --version" > /dev/null 2>&1; then
dnl We have GNU tar.
AMTARFLAGS=o
fi
fi
AC_SUBST(AMTARFLAGS)
AC_REQUIRE([AC_PROG_MAKE_SET])])
#
# Check to make sure that the build environment is sane.
#
AC_DEFUN(AM_SANITY_CHECK,
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftestfile
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
if test "[$]*" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftestfile`
fi
if test "[$]*" != "X $srcdir/configure conftestfile" \
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "[$]2" = conftestfile
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
rm -f conftest*
AC_MSG_RESULT(yes)])
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
dnl The program must properly implement --version.
AC_DEFUN(AM_MISSING_PROG,
[AC_MSG_CHECKING(for working $2)
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
if ($2 --version) < /dev/null > /dev/null 2>&1; then
$1=$2
AC_MSG_RESULT(found)
else
$1="$3/missing $2"
AC_MSG_RESULT(missing)
fi
AC_SUBST($1)])
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
[AC_PREREQ([2.12])
AC_CONFIG_HEADER([$1])
dnl When config.status generates a header, we must update the stamp-h file.
dnl This file resides in the same directory as the config header
dnl that is generated. We must strip everything past the first ":",
dnl and everything past the last "/".
AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
<<am_indx=1
for am_file in <<$1>>; do
case " <<$>>CONFIG_HEADERS " in
*" <<$>>am_file "*<<)>>
echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
;;
esac
am_indx=`expr "<<$>>am_indx" + 1`
done<<>>dnl>>)
changequote([,]))])
# Add --enable-maintainer-mode option to configure.
# From Jim Meyering
# serial 1
AC_DEFUN(AM_MAINTAINER_MODE,
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
dnl maintainer-mode is disabled by default
AC_ARG_ENABLE(maintainer-mode,
[ --enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer],
USE_MAINTAINER_MODE=$enableval,
USE_MAINTAINER_MODE=no)
AC_MSG_RESULT($USE_MAINTAINER_MODE)
AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
MAINT=$MAINTAINER_MODE_TRUE
AC_SUBST(MAINT)dnl
]
)
# Define a conditional.
AC_DEFUN(AM_CONDITIONAL,
[AC_SUBST($1_TRUE)
AC_SUBST($1_FALSE)
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi])

13
aclocal.m4 vendored
View file

@ -10,18 +10,6 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE. dnl PARTICULAR PURPOSE.
dnl aclocal.m4 generated automatically by aclocal 1.4a
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
dnl grub_ASM_USCORE checks if C symbols get an underscore after dnl grub_ASM_USCORE checks if C symbols get an underscore after
dnl compiling to assembler. dnl compiling to assembler.
dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by
@ -478,4 +466,3 @@ else
$1_FALSE= $1_FALSE=
fi]) fi])

View file

@ -9,6 +9,15 @@
/* Defined if _start is defined. */ /* Defined if _start is defined. */
#undef HAVE_USCORE_START_SYMBOL #undef HAVE_USCORE_START_SYMBOL
/* Defined if __bss_start is defined. */
#undef HAVE_USCORE_USCORE_BSS_START_SYMBOL
/* Defined if edata is defined. */
#undef HAVE_EDATA_SYMBOL
/* Defined if _edata is defined. */
#undef HAVE_USCORE_EDATA_SYMBOL
/* Defined if end is defined. */ /* Defined if end is defined. */
#undef HAVE_END_SYMBOL #undef HAVE_END_SYMBOL

View file

@ -24,12 +24,6 @@ EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \
%.S.texi: %.S $(srcdir)/$(SRC2TEXI) %.S.texi: %.S $(srcdir)/$(SRC2TEXI)
$(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@
# FIXME: Use this rule until Debian has the new Texinfo.
grub.info: grub.texi
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& sed 's/@command/@file/g; s/ifnottex/ifinfo/' grub.texi | $(MAKEINFO)
if MAINTAINER_MODE if MAINTAINER_MODE
$(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN) $(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN)
$(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \ $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \

View file

@ -83,6 +83,9 @@ install_sh = @install_sh@
info_TEXINFOS = grub.texi multiboot.texi info_TEXINFOS = grub.texi multiboot.texi
grub_TEXINFOS = tutorial.texi user-ref.texi prog-ref.texi \
appendices.texi
EXAMPLES = boot.S kernel.c multiboot.h EXAMPLES = boot.S kernel.c multiboot.h
multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi
man_MANS = grub.8 mbchk.1 man_MANS = grub.8 mbchk.1
@ -90,13 +93,8 @@ HELP2MAN = help2man
SRC2TEXI = src2texi SRC2TEXI = src2texi
noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI) noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI)
# The unfinished manuals.
UNFINISHED_MANUALS = new-grub.texi tutorial.texi user-ref.texi \
prog-ref.texi appendices.texi
EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \ EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \
$(EXAMPLES) $(multiboot_TEXINFOS) $(UNFINISHED_MANUALS) $(EXAMPLES) $(multiboot_TEXINFOS)
subdir = docs subdir = docs
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -114,8 +112,8 @@ man8dir = $(mandir)/man8
MANS = $(man_MANS) MANS = $(man_MANS)
NROFF = nroff NROFF = nroff
DIST_COMMON = $(multiboot_TEXINFOS) Makefile.am Makefile.in mdate-sh \ DIST_COMMON = $(grub_TEXINFOS) $(multiboot_TEXINFOS) Makefile.am \
stamp-vti texinfo.tex version.texi Makefile.in mdate-sh stamp-vti texinfo.tex version.texi
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@ -155,8 +153,8 @@ distclean-vti:
maintainer-clean-vti: maintainer-clean-vti:
-@MAINTAINER_MODE_TRUE@rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi -@MAINTAINER_MODE_TRUE@rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
grub.info: grub.texi version.texi grub.info: grub.texi version.texi $(grub_TEXINFOS)
grub.dvi: grub.texi version.texi grub.dvi: grub.texi version.texi $(grub_TEXINFOS)
multiboot.info: multiboot.texi $(multiboot_TEXINFOS) multiboot.info: multiboot.texi $(multiboot_TEXINFOS)
@ -457,12 +455,6 @@ maintainer-clean-generic clean mostlyclean distclean maintainer-clean
%.S.texi: %.S $(srcdir)/$(SRC2TEXI) %.S.texi: %.S $(srcdir)/$(SRC2TEXI)
$(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@
# FIXME: Use this rule until Debian has the new Texinfo.
grub.info: grub.texi
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& sed 's/@command/@file/g; s/ifnottex/ifinfo/' grub.texi | $(MAKEINFO)
@MAINTAINER_MODE_TRUE@$(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN) @MAINTAINER_MODE_TRUE@$(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN)
@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \ @MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \
@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< @MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $<

View file

@ -102,6 +102,14 @@ after_BPB:
/* general setup */ /* general setup */
cli /* we're not safe here! */ cli /* we're not safe here! */
/*
* ljmp to the next instruction because some bogus BIOSes
* jump to 07C0:0000 instead of 0000:7C00.
*/
ljmp $0, $ABS(real_start)
real_start:
/* set up %ds and %ss as offset from 0 */ /* set up %ds and %ss as offset from 0 */
xorw %ax, %ax xorw %ax, %ax
movw %ax, %ds movw %ax, %ds