2004-04-04 Yoshinori K. Okuji <okuji@enbug.org>

All symbols prefixed with PUPA_ and pupa_ are renamed to GRUB_
	and grub_, respectively. Because the conversion is trivial and
	mechanical, I omit the details here. Please refer to the CVS
	if you need more information.
This commit is contained in:
okuji 2004-04-04 13:46:03 +00:00
parent 6a1425510d
commit 4b13b216f4
125 changed files with 6198 additions and 6181 deletions

View file

@ -6,5 +6,5 @@ Yoshinori K. Okuji designed and implemented the initial version.
Jeroen Dekkers added initrd support, Multiboot support, and fixed bugs
in ext2fs.
Marco Gerards added ext2fs support, pupa-emu, a new command-line
Marco Gerards added ext2fs support, grub-emu, a new command-line
engine, and fixed many bugs.

View file

@ -1,3 +1,10 @@
2004-04-04 Yoshinori K. Okuji <okuji@enbug.org>
All symbols prefixed with PUPA_ and pupa_ are renamed to GRUB_
and grub_, respectively. Because the conversion is trivial and
mechanical, I omit the details here. Please refer to the CVS
if you need more information.
2004-04-04 Yoshinori K. Okuji <okuji@enbug.org>
* include/pupa: Renamed to ...

18
INSTALL
View file

@ -1,15 +1,15 @@
-*- Text -*-
This is the PUPA. Welcome.
This is the GRUB. Welcome.
This file contains instructions for compiling and installing the PUPA.
This file contains instructions for compiling and installing the GRUB.
The Requirements
================
PUPA depends on some software packages installed into your system. If
GRUB depends on some software packages installed into your system. If
you don't have any of them, please obtain and install them before
configuring the PUPA.
configuring the GRUB.
* GCC 2.95 or later
* GNU Make
@ -17,12 +17,12 @@ configuring the PUPA.
* Other standard GNU/Unix tools
* LZO 1.02 or later
If you'd like to develop PUPA, these below are also required.
If you'd like to develop GRUB, these below are also required.
* Ruby 1.6 or later
* Autoconf 2.53 or later
Configuring the PUPA
Configuring the GRUB
====================
The `configure' shell script attempts to guess correct values for
@ -46,7 +46,7 @@ called `autoconf'. You only need `configure.in' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
Building the PUPA
Building the GRUB
=================
The simplest way to compile this package is:
@ -111,10 +111,10 @@ If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure'
the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Please note, however, that the PUPA knows where it is located in the
Please note, however, that the GRUB knows where it is located in the
filesystem. If you have installed it in an unusual location, the
system might not work properly, or at all. The chief utility of these
options for the PUPA is to allow you to "install" in some alternate
options for the GRUB is to allow you to "install" in some alternate
location, and then copy these to the actual root filesystem later.

View file

@ -60,7 +60,7 @@ CPPFLAGS = -I. -Iinclude -I$(srcdir)/include -Wall -W
BUILD_CC = @BUILD_CC@
BUILD_CFLAGS = -g -O2
BUILD_CPPFLAGS = -I. -Iinclude -I$(srcdir)/include -Wall -W \
-DPUPA_DATADIR=\"$(pkgdatadir)\"
-DGRUB_DATADIR=\"$(pkgdatadir)\"
OBJCOPY = @OBJCOPY@
STRIP = @STRIP@
NM = @NM@
@ -86,14 +86,14 @@ DISK_DISTFILES = $(addprefix disk/i386/pc/,biosdisk.c partition.c)
FS_DISTFILES = $(addprefix fs/,fat.c)
INCLUDE_DISTFILES = $(addprefix include/pupa/,boot.h device.h disk.h \
INCLUDE_DISTFILES = $(addprefix include/grub/,boot.h device.h disk.h \
dl.h elf.h err.h file.h fs.h kernel.h loader.h misc.h mm.h \
net.h rescue.h symbol.h term.h types.h) \
$(addprefix include/pupa/util/,misc.h resolve.h) \
include/pupa/i386/types.h \
$(addprefix include/pupa/i386/pc/,biosdisk.h boot.h \
$(addprefix include/grub/util/,misc.h resolve.h) \
include/grub/i386/types.h \
$(addprefix include/grub/i386/pc/,biosdisk.h boot.h \
console.h init.h kernel.h loader.h memory.h partition.h) \
$(addprefix include/pupa/i386/pc/util/,biosdisk.h)
$(addprefix include/grub/i386/pc/util/,biosdisk.h)
KERN_DISTFILES = $(addprefix kern/,device.c disk.c dl.c err.c file.c \
fs.c loader.c main.c misc.c mm.c rescue.c term.c) \
@ -105,8 +105,8 @@ LOADER_DISTFILES = $(addprefix loader/i386/pc/,chainloader.c)
TERM_DISTFILES = $(addprefix term/i386/pc/,console.c)
UTIL_DISTFILES = $(addprefix util/,genmoddep.c misc.c resolve.c) \
$(addprefix util/i386/pc/,biosdisk.c pupa-mkimage.c \
pupa-setup.c)
$(addprefix util/i386/pc/,biosdisk.c grub-mkimage.c \
grub-setup.c)
DISTFILES = $(COMMON_DISTFILES) $(BOOT_DISTFILES) $(CONF_DISTFILES) \
$(DISK_DISTFILES) $(FS_DISTFILES) $(INCLUDE_DISTFILES) \
@ -120,7 +120,7 @@ SCRIPTS =
CLEANFILES =
MOSTLYCLEANFILES =
DISTCLEANFILES = config.status config.cache config.log config.h \
Makefile stamp-h include/pupa/cpu include/pupa/machine
Makefile stamp-h include/grub/cpu include/grub/machine
MAINTAINER_CLEANFILES = $(srcdir)/configure $(addprefix $(srcdir)/,$(MKFILES))
# The default target.

12
NEWS
View file

@ -1,3 +1,15 @@
New in 1.90:
* Rename the project name PUPA to GRUB. Now this version is the
developmental version of GRUB officially.
* The GRUB emulator ``grub-emu'' is added.
* Add support for newworld Mac. This should work with other
PowerPC-based machines as well, if they use IEEE 1275
(Open Firmware).
New in 0.7:
* Problems in cross-compiling PUPA are fixed.

2
README
View file

@ -21,7 +21,7 @@ use (yet). For now, you can install GRUB 2 into a floppy by these
instructions:
$ configure && make
$ ./pupa-mkimage -v -d . -o core.img _chain ext2
$ ./grub-mkimage -v -d . -o core.img _chain ext2
$ dd if=boot.img of=/dev/fd0 bs=512 count=1
$ dd if=core.img of=/dev/fd0 bs=512 seek=1

6
TODO
View file

@ -1,9 +1,9 @@
-*- Mode: Outline -*-
Before working on anything in this file, it's very important that you
make contact with the core PUPA developers. Things herein might be
make contact with the core GRUB developers. Things herein might be
slightly out of date or otherwise not easy to understand at first
glance. So write to <pupa-devel@nongnu.org> first.
glance. So write to <grub-devel@gnu.org> first.
Priorities:
Reported bugs generally have top priority.
@ -13,8 +13,6 @@ Priorities:
higher priority.
* Replace PUPA with GRUB (or GRUB 2). !!!
* Add more filesystems (such as jfs, ffs, and reiserfs). !
* Add journal playback support to ext2fs (so it will become ext3fs).

168
aclocal.m4 vendored
View file

@ -1,11 +1,11 @@
dnl pupa_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 Written by Pavel Roskin. Based on grub_ASM_EXT_C written by
dnl Erich Boleyn and modified by Yoshinori K. Okuji.
AC_DEFUN(pupa_ASM_USCORE,
AC_DEFUN(grub_ASM_USCORE,
[AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING([if C symbols get an underscore after compilation])
AC_CACHE_VAL(pupa_cv_asm_uscore,
AC_CACHE_VAL(grub_cv_asm_uscore,
[cat > conftest.c <<\EOF
int
func (int *list)
@ -22,27 +22,27 @@ else
fi
if grep _func conftest.s >/dev/null 2>&1; then
pupa_cv_asm_uscore=yes
grub_cv_asm_uscore=yes
else
pupa_cv_asm_uscore=no
grub_cv_asm_uscore=no
fi
rm -f conftest*])
if test "x$pupa_cv_asm_uscore" = xyes; then
AC_DEFINE_UNQUOTED([HAVE_ASM_USCORE], $pupa_cv_asm_uscore,
if test "x$grub_cv_asm_uscore" = xyes; then
AC_DEFINE_UNQUOTED([HAVE_ASM_USCORE], $grub_cv_asm_uscore,
[Define if C symbols get an underscore after compilation])
fi
AC_MSG_RESULT([$pupa_cv_asm_uscore])
AC_MSG_RESULT([$grub_cv_asm_uscore])
])
dnl Some versions of `objcopy -O binary' vary their output depending
dnl on the link address.
AC_DEFUN(pupa_PROG_OBJCOPY_ABSOLUTE,
AC_DEFUN(grub_PROG_OBJCOPY_ABSOLUTE,
[AC_MSG_CHECKING([whether ${OBJCOPY} works for absolute addresses])
AC_CACHE_VAL(pupa_cv_prog_objcopy_absolute,
AC_CACHE_VAL(grub_cv_prog_objcopy_absolute,
[cat > conftest.c <<\EOF
void
cmain (void)
@ -55,7 +55,7 @@ if AC_TRY_EVAL(ac_compile) && test -s conftest.o; then :
else
AC_MSG_ERROR([${CC-cc} cannot compile C source code])
fi
pupa_cv_prog_objcopy_absolute=yes
grub_cv_prog_objcopy_absolute=yes
for link_addr in 2000 8000 7C00; do
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec]); then :
else
@ -68,15 +68,15 @@ for link_addr in 2000 8000 7C00; do
if test ! -f conftest.old || AC_TRY_COMMAND([cmp -s conftest.old conftest]); then
mv -f conftest conftest.old
else
pupa_cv_prog_objcopy_absolute=no
grub_cv_prog_objcopy_absolute=no
break
fi
done
rm -f conftest*])
AC_MSG_RESULT([$pupa_cv_prog_objcopy_absolute])
AC_MSG_RESULT([$grub_cv_prog_objcopy_absolute])
if test "x$pupa_cv_prog_objcopy_absolute" = xno; then
AC_MSG_ERROR([PUPA requires a working absolute objcopy; upgrade your binutils])
if test "x$grub_cv_prog_objcopy_absolute" = xno; then
AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils])
fi
])
@ -94,77 +94,77 @@ dnl
dnl We only support the newer versions, because the old versions cause
dnl major pain, by requiring manual assembly to get 16-bit instructions into
dnl asm files.
AC_DEFUN(pupa_I386_ASM_ADDR32,
AC_DEFUN(grub_I386_ASM_ADDR32,
[AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([pupa_I386_ASM_PREFIX_REQUIREMENT])
AC_REQUIRE([grub_I386_ASM_PREFIX_REQUIREMENT])
AC_MSG_CHECKING([for .code16 addr32 assembler support])
AC_CACHE_VAL(pupa_cv_i386_asm_addr32,
AC_CACHE_VAL(grub_cv_i386_asm_addr32,
[cat > conftest.s.in <<\EOF
.code16
l1: @ADDR32@ movb %al, l1
EOF
if test "x$pupa_cv_i386_asm_prefix_requirement" = xyes; then
if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then
sed -e s/@ADDR32@/addr32/ < conftest.s.in > conftest.s
else
sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s
fi
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then
pupa_cv_i386_asm_addr32=yes
grub_cv_i386_asm_addr32=yes
else
pupa_cv_i386_asm_addr32=no
grub_cv_i386_asm_addr32=no
fi
rm -f conftest*])
AC_MSG_RESULT([$pupa_cv_i386_asm_addr32])])
AC_MSG_RESULT([$grub_cv_i386_asm_addr32])])
dnl Later versions of GAS requires that addr32 and data32 prefixes
dnl appear in the same lines as the instructions they modify, while
dnl earlier versions requires that they appear in separate lines.
AC_DEFUN(pupa_I386_ASM_PREFIX_REQUIREMENT,
AC_DEFUN(grub_I386_ASM_PREFIX_REQUIREMENT,
[AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING(dnl
[whether addr32 must be in the same line as the instruction])
AC_CACHE_VAL(pupa_cv_i386_asm_prefix_requirement,
AC_CACHE_VAL(grub_cv_i386_asm_prefix_requirement,
[cat > conftest.s <<\EOF
.code16
l1: addr32 movb %al, l1
EOF
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then
pupa_cv_i386_asm_prefix_requirement=yes
grub_cv_i386_asm_prefix_requirement=yes
else
pupa_cv_i386_asm_prefix_requirement=no
grub_cv_i386_asm_prefix_requirement=no
fi
rm -f conftest*])
if test "x$pupa_cv_i386_asm_prefix_requirement" = xyes; then
pupa_tmp_addr32="addr32"
pupa_tmp_data32="data32"
if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then
grub_tmp_addr32="addr32"
grub_tmp_data32="data32"
else
pupa_tmp_addr32="addr32;"
pupa_tmp_data32="data32;"
grub_tmp_addr32="addr32;"
grub_tmp_data32="data32;"
fi
AC_DEFINE_UNQUOTED([ADDR32], $pupa_tmp_addr32,
AC_DEFINE_UNQUOTED([ADDR32], $grub_tmp_addr32,
[Define it to \"addr32\" or \"addr32;\" to make GAS happy])
AC_DEFINE_UNQUOTED([DATA32], $pupa_tmp_data32,
AC_DEFINE_UNQUOTED([DATA32], $grub_tmp_data32,
[Define it to \"data32\" or \"data32;\" to make GAS happy])
AC_MSG_RESULT([$pupa_cv_i386_asm_prefix_requirement])])
AC_MSG_RESULT([$grub_cv_i386_asm_prefix_requirement])])
dnl Older versions of GAS require that absolute indirect calls/jumps are
dnl not prefixed with `*', while later versions warn if not prefixed.
AC_DEFUN(pupa_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK,
AC_DEFUN(grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK,
[AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING(dnl
[whether an absolute indirect call/jump must not be prefixed with an asterisk])
AC_CACHE_VAL(pupa_cv_i386_asm_absolute_without_asterisk,
AC_CACHE_VAL(grub_cv_i386_asm_absolute_without_asterisk,
[cat > conftest.s <<\EOF
lcall *(offset)
offset:
@ -173,46 +173,46 @@ offset:
EOF
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then
pupa_cv_i386_asm_absolute_without_asterisk=no
grub_cv_i386_asm_absolute_without_asterisk=no
else
pupa_cv_i386_asm_absolute_without_asterisk=yes
grub_cv_i386_asm_absolute_without_asterisk=yes
fi
rm -f conftest*])
if test "x$pupa_cv_i386_asm_absolute_without_asterisk" = xyes; then
if test "x$grub_cv_i386_asm_absolute_without_asterisk" = xyes; then
AC_DEFINE([ABSOLUTE_WITHOUT_ASTERISK], 1,
[Define it if GAS requires that absolute indirect calls/jumps are not prefixed with an asterisk])
fi
AC_MSG_RESULT([$pupa_cv_i386_asm_absolute_without_asterisk])])
AC_MSG_RESULT([$grub_cv_i386_asm_absolute_without_asterisk])])
dnl Check what symbol is defined as a start symbol.
dnl Written by Yoshinori K. Okuji.
AC_DEFUN(pupa_CHECK_START_SYMBOL,
AC_DEFUN(grub_CHECK_START_SYMBOL,
[AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING([if start is defined by the compiler])
AC_CACHE_VAL(pupa_cv_check_start_symbol,
AC_CACHE_VAL(grub_cv_check_start_symbol,
[AC_TRY_LINK([], [asm ("incl start")],
pupa_cv_check_start_symbol=yes,
pupa_cv_check_start_symbol=no)])
grub_cv_check_start_symbol=yes,
grub_cv_check_start_symbol=no)])
AC_MSG_RESULT([$pupa_cv_check_start_symbol])
AC_MSG_RESULT([$grub_cv_check_start_symbol])
AC_MSG_CHECKING([if _start is defined by the compiler])
AC_CACHE_VAL(pupa_cv_check_uscore_start_symbol,
AC_CACHE_VAL(grub_cv_check_uscore_start_symbol,
[AC_TRY_LINK([], [asm ("incl _start")],
pupa_cv_check_uscore_start_symbol=yes,
pupa_cv_check_uscore_start_symbol=no)])
grub_cv_check_uscore_start_symbol=yes,
grub_cv_check_uscore_start_symbol=no)])
AC_MSG_RESULT([$pupa_cv_check_uscore_start_symbol])
AC_MSG_RESULT([$grub_cv_check_uscore_start_symbol])
AH_TEMPLATE([START_SYMBOL], [Define it to either start or _start])
if test "x$pupa_cv_check_start_symbol" = xyes; then
if test "x$grub_cv_check_start_symbol" = xyes; then
AC_DEFINE([START_SYMBOL], [start])
elif test "x$pupa_cv_check_uscore_start_symbol" = xyes; then
elif test "x$grub_cv_check_uscore_start_symbol" = xyes; then
AC_DEFINE([START_SYMBOL], [_start])
else
AC_MSG_ERROR([neither start nor _start is defined])
@ -221,39 +221,39 @@ fi
dnl Check what symbol is defined as a bss start symbol.
dnl Written by Michael Hohmoth and Yoshinori K. Okuji.
AC_DEFUN(pupa_CHECK_BSS_START_SYMBOL,
AC_DEFUN(grub_CHECK_BSS_START_SYMBOL,
[AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING([if __bss_start is defined by the compiler])
AC_CACHE_VAL(pupa_cv_check_uscore_uscore_bss_start_symbol,
AC_CACHE_VAL(grub_cv_check_uscore_uscore_bss_start_symbol,
[AC_TRY_LINK([], [asm ("incl __bss_start")],
pupa_cv_check_uscore_uscore_bss_start_symbol=yes,
pupa_cv_check_uscore_uscore_bss_start_symbol=no)])
grub_cv_check_uscore_uscore_bss_start_symbol=yes,
grub_cv_check_uscore_uscore_bss_start_symbol=no)])
AC_MSG_RESULT([$pupa_cv_check_uscore_uscore_bss_start_symbol])
AC_MSG_RESULT([$grub_cv_check_uscore_uscore_bss_start_symbol])
AC_MSG_CHECKING([if edata is defined by the compiler])
AC_CACHE_VAL(pupa_cv_check_edata_symbol,
AC_CACHE_VAL(grub_cv_check_edata_symbol,
[AC_TRY_LINK([], [asm ("incl edata")],
pupa_cv_check_edata_symbol=yes,
pupa_cv_check_edata_symbol=no)])
grub_cv_check_edata_symbol=yes,
grub_cv_check_edata_symbol=no)])
AC_MSG_RESULT([$pupa_cv_check_edata_symbol])
AC_MSG_RESULT([$grub_cv_check_edata_symbol])
AC_MSG_CHECKING([if _edata is defined by the compiler])
AC_CACHE_VAL(pupa_cv_check_uscore_edata_symbol,
AC_CACHE_VAL(grub_cv_check_uscore_edata_symbol,
[AC_TRY_LINK([], [asm ("incl _edata")],
pupa_cv_check_uscore_edata_symbol=yes,
pupa_cv_check_uscore_edata_symbol=no)])
grub_cv_check_uscore_edata_symbol=yes,
grub_cv_check_uscore_edata_symbol=no)])
AC_MSG_RESULT([$pupa_cv_check_uscore_edata_symbol])
AC_MSG_RESULT([$grub_cv_check_uscore_edata_symbol])
AH_TEMPLATE([BSS_START_SYMBOL], [Define it to one of __bss_start, edata and _edata])
if test "x$pupa_cv_check_uscore_uscore_bss_start_symbol" = xyes; then
if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then
AC_DEFINE([BSS_START_SYMBOL], [__bss_start])
elif test "x$pupa_cv_check_edata_symbol" = xyes; then
elif test "x$grub_cv_check_edata_symbol" = xyes; then
AC_DEFINE([BSS_START_SYMBOL], [edata])
elif test "x$pupa_cv_check_uscore_edata_symbol" = xyes; then
elif test "x$grub_cv_check_uscore_edata_symbol" = xyes; then
AC_DEFINE([BSS_START_SYMBOL], [_edata])
else
AC_MSG_ERROR([none of __bss_start, edata or _edata is defined])
@ -262,29 +262,29 @@ fi
dnl Check what symbol is defined as an end symbol.
dnl Written by Yoshinori K. Okuji.
AC_DEFUN(pupa_CHECK_END_SYMBOL,
AC_DEFUN(grub_CHECK_END_SYMBOL,
[AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING([if end is defined by the compiler])
AC_CACHE_VAL(pupa_cv_check_end_symbol,
AC_CACHE_VAL(grub_cv_check_end_symbol,
[AC_TRY_LINK([], [asm ("incl end")],
pupa_cv_check_end_symbol=yes,
pupa_cv_check_end_symbol=no)])
grub_cv_check_end_symbol=yes,
grub_cv_check_end_symbol=no)])
AC_MSG_RESULT([$pupa_cv_check_end_symbol])
AC_MSG_RESULT([$grub_cv_check_end_symbol])
AC_MSG_CHECKING([if _end is defined by the compiler])
AC_CACHE_VAL(pupa_cv_check_uscore_end_symbol,
AC_CACHE_VAL(grub_cv_check_uscore_end_symbol,
[AC_TRY_LINK([], [asm ("incl _end")],
pupa_cv_check_uscore_end_symbol=yes,
pupa_cv_check_uscore_end_symbol=no)])
grub_cv_check_uscore_end_symbol=yes,
grub_cv_check_uscore_end_symbol=no)])
AC_MSG_RESULT([$pupa_cv_check_uscore_end_symbol])
AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol])
AH_TEMPLATE([END_SYMBOL], [Define it to either end or _end])
if test "x$pupa_cv_check_end_symbol" = xyes; then
if test "x$grub_cv_check_end_symbol" = xyes; then
AC_DEFINE([END_SYMBOL], [end])
elif test "x$pupa_cv_check_uscore_end_symbol" = xyes; then
elif test "x$grub_cv_check_uscore_end_symbol" = xyes; then
AC_DEFINE([END_SYMBOL], [_end])
else
AC_MSG_ERROR([neither end nor _end is defined])
@ -295,10 +295,10 @@ dnl Check if the C compiler has a bug while using nested functions when
dnl mregparm is used on the i386. Some gcc versions do not pass the third
dnl parameter correctly to the nested function.
dnl Written by Marco Gerards.
AC_DEFUN(pupa_I386_CHECK_REGPARM_BUG,
AC_DEFUN(grub_I386_CHECK_REGPARM_BUG,
[AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING([if GCC has the regparm=3 bug])
AC_CACHE_VAL(pupa_cv_i386_check_nested_functions,
AC_CACHE_VAL(grub_cv_i386_check_nested_functions,
[AC_RUN_IFELSE([AC_LANG_SOURCE(
[[int *p;
@ -316,12 +316,12 @@ main ()
return nestedfunc (0, 0, 0);
}
]])],
[pupa_cv_i386_check_nested_functions=yes],
[pupa_cv_i386_check_nested_functions=no])])
[grub_cv_i386_check_nested_functions=yes],
[grub_cv_i386_check_nested_functions=no])])
AC_MSG_RESULT([$pupa_cv_i386_check_nested_functions])
AC_MSG_RESULT([$grub_cv_i386_check_nested_functions])
if test "x$pupa_cv_i386_check_nested_functions" = xyes; then
if test "x$grub_cv_i386_check_nested_functions" = xyes; then
AC_DEFINE([NESTED_FUNC_ATTR],
[__attribute__ ((__regparm__ (2)))],
[Catch gcc bug])

View file

@ -1,6 +1,6 @@
/* -*-Asm-*- */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,8 +18,8 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/boot.h>
#include <pupa/machine/boot.h>
#include <grub/boot.h>
#include <grub/machine/boot.h>
/*
* defines for the code go here
@ -83,25 +83,25 @@ cylinder_start:
.word 0
/* more space... */
. = _start + PUPA_BOOT_MACHINE_BPB_END
. = _start + GRUB_BOOT_MACHINE_BPB_END
/*
* End of BIOS parameter block.
*/
boot_version:
.byte PUPA_BOOT_VERSION_MAJOR, PUPA_BOOT_VERSION_MINOR
.byte GRUB_BOOT_VERSION_MAJOR, GRUB_BOOT_VERSION_MINOR
boot_drive:
.byte 0xff /* the disk to load kernel from */
/* 0xff means use the boot drive */
force_lba:
.byte 0
kernel_address:
.word PUPA_BOOT_MACHINE_KERNEL_ADDR
.word GRUB_BOOT_MACHINE_KERNEL_ADDR
kernel_sector:
.long 1
kernel_segment:
.word PUPA_BOOT_MACHINE_KERNEL_SEG
.word GRUB_BOOT_MACHINE_KERNEL_SEG
after_BPB:
@ -122,7 +122,7 @@ real_start:
movw %ax, %ss
/* set up the REAL stack */
movw $PUPA_BOOT_MACHINE_STACK_SEG, %sp
movw $GRUB_BOOT_MACHINE_STACK_SEG, %sp
sti /* we're safe again */
@ -141,7 +141,7 @@ real_start:
MSG(notification_string)
/* do not probe LBA if the drive is a floppy */
testb $PUPA_BOOT_MACHINE_BIOS_HD_FLAG, %dl
testb $GRUB_BOOT_MACHINE_BIOS_HD_FLAG, %dl
jz chs_mode
/* check if LBA is supported */
@ -190,7 +190,7 @@ lba_mode:
movl %ebx, 8(%si)
/* the segment of buffer address */
movw $PUPA_BOOT_MACHINE_BUFFER_SEG, 6(%si)
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, 6(%si)
xorl %eax, %eax
movw %ax, 4(%si)
@ -211,7 +211,7 @@ lba_mode:
/* LBA read is not supported, so fallback to CHS. */
jc chs_mode
movw $PUPA_BOOT_MACHINE_BUFFER_SEG, %bx
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, %bx
jmp copy_buffer
chs_mode:
@ -226,7 +226,7 @@ chs_mode:
/*
* The call failed, so maybe use the floppy probe instead.
*/
testb $PUPA_BOOT_MACHINE_BIOS_HD_FLAG, %dl
testb $GRUB_BOOT_MACHINE_BIOS_HD_FLAG, %dl
jz floppy_probe
/* Nope, we definitely have a hard disk, and we're screwed. */
@ -322,7 +322,7 @@ setup_sectors:
* %al = 0x0 on success; err code on failure
*/
movw $PUPA_BOOT_MACHINE_BUFFER_SEG, %bx
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, %bx
movw %bx, %es /* load %es segment with disk buffer */
xorw %bx, %bx /* %bx = 0, put it at 0 in the segment */
@ -387,7 +387,7 @@ general_error:
/* go here when you need to stop the machine hard after an error condition */
stop: jmp stop
notification_string: .string "PUPA "
notification_string: .string "GRUB "
geometry_error_string: .string "Geom"
hd_probe_error_string: .string "Hard Disk"
read_error_string: .string "Read"
@ -419,7 +419,7 @@ message:
* number here.
*/
. = _start + PUPA_BOOT_MACHINE_WINDOWS_NT_MAGIC
. = _start + GRUB_BOOT_MACHINE_WINDOWS_NT_MAGIC
nt_magic:
.long 0
.word 0
@ -431,7 +431,7 @@ nt_magic:
*/
part_start:
. = _start + PUPA_BOOT_MACHINE_PART_START
. = _start + GRUB_BOOT_MACHINE_PART_START
probe_values:
.byte 36, 18, 15, 9, 0
@ -465,7 +465,7 @@ fd_probe_error_string: .string "Floppy"
1:
/* perform read */
movw $PUPA_BOOT_MACHINE_BUFFER_SEG, %bx
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, %bx
movw $0x201, %ax
movb $0, %ch
movb $0, %dh
@ -480,7 +480,7 @@ fd_probe_error_string: .string "Floppy"
jmp final_init
. = _start + PUPA_BOOT_MACHINE_PART_END
. = _start + GRUB_BOOT_MACHINE_PART_END
/* the last 2 bytes in the sector 0 contain the signature */
.word PUPA_BOOT_MACHINE_SIGNATURE
.word GRUB_BOOT_MACHINE_SIGNATURE

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,7 +17,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/machine/boot.h>
#include <grub/machine/boot.h>
/*
* defines for the code go here
@ -26,7 +26,7 @@
/* Absolute addresses
This makes the assembler generate the address without support
from the linker. (ELF can't relocate 16-bit addresses!) */
#define ABS(x) (x-_start+PUPA_BOOT_MACHINE_KERNEL_ADDR)
#define ABS(x) (x-_start+GRUB_BOOT_MACHINE_KERNEL_ADDR)
/* Print message string */
#define MSG(x) movw $ABS(x), %si; call message
@ -62,7 +62,7 @@ _start:
popw %si
/* this sets up for the first run through "bootloop" */
movw $ABS(firstlist - PUPA_BOOT_MACHINE_LIST_SIZE), %di
movw $ABS(firstlist - GRUB_BOOT_MACHINE_LIST_SIZE), %di
/* save the sector number of the second sector in %ebp */
movl (%di), %ebp
@ -119,7 +119,7 @@ lba_mode:
movl %ebx, 8(%si)
/* the segment of buffer address */
movw $PUPA_BOOT_MACHINE_BUFFER_SEG, 6(%si)
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, 6(%si)
/* save %ax from destruction! */
pushw %ax
@ -148,7 +148,7 @@ lba_mode:
jc read_error
movw $PUPA_BOOT_MACHINE_BUFFER_SEG, %bx
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, %bx
jmp copy_buffer
chs_mode:
@ -237,7 +237,7 @@ chs_mode:
* %al = 0x0 on success; err code on failure
*/
movw $PUPA_BOOT_MACHINE_BUFFER_SEG, %bx
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, %bx
movw %bx, %es /* load %es segment with disk buffer */
xorw %bx, %bx /* %bx = 0, put it at 0 in the segment */
@ -292,7 +292,7 @@ copy_buffer:
jne setup_sectors
/* update position to load from */
subw $PUPA_BOOT_MACHINE_LIST_SIZE, %di
subw $GRUB_BOOT_MACHINE_LIST_SIZE, %di
/* jump to bootloop */
jmp bootloop
@ -303,7 +303,7 @@ bootit:
/* print a newline */
MSG(notification_done)
popw %dx /* this makes sure %dl is our "boot" drive */
ljmp $0, $(PUPA_BOOT_MACHINE_KERNEL_ADDR + 0x200)
ljmp $0, $(GRUB_BOOT_MACHINE_KERNEL_ADDR + 0x200)
/*
@ -368,7 +368,7 @@ lastlist:
.word 0
.word 0
. = _start + 0x200 - PUPA_BOOT_MACHINE_LIST_SIZE
. = _start + 0x200 - GRUB_BOOT_MACHINE_LIST_SIZE
/* fill the first data listing with the default */
blocklist_default_start:
@ -381,6 +381,6 @@ blocklist_default_len:
.word 0
blocklist_default_seg:
/* this is the segment of the starting address to load the data into */
.word (PUPA_BOOT_MACHINE_KERNEL_SEG + 0x20)
.word (GRUB_BOOT_MACHINE_KERNEL_SEG + 0x20)
firstlist: /* this label has to be after the list data!!! */

View file

@ -1,6 +1,6 @@
/* cmain.c - Startup code for the PowerPC. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -21,8 +21,8 @@
#include <alloca.h>
#include <stdint.h>
#include "pupa/machine/ieee1275.h"
#include "pupa/kernel.h"
#include "grub/machine/ieee1275.h"
#include "grub/kernel.h"
struct module_info
{
@ -33,7 +33,7 @@ struct module_info
#define roundup(a, s) (((a) + ((s) - 1)) & ~((s) - 1))
/* OpenFirmware entry point passed to us from the real bootloader. */
intptr_t (*pupa_ieee1275_entry_fn) (void *);
intptr_t (*grub_ieee1275_entry_fn) (void *);
/* Return a help text for this architecture. */
@ -51,11 +51,11 @@ void
cmain (uint32_t firmware_entry)
{
char **argv, args[256];
pupa_ieee1275_phandle_t chosen;
grub_ieee1275_phandle_t chosen;
int argc = 0, actual;
long batl, batu;
pupa_ieee1275_entry_fn = (intptr_t (*)(void *)) firmware_entry;
grub_ieee1275_entry_fn = (intptr_t (*)(void *)) firmware_entry;
/* Initialize BAT registers to unmapped to not generate overlapping
mappings below. */
@ -83,8 +83,8 @@ cmain (uint32_t firmware_entry)
be null (just the nul-character), so check that the size
is actually greater than one. */
pupa_ieee1275_finddevice ("/chosen", &chosen);
if (pupa_ieee1275_get_property (chosen, "bootargs", args,
grub_ieee1275_finddevice ("/chosen", &chosen);
if (grub_ieee1275_get_property (chosen, "bootargs", args,
sizeof args, &actual) == 0
&& actual > 1)
{
@ -109,7 +109,7 @@ cmain (uint32_t firmware_entry)
/* The bootargs property does not contain the program
name, just the arguments. */
argv[0] = "pupa";
argv[0] = "grub";
/* Second time around we fill in the argv. */
str = args;
@ -136,13 +136,13 @@ cmain (uint32_t firmware_entry)
else
{
argv = alloca (sizeof (char *) * 2);
argv[0] = "pupa";
argv[0] = "grub";
argv[1] = 0;
argc = 1;
}
/* Now invoke the main function. */
/* XXX: pupa_main does not parse arguments yet. */
pupa_main ();
/* XXX: grub_main does not parse arguments yet. */
grub_main ();
/* Never reached. */
}

View file

@ -1,6 +1,6 @@
/* crt0.S - Startup code for the PowerPC. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify

View file

@ -1,6 +1,6 @@
/* ieee1275.c - Access the Open Firmware client interface. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,16 +18,16 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/machine/ieee1275.h>
#include <grub/machine/ieee1275.h>
#define IEEE1275_PHANDLE_ROOT ((pupa_ieee1275_phandle_t) 0)
#define IEEE1275_PHANDLE_INVALID ((pupa_ieee1275_phandle_t) -1)
#define IEEE1275_PHANDLE_ROOT ((grub_ieee1275_phandle_t) 0)
#define IEEE1275_PHANDLE_INVALID ((grub_ieee1275_phandle_t) -1)
intptr_t (*pupa_ieee1275_entry_fn) (void *);
intptr_t (*grub_ieee1275_entry_fn) (void *);
#ifndef IEEE1275_CALL_ENTRY_FN
#define IEEE1275_CALL_ENTRY_FN(args) (*pupa_ieee1275_entry_fn) (args)
#define IEEE1275_CALL_ENTRY_FN(args) (*grub_ieee1275_entry_fn) (args)
#endif
/* All backcalls to the firmware is done by calling an entry function
@ -35,7 +35,7 @@ intptr_t (*pupa_ieee1275_entry_fn) (void *);
a structure is passed which specifies what the firmware should do.
NAME is the requested service. NR_INS and NR_OUTS is the number of
passed arguments and the expected number of return values, resp. */
struct pupa_ieee1275_common_hdr
struct grub_ieee1275_common_hdr
{
char *name;
int nr_ins;
@ -46,10 +46,10 @@ struct pupa_ieee1275_common_hdr
(p)->name = xname; (p)->nr_ins = xins; (p)->nr_outs = xouts
/* FIXME is this function needed? */
pupa_uint32_t
pupa_ieee1275_decode_int_4 (unsigned char *p)
grub_uint32_t
grub_ieee1275_decode_int_4 (unsigned char *p)
{
pupa_uint32_t val = (*p++ << 8);
grub_uint32_t val = (*p++ << 8);
val = (val + *p++) << 8;
val = (val + *p++) << 8;
return (val + *p);
@ -57,12 +57,12 @@ pupa_ieee1275_decode_int_4 (unsigned char *p)
int
pupa_ieee1275_finddevice (char *name, pupa_ieee1275_phandle_t *phandlep)
grub_ieee1275_finddevice (char *name, grub_ieee1275_phandle_t *phandlep)
{
struct find_device_args {
struct pupa_ieee1275_common_hdr common;
struct grub_ieee1275_common_hdr common;
char *device;
pupa_ieee1275_phandle_t phandle;
grub_ieee1275_phandle_t phandle;
} args;
INIT_IEEE1275_COMMON (&args.common, "finddevice", 1, 1);
@ -75,12 +75,12 @@ pupa_ieee1275_finddevice (char *name, pupa_ieee1275_phandle_t *phandlep)
}
int
pupa_ieee1275_get_property (int handle, const char *property, void *buf,
pupa_size_t size, pupa_size_t *actual)
grub_ieee1275_get_property (int handle, const char *property, void *buf,
grub_size_t size, grub_size_t *actual)
{
struct get_property_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t phandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t phandle;
const char *prop;
void *buf;
int buflen;
@ -101,12 +101,12 @@ pupa_ieee1275_get_property (int handle, const char *property, void *buf,
}
int
pupa_ieee1275_next_property (int handle, char *prev_prop, char *prop,
grub_ieee1275_next_property (int handle, char *prev_prop, char *prop,
int *flags)
{
struct get_property_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t phandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t phandle;
char *prev_prop;
char *next_prop;
int flags;
@ -126,14 +126,14 @@ pupa_ieee1275_next_property (int handle, char *prev_prop, char *prop,
}
int
pupa_ieee1275_get_property_length (pupa_ieee1275_phandle_t handle,
const char *prop, pupa_size_t *length)
grub_ieee1275_get_property_length (grub_ieee1275_phandle_t handle,
const char *prop, grub_size_t *length)
{
struct get_property_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t phandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t phandle;
const char *prop;
pupa_size_t length;
grub_size_t length;
} args;
INIT_IEEE1275_COMMON (&args.common, "getproplen", 2, 1);
@ -148,13 +148,13 @@ pupa_ieee1275_get_property_length (pupa_ieee1275_phandle_t handle,
}
int
pupa_ieee1275_instance_to_package (pupa_ieee1275_ihandle_t ihandle,
pupa_ieee1275_phandle_t *phandlep)
grub_ieee1275_instance_to_package (grub_ieee1275_ihandle_t ihandle,
grub_ieee1275_phandle_t *phandlep)
{
struct instance_to_package_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_ihandle_t ihandle;
pupa_ieee1275_phandle_t phandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_ihandle_t ihandle;
grub_ieee1275_phandle_t phandle;
} args;
INIT_IEEE1275_COMMON (&args.common, "instance-to-package", 1, 1);
@ -167,12 +167,12 @@ pupa_ieee1275_instance_to_package (pupa_ieee1275_ihandle_t ihandle,
}
int
pupa_ieee1275_package_to_path (pupa_ieee1275_phandle_t phandle,
char *path, pupa_size_t len, pupa_size_t *actual)
grub_ieee1275_package_to_path (grub_ieee1275_phandle_t phandle,
char *path, grub_size_t len, grub_size_t *actual)
{
struct instance_to_package_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t phandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t phandle;
char *buf;
int buflen;
int actual;
@ -191,13 +191,13 @@ pupa_ieee1275_package_to_path (pupa_ieee1275_phandle_t phandle,
}
int
pupa_ieee1275_instance_to_path (pupa_ieee1275_ihandle_t ihandle,
char *path, pupa_size_t len,
pupa_size_t *actual)
grub_ieee1275_instance_to_path (grub_ieee1275_ihandle_t ihandle,
char *path, grub_size_t len,
grub_size_t *actual)
{
struct instance_to_package_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_ihandle_t ihandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_ihandle_t ihandle;
char *buf;
int buflen;
int actual;
@ -216,15 +216,15 @@ pupa_ieee1275_instance_to_path (pupa_ieee1275_ihandle_t ihandle,
}
int
pupa_ieee1275_write (pupa_ieee1275_ihandle_t ihandle, void *buffer,
pupa_size_t len, pupa_size_t *actualp)
grub_ieee1275_write (grub_ieee1275_ihandle_t ihandle, void *buffer,
grub_size_t len, grub_size_t *actualp)
{
struct write_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_ihandle_t ihandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_ihandle_t ihandle;
void *buf;
pupa_size_t len;
pupa_size_t actual;
grub_size_t len;
grub_size_t actual;
} args;
INIT_IEEE1275_COMMON (&args.common, "write", 3, 1);
@ -240,15 +240,15 @@ pupa_ieee1275_write (pupa_ieee1275_ihandle_t ihandle, void *buffer,
}
int
pupa_ieee1275_read (pupa_ieee1275_ihandle_t ihandle, void *buffer,
pupa_size_t len, pupa_size_t *actualp)
grub_ieee1275_read (grub_ieee1275_ihandle_t ihandle, void *buffer,
grub_size_t len, grub_size_t *actualp)
{
struct write_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_ihandle_t ihandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_ihandle_t ihandle;
void *buf;
pupa_size_t len;
pupa_size_t actual;
grub_size_t len;
grub_size_t actual;
} args;
INIT_IEEE1275_COMMON (&args.common, "read", 3, 1);
@ -264,12 +264,12 @@ pupa_ieee1275_read (pupa_ieee1275_ihandle_t ihandle, void *buffer,
}
int
pupa_ieee1275_seek (pupa_ieee1275_ihandle_t ihandle, int pos_hi,
grub_ieee1275_seek (grub_ieee1275_ihandle_t ihandle, int pos_hi,
int pos_lo, int *result)
{
struct write_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_ihandle_t ihandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_ihandle_t ihandle;
int pos_hi;
int pos_lo;
int result;
@ -289,13 +289,13 @@ pupa_ieee1275_seek (pupa_ieee1275_ihandle_t ihandle, int pos_hi,
}
int
pupa_ieee1275_peer (pupa_ieee1275_phandle_t node,
pupa_ieee1275_phandle_t *result)
grub_ieee1275_peer (grub_ieee1275_phandle_t node,
grub_ieee1275_phandle_t *result)
{
struct peer_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t node;
pupa_ieee1275_phandle_t result;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t node;
grub_ieee1275_phandle_t result;
} args;
INIT_IEEE1275_COMMON (&args.common, "peer", 1, 1);
@ -308,13 +308,13 @@ pupa_ieee1275_peer (pupa_ieee1275_phandle_t node,
}
int
pupa_ieee1275_child (pupa_ieee1275_phandle_t node,
pupa_ieee1275_phandle_t *result)
grub_ieee1275_child (grub_ieee1275_phandle_t node,
grub_ieee1275_phandle_t *result)
{
struct child_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t node;
pupa_ieee1275_phandle_t result;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t node;
grub_ieee1275_phandle_t result;
} args;
INIT_IEEE1275_COMMON (&args.common, "child", 1, 1);
@ -328,13 +328,13 @@ pupa_ieee1275_child (pupa_ieee1275_phandle_t node,
}
int
pupa_ieee1275_parent (pupa_ieee1275_phandle_t node,
pupa_ieee1275_phandle_t *result)
grub_ieee1275_parent (grub_ieee1275_phandle_t node,
grub_ieee1275_phandle_t *result)
{
struct parent_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t node;
pupa_ieee1275_phandle_t result;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t node;
grub_ieee1275_phandle_t result;
} args;
INIT_IEEE1275_COMMON (&args.common, "parent", 1, 1);
@ -348,10 +348,10 @@ pupa_ieee1275_parent (pupa_ieee1275_phandle_t node,
}
int
pupa_ieee1275_exit (void)
grub_ieee1275_exit (void)
{
struct exit_args {
struct pupa_ieee1275_common_hdr common;
struct grub_ieee1275_common_hdr common;
} args;
INIT_IEEE1275_COMMON (&args.common, "exit", 0, 0);
@ -362,12 +362,12 @@ pupa_ieee1275_exit (void)
}
int
pupa_ieee1275_open (char *node, pupa_ieee1275_ihandle_t *result)
grub_ieee1275_open (char *node, grub_ieee1275_ihandle_t *result)
{
struct open_args {
struct pupa_ieee1275_common_hdr common;
struct grub_ieee1275_common_hdr common;
char *cstr;
pupa_ieee1275_ihandle_t result;
grub_ieee1275_ihandle_t result;
} args;
INIT_IEEE1275_COMMON (&args.common, "open", 1, 1);
@ -380,11 +380,11 @@ pupa_ieee1275_open (char *node, pupa_ieee1275_ihandle_t *result)
}
int
pupa_ieee1275_close (pupa_ieee1275_ihandle_t ihandle)
grub_ieee1275_close (grub_ieee1275_ihandle_t ihandle)
{
struct close_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_ihandle_t ihandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_ihandle_t ihandle;
} args;
INIT_IEEE1275_COMMON (&args.common, "close", 1, 0);
@ -397,13 +397,13 @@ pupa_ieee1275_close (pupa_ieee1275_ihandle_t ihandle)
}
int
pupa_ieee1275_claim (void *p, pupa_size_t size,
grub_ieee1275_claim (void *p, grub_size_t size,
unsigned int align, void **result)
{
struct claim_args {
struct pupa_ieee1275_common_hdr common;
struct grub_ieee1275_common_hdr common;
void *p;
pupa_size_t size;
grub_size_t size;
unsigned int align;
void *addr;
} args;
@ -420,17 +420,17 @@ pupa_ieee1275_claim (void *p, pupa_size_t size,
}
int
pupa_ieee1275_set_property (pupa_ieee1275_phandle_t phandle,
grub_ieee1275_set_property (grub_ieee1275_phandle_t phandle,
const char *propname, void *buf,
pupa_size_t size, pupa_size_t *actual)
grub_size_t size, grub_size_t *actual)
{
struct set_property_args {
struct pupa_ieee1275_common_hdr common;
pupa_ieee1275_phandle_t phandle;
struct grub_ieee1275_common_hdr common;
grub_ieee1275_phandle_t phandle;
const char *propname;
void *buf;
pupa_size_t size;
pupa_size_t actual;
grub_size_t size;
grub_size_t actual;
} args;
INIT_IEEE1275_COMMON (&args.common, "setprop", 4, 1);
@ -446,13 +446,13 @@ pupa_ieee1275_set_property (pupa_ieee1275_phandle_t phandle,
}
int
pupa_ieee1275_set_color (pupa_ieee1275_ihandle_t ihandle,
grub_ieee1275_set_color (grub_ieee1275_ihandle_t ihandle,
int index, int r, int g, int b)
{
struct set_color_args {
struct pupa_ieee1275_common_hdr common;
struct grub_ieee1275_common_hdr common;
char *method;
pupa_ieee1275_ihandle_t ihandle;
grub_ieee1275_ihandle_t ihandle;
int index;
int b;
int g;

View file

@ -1,9 +1,9 @@
/* boot.c - command to boot an operating system */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,52 +14,52 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/normal.h>
#include <pupa/dl.h>
#include <pupa/arg.h>
#include <pupa/misc.h>
#include <pupa/loader.h>
#include <grub/normal.h>
#include <grub/dl.h>
#include <grub/arg.h>
#include <grub/misc.h>
#include <grub/loader.h>
static pupa_err_t
pupa_cmd_boot (struct pupa_arg_list *state __attribute__ ((unused)),
static grub_err_t
grub_cmd_boot (struct grub_arg_list *state __attribute__ ((unused)),
int argc, char **args __attribute__ ((unused)))
{
if (argc)
return pupa_error (PUPA_ERR_BAD_ARGUMENT, "too many arguments");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "too many arguments");
pupa_loader_boot ();
grub_loader_boot ();
return 0;
}
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
void
pupa_boot_init (void)
grub_boot_init (void)
{
pupa_register_command ("boot", pupa_cmd_boot, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("boot", grub_cmd_boot, GRUB_COMMAND_FLAG_BOTH,
"boot", "Boot an operating system", 0);
}
void
pupa_boot_fini (void)
grub_boot_fini (void)
{
pupa_unregister_command ("boot");
grub_unregister_command ("boot");
}
#else /* ! PUPA_UTIL */
PUPA_MOD_INIT
#else /* ! GRUB_UTIL */
GRUB_MOD_INIT
{
(void)mod; /* To stop warning. */
pupa_register_command ("boot", pupa_cmd_boot, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("boot", grub_cmd_boot, GRUB_COMMAND_FLAG_BOTH,
"boot", "Boot an operating system", 0);
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_unregister_command ("boot");
grub_unregister_command ("boot");
}
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */

View file

@ -1,9 +1,9 @@
/* cat.c - command to show the contents of a file */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,35 +14,35 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/normal.h>
#include <pupa/dl.h>
#include <pupa/arg.h>
#include <pupa/file.h>
#include <pupa/disk.h>
#include <pupa/term.h>
#include <pupa/misc.h>
#include <grub/normal.h>
#include <grub/dl.h>
#include <grub/arg.h>
#include <grub/file.h>
#include <grub/disk.h>
#include <grub/term.h>
#include <grub/misc.h>
static pupa_err_t
pupa_cmd_cat (struct pupa_arg_list *state __attribute__ ((unused)),
static grub_err_t
grub_cmd_cat (struct grub_arg_list *state __attribute__ ((unused)),
int argc, char **args)
{
pupa_file_t file;
char buf[PUPA_DISK_SECTOR_SIZE];
pupa_ssize_t size;
grub_file_t file;
char buf[GRUB_DISK_SECTOR_SIZE];
grub_ssize_t size;
if (argc != 1)
return pupa_error (PUPA_ERR_BAD_ARGUMENT, "file name required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
file = pupa_file_open (args[0]);
file = grub_file_open (args[0]);
if (! file)
return 0;
while ((size = pupa_file_read (file, buf, sizeof (buf))) > 0)
while ((size = grub_file_read (file, buf, sizeof (buf))) > 0)
{
int i;
@ -50,48 +50,48 @@ pupa_cmd_cat (struct pupa_arg_list *state __attribute__ ((unused)),
{
unsigned char c = buf[i];
if (pupa_isprint (c) || pupa_isspace (c))
pupa_putchar (c);
if (grub_isprint (c) || grub_isspace (c))
grub_putchar (c);
else
{
pupa_setcolorstate (PUPA_TERM_COLOR_HIGHLIGHT);
pupa_printf ("<%x>", (int) c);
pupa_setcolorstate (PUPA_TERM_COLOR_STANDARD);
grub_setcolorstate (GRUB_TERM_COLOR_HIGHLIGHT);
grub_printf ("<%x>", (int) c);
grub_setcolorstate (GRUB_TERM_COLOR_STANDARD);
}
}
}
pupa_putchar ('\n');
pupa_refresh ();
pupa_file_close (file);
grub_putchar ('\n');
grub_refresh ();
grub_file_close (file);
return 0;
}
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
void
pupa_cat_init (void)
grub_cat_init (void)
{
pupa_register_command ("cat", pupa_cmd_cat, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("cat", grub_cmd_cat, GRUB_COMMAND_FLAG_BOTH,
"cat FILE", "Show the contents of a file", 0);
}
void
pupa_cat_fini (void)
grub_cat_fini (void)
{
pupa_unregister_command ("cat");
grub_unregister_command ("cat");
}
#else /* ! PUPA_UTIL */
PUPA_MOD_INIT
#else /* ! GRUB_UTIL */
GRUB_MOD_INIT
{
(void)mod; /* To stop warning. */
pupa_register_command ("cat", pupa_cmd_cat, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("cat", grub_cmd_cat, GRUB_COMMAND_FLAG_BOTH,
"cat FILE", "Show the contents of a file", 0);
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_unregister_command ("cat");
grub_unregister_command ("cat");
}
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */

View file

@ -1,9 +1,9 @@
/* cmd.c - command to cmp an operating system */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,57 +14,57 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/normal.h>
#include <pupa/dl.h>
#include <pupa/arg.h>
#include <pupa/misc.h>
#include <pupa/file.h>
#include <grub/normal.h>
#include <grub/dl.h>
#include <grub/arg.h>
#include <grub/misc.h>
#include <grub/file.h>
static pupa_err_t
pupa_cmd_cmp (struct pupa_arg_list *state __attribute__ ((unused)),
static grub_err_t
grub_cmd_cmp (struct grub_arg_list *state __attribute__ ((unused)),
int argc, char **args)
{
pupa_file_t file1;
pupa_file_t file2;
grub_file_t file1;
grub_file_t file2;
if (argc != 2)
return pupa_error (PUPA_ERR_BAD_ARGUMENT, "two arguments required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "two arguments required");
pupa_printf ("Compare `%s' and `%s':\n", args[0],
grub_printf ("Compare `%s' and `%s':\n", args[0],
args[1]);
file1 = pupa_file_open (args[0]);
file1 = grub_file_open (args[0]);
if (! file1)
return pupa_errno;
return grub_errno;
file2 = pupa_file_open (args[1]);
file2 = grub_file_open (args[1]);
if (! file2)
{
pupa_file_close (file2);
return pupa_errno;
grub_file_close (file2);
return grub_errno;
}
if (pupa_file_size (file1) != pupa_file_size (file2))
pupa_printf ("Differ in size: %d [%s], %d [%s]\n",
pupa_file_size (file1), args[0],
pupa_file_size (file2), args[1]);
if (grub_file_size (file1) != grub_file_size (file2))
grub_printf ("Differ in size: %d [%s], %d [%s]\n",
grub_file_size (file1), args[0],
grub_file_size (file2), args[1]);
else
{
char buf1[512];
char buf2[512];
pupa_ssize_t rd1, rd2;
pupa_uint32_t pos = 0;
grub_ssize_t rd1, rd2;
grub_uint32_t pos = 0;
do
{
int i;
rd1 = pupa_file_read (file1, buf1, 512);
rd2 = pupa_file_read (file2, buf2, 512);
rd1 = grub_file_read (file1, buf1, 512);
rd2 = grub_file_read (file2, buf2, 512);
if (rd1 != rd2)
return 0;
@ -73,12 +73,12 @@ pupa_cmd_cmp (struct pupa_arg_list *state __attribute__ ((unused)),
{
if (buf1[i] != buf2[i])
{
pupa_printf ("Differ at the offset %d: 0x%x [%s], 0x%x [%s]\n",
grub_printf ("Differ at the offset %d: 0x%x [%s], 0x%x [%s]\n",
i + pos, buf1[i], args[0],
buf2[i], args[1]);
pupa_file_close (file1);
pupa_file_close (file2);
grub_file_close (file1);
grub_file_close (file2);
return 0;
}
}
@ -87,38 +87,38 @@ pupa_cmd_cmp (struct pupa_arg_list *state __attribute__ ((unused)),
} while (rd2);
}
pupa_file_close (file1);
pupa_file_close (file2);
grub_file_close (file1);
grub_file_close (file2);
pupa_printf ("The files are identical.\n");
grub_printf ("The files are identical.\n");
return 0;
}
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
void
pupa_cmp_init (void)
grub_cmp_init (void)
{
pupa_register_command ("cmp", pupa_cmd_cmp, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("cmp", grub_cmd_cmp, GRUB_COMMAND_FLAG_BOTH,
"cmp FILE1 FILE2", "Compare two files", 0);
}
void
pupa_cmp_fini (void)
grub_cmp_fini (void)
{
pupa_unregister_command ("cmp");
grub_unregister_command ("cmp");
}
#else /* ! PUPA_UTIL */
PUPA_MOD_INIT
#else /* ! GRUB_UTIL */
GRUB_MOD_INIT
{
(void)mod; /* To stop warning. */
pupa_register_command ("cmp", pupa_cmd_cmp, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("cmp", grub_cmd_cmp, GRUB_COMMAND_FLAG_BOTH,
"cmp FILE1 FILE2", "Compare two files", 0);
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_unregister_command ("cmp");
grub_unregister_command ("cmp");
}
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */

View file

@ -1,9 +1,9 @@
/* ls.c - command to list files and devices */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,24 +14,24 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/types.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <pupa/err.h>
#include <pupa/dl.h>
#include <pupa/normal.h>
#include <pupa/arg.h>
#include <pupa/disk.h>
#include <pupa/device.h>
#include <pupa/term.h>
#include <pupa/machine/partition.h>
#include <pupa/file.h>
#include <grub/types.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/err.h>
#include <grub/dl.h>
#include <grub/normal.h>
#include <grub/arg.h>
#include <grub/disk.h>
#include <grub/device.h>
#include <grub/term.h>
#include <grub/machine/partition.h>
#include <grub/file.h>
static const struct pupa_arg_option options[] =
static const struct grub_arg_option options[] =
{
{"long", 'l', 0, "Show a long list with more detailed information", 0, 0},
{"human-readable", 'h', 0, "Print sizes in a human readable format", 0, 0},
@ -39,105 +39,105 @@ static const struct pupa_arg_option options[] =
{0, 0, 0, 0, 0, 0}
};
static const char pupa_human_sizes[] = {' ', 'K', 'M', 'G', 'T'};
static const char grub_human_sizes[] = {' ', 'K', 'M', 'G', 'T'};
static pupa_err_t
pupa_ls_list_disks (int longlist)
static grub_err_t
grub_ls_list_disks (int longlist)
{
auto int pupa_ls_print_disks (const char *name);
int pupa_ls_print_disks (const char *name)
auto int grub_ls_print_disks (const char *name);
int grub_ls_print_disks (const char *name)
{
pupa_device_t dev;
auto int print_partition (const pupa_partition_t p);
grub_device_t dev;
auto int print_partition (const grub_partition_t p);
int print_partition (const pupa_partition_t p)
int print_partition (const grub_partition_t p)
{
char *pname = pupa_partition_get_name (p);
char *pname = grub_partition_get_name (p);
if (pname)
{
if (longlist)
pupa_print_partinfo (dev, pname);
grub_print_partinfo (dev, pname);
else
pupa_printf ("(%s,%s) ", name, pname);
grub_printf ("(%s,%s) ", name, pname);
}
return 0;
}
dev = pupa_device_open (name);
pupa_errno = PUPA_ERR_NONE;
dev = grub_device_open (name);
grub_errno = GRUB_ERR_NONE;
if (dev)
{
if (longlist)
pupa_printf ("Disk: %s\n", name);
grub_printf ("Disk: %s\n", name);
else
pupa_printf ("(%s) ", name);
grub_printf ("(%s) ", name);
if (dev->disk && dev->disk->has_partitions)
{
pupa_partition_iterate (dev->disk, print_partition);
pupa_errno = PUPA_ERR_NONE;
grub_partition_iterate (dev->disk, print_partition);
grub_errno = GRUB_ERR_NONE;
}
pupa_device_close (dev);
grub_device_close (dev);
}
return 0;
}
pupa_disk_dev_iterate (pupa_ls_print_disks);
pupa_putchar ('\n');
pupa_refresh ();
grub_disk_dev_iterate (grub_ls_print_disks);
grub_putchar ('\n');
grub_refresh ();
return 0;
}
static pupa_err_t
pupa_ls_list_files (const char *dirname, int longlist, int all, int human)
static grub_err_t
grub_ls_list_files (const char *dirname, int longlist, int all, int human)
{
char *device_name;
pupa_fs_t fs;
grub_fs_t fs;
char *path;
pupa_device_t dev;
grub_device_t dev;
static int print_files (const char *filename, int dir)
{
if (all || filename[0] != '.')
pupa_printf ("%s%s ", filename, dir ? "/" : "");
grub_printf ("%s%s ", filename, dir ? "/" : "");
return 0;
}
static int print_files_long (const char *filename, int dir)
{
char pathname[pupa_strlen (dirname) + pupa_strlen (filename) + 1];
char pathname[grub_strlen (dirname) + grub_strlen (filename) + 1];
if ((! all) && (filename[0] == '.'))
return 0;
if (! dir)
{
pupa_file_t file;
grub_file_t file;
if (dirname[pupa_strlen (dirname) - 1] == '/')
pupa_sprintf (pathname, "%s%s", dirname, filename);
if (dirname[grub_strlen (dirname) - 1] == '/')
grub_sprintf (pathname, "%s%s", dirname, filename);
else
pupa_sprintf (pathname, "%s/%s", dirname, filename);
grub_sprintf (pathname, "%s/%s", dirname, filename);
/* XXX: For ext2fs symlinks are detected as files while they
should be reported as directories. */
file = pupa_file_open (pathname);
file = grub_file_open (pathname);
if (! file)
{
pupa_errno = 0;
grub_errno = 0;
return 0;
}
if (! human)
pupa_printf ("%-12d", file->size);
grub_printf ("%-12d", file->size);
else
{
float fsize = file->size;
@ -154,43 +154,43 @@ pupa_ls_list_files (const char *dirname, int longlist, int all, int human)
if (units)
{
pupa_sprintf (buf, "%0.2f%c", fsize, pupa_human_sizes[units]);
pupa_printf ("%-12s", buf);
grub_sprintf (buf, "%0.2f%c", fsize, grub_human_sizes[units]);
grub_printf ("%-12s", buf);
}
else
pupa_printf ("%-12d", file->size);
grub_printf ("%-12d", file->size);
}
(fs->close) (file);
}
else
pupa_printf ("%-12s", "DIR");
grub_printf ("%-12s", "DIR");
pupa_printf ("%s%s\n", filename, dir ? "/" : "");
grub_printf ("%s%s\n", filename, dir ? "/" : "");
return 0;
}
device_name = pupa_file_get_device_name (dirname);
dev = pupa_device_open (device_name);
device_name = grub_file_get_device_name (dirname);
dev = grub_device_open (device_name);
if (! dev)
goto fail;
fs = pupa_fs_probe (dev);
path = pupa_strchr (dirname, '/');
fs = grub_fs_probe (dev);
path = grub_strchr (dirname, '/');
if (! path && ! device_name)
{
pupa_error (PUPA_ERR_BAD_ARGUMENT, "invalid argument");
grub_error (GRUB_ERR_BAD_ARGUMENT, "invalid argument");
goto fail;
}
if (! path)
{
if (pupa_errno == PUPA_ERR_UNKNOWN_FS)
pupa_errno = PUPA_ERR_NONE;
if (grub_errno == GRUB_ERR_UNKNOWN_FS)
grub_errno = GRUB_ERR_NONE;
pupa_printf ("(%s): Filesystem is %s.\n",
grub_printf ("(%s): Filesystem is %s.\n",
device_name, fs ? fs->name : "unknown");
}
else if (fs)
@ -199,64 +199,64 @@ pupa_ls_list_files (const char *dirname, int longlist, int all, int human)
(fs->dir) (dev, path, print_files_long);
else
(fs->dir) (dev, path, print_files);
pupa_putchar ('\n');
pupa_refresh ();
grub_putchar ('\n');
grub_refresh ();
}
fail:
if (dev)
pupa_device_close (dev);
grub_device_close (dev);
pupa_free (device_name);
grub_free (device_name);
return 0;
}
static pupa_err_t
pupa_cmd_ls (struct pupa_arg_list *state, int argc, char **args)
static grub_err_t
grub_cmd_ls (struct grub_arg_list *state, int argc, char **args)
{
static int pupa_ls_print_files (const char *filename, int dir)
static int grub_ls_print_files (const char *filename, int dir)
{
if (state[2].set/*all*/ || filename[0] != '.')
pupa_printf ("%s%s ", filename, dir ? "/" : "");
grub_printf ("%s%s ", filename, dir ? "/" : "");
return 0;
}
if (argc == 0)
pupa_ls_list_disks (state[0].set);
grub_ls_list_disks (state[0].set);
else
pupa_ls_list_files (args[0], state[0].set, state[2].set,
grub_ls_list_files (args[0], state[0].set, state[2].set,
state[1].set);
return 0;
}
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
void
pupa_ls_init (void)
grub_ls_init (void)
{
pupa_register_command ("ls", pupa_cmd_ls, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("ls", grub_cmd_ls, GRUB_COMMAND_FLAG_BOTH,
"ls [OPTIONS...] [DIR]",
"List devices and files", options);
}
void
pupa_ls_fini (void)
grub_ls_fini (void)
{
pupa_unregister_command ("ls");
grub_unregister_command ("ls");
}
#else /* ! PUPA_UTIL */
PUPA_MOD_INIT
#else /* ! GRUB_UTIL */
GRUB_MOD_INIT
{
(void)mod; /* To stop warning. */
pupa_register_command ("ls", pupa_cmd_ls, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("ls", grub_cmd_ls, GRUB_COMMAND_FLAG_BOTH,
"ls [OPTIONS...] [DIR]",
"List devices and files", options);
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_unregister_command ("ls");
grub_unregister_command ("ls");
}
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */

View file

@ -1,9 +1,9 @@
/* terminal.c - command to show and select a terminal */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,34 +14,34 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/normal.h>
#include <pupa/dl.h>
#include <pupa/arg.h>
#include <pupa/misc.h>
#include <pupa/term.h>
#include <grub/normal.h>
#include <grub/dl.h>
#include <grub/arg.h>
#include <grub/misc.h>
#include <grub/term.h>
static pupa_err_t
pupa_cmd_terminal (struct pupa_arg_list *state __attribute__ ((unused)),
static grub_err_t
grub_cmd_terminal (struct grub_arg_list *state __attribute__ ((unused)),
int argc, char **args)
{
pupa_term_t term = 0;
grub_term_t term = 0;
auto int print_terminal (pupa_term_t);
auto int find_terminal (pupa_term_t);
auto int print_terminal (grub_term_t);
auto int find_terminal (grub_term_t);
int print_terminal (pupa_term_t t)
int print_terminal (grub_term_t t)
{
pupa_printf (" %s", t->name);
grub_printf (" %s", t->name);
return 0;
}
int find_terminal (pupa_term_t t)
int find_terminal (grub_term_t t)
{
if (pupa_strcmp (t->name, args[0]) == 0)
if (grub_strcmp (t->name, args[0]) == 0)
{
term = t;
return 1;
@ -52,48 +52,48 @@ pupa_cmd_terminal (struct pupa_arg_list *state __attribute__ ((unused)),
if (argc == 0)
{
pupa_printf ("Available terminal(s):");
pupa_term_iterate (print_terminal);
pupa_putchar ('\n');
grub_printf ("Available terminal(s):");
grub_term_iterate (print_terminal);
grub_putchar ('\n');
pupa_printf ("Current terminal: %s\n", pupa_term_get_current ()->name);
grub_printf ("Current terminal: %s\n", grub_term_get_current ()->name);
}
else
{
pupa_term_iterate (find_terminal);
grub_term_iterate (find_terminal);
if (! term)
return pupa_error (PUPA_ERR_BAD_ARGUMENT, "no such terminal");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no such terminal");
pupa_term_set_current (term);
grub_term_set_current (term);
}
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
void
pupa_terminal_init (void)
grub_terminal_init (void)
{
pupa_register_command ("terminal", pupa_cmd_terminal, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("terminal", grub_cmd_terminal, GRUB_COMMAND_FLAG_BOTH,
"terminal [TERM...]", "Select a terminal.", 0);
}
void
pupa_terminal_fini (void)
grub_terminal_fini (void)
{
pupa_unregister_command ("terminal");
grub_unregister_command ("terminal");
}
#else /* ! PUPA_UTIL */
PUPA_MOD_INIT
#else /* ! GRUB_UTIL */
GRUB_MOD_INIT
{
(void)mod; /* To stop warning. */
pupa_register_command ("terminal", pupa_cmd_terminal, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("terminal", grub_cmd_terminal, GRUB_COMMAND_FLAG_BOTH,
"terminal [TERM...]", "Select a terminal.", 0);
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_unregister_command ("terminal");
grub_unregister_command ("terminal");
}
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */

View file

@ -239,432 +239,432 @@ kernel_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,8200
MOSTLYCLEANFILES += symlist.c kernel_syms.lst
DEFSYMFILES += kernel_syms.lst
symlist.c: $(addprefix include/pupa/,$(kernel_img_HEADERS)) gensymlist.sh
symlist.c: $(addprefix include/grub/,$(kernel_img_HEADERS)) gensymlist.sh
sh $(srcdir)/gensymlist.sh $(filter %.h,$^) > $@
kernel_syms.lst: $(addprefix include/pupa/,$(kernel_img_HEADERS)) genkernsyms.sh
kernel_syms.lst: $(addprefix include/grub/,$(kernel_img_HEADERS)) genkernsyms.sh
sh $(srcdir)/genkernsyms.sh $(filter %h,$^) > $@
# Utilities.
bin_UTILITIES = pupa-mkimage
sbin_UTILITIES = pupa-setup pupa-emu
bin_UTILITIES = grub-mkimage
sbin_UTILITIES = grub-setup grub-emu
noinst_UTILITIES = genmoddep
# For pupa-mkimage.
pupa_mkimage_SOURCES = util/i386/pc/pupa-mkimage.c util/misc.c \
# For grub-mkimage.
grub_mkimage_SOURCES = util/i386/pc/grub-mkimage.c util/misc.c \
util/resolve.c
CLEANFILES += pupa-mkimage pupa_mkimage-util_i386_pc_pupa_mkimage.o pupa_mkimage-util_misc.o pupa_mkimage-util_resolve.o
MOSTLYCLEANFILES += pupa_mkimage-util_i386_pc_pupa_mkimage.d pupa_mkimage-util_misc.d pupa_mkimage-util_resolve.d
CLEANFILES += grub-mkimage grub_mkimage-util_i386_pc_grub_mkimage.o grub_mkimage-util_misc.o grub_mkimage-util_resolve.o
MOSTLYCLEANFILES += grub_mkimage-util_i386_pc_grub_mkimage.d grub_mkimage-util_misc.d grub_mkimage-util_resolve.d
pupa-mkimage: pupa_mkimage-util_i386_pc_pupa_mkimage.o pupa_mkimage-util_misc.o pupa_mkimage-util_resolve.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(pupa_mkimage_LDFLAGS)
grub-mkimage: grub_mkimage-util_i386_pc_grub_mkimage.o grub_mkimage-util_misc.o grub_mkimage-util_resolve.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_mkimage_LDFLAGS)
pupa_mkimage-util_i386_pc_pupa_mkimage.o: util/i386/pc/pupa-mkimage.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_mkimage_CFLAGS) -c -o $@ $<
grub_mkimage-util_i386_pc_grub_mkimage.o: util/i386/pc/grub-mkimage.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_mkimage_CFLAGS) -c -o $@ $<
pupa_mkimage-util_i386_pc_pupa_mkimage.d: util/i386/pc/pupa-mkimage.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_mkimage_CFLAGS) -M $< | sed 's,pupa\-mkimage\.o[ :]*,pupa_mkimage-util_i386_pc_pupa_mkimage.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_mkimage-util_i386_pc_grub_mkimage.d: util/i386/pc/grub-mkimage.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_mkimage_CFLAGS) -M $< | sed 's,grub\-mkimage\.o[ :]*,grub_mkimage-util_i386_pc_grub_mkimage.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_mkimage-util_i386_pc_pupa_mkimage.d
-include grub_mkimage-util_i386_pc_grub_mkimage.d
pupa_mkimage-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_mkimage_CFLAGS) -c -o $@ $<
grub_mkimage-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_mkimage_CFLAGS) -c -o $@ $<
pupa_mkimage-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_mkimage_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupa_mkimage-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_mkimage-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_mkimage_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grub_mkimage-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_mkimage-util_misc.d
-include grub_mkimage-util_misc.d
pupa_mkimage-util_resolve.o: util/resolve.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_mkimage_CFLAGS) -c -o $@ $<
grub_mkimage-util_resolve.o: util/resolve.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_mkimage_CFLAGS) -c -o $@ $<
pupa_mkimage-util_resolve.d: util/resolve.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_mkimage_CFLAGS) -M $< | sed 's,resolve\.o[ :]*,pupa_mkimage-util_resolve.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_mkimage-util_resolve.d: util/resolve.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_mkimage_CFLAGS) -M $< | sed 's,resolve\.o[ :]*,grub_mkimage-util_resolve.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_mkimage-util_resolve.d
-include grub_mkimage-util_resolve.d
pupa_mkimage_LDFLAGS = -llzo
grub_mkimage_LDFLAGS = -llzo
# For pupa-setup.
pupa_setup_SOURCES = util/i386/pc/pupa-setup.c util/i386/pc/biosdisk.c \
# For grub-setup.
grub_setup_SOURCES = util/i386/pc/grub-setup.c util/i386/pc/biosdisk.c \
util/misc.c util/i386/pc/getroot.c kern/device.c kern/disk.c \
kern/err.c kern/misc.c disk/i386/pc/partition.c fs/fat.c fs/ext2.c \
kern/file.c kern/fs.c kern/env.c
CLEANFILES += pupa-setup pupa_setup-util_i386_pc_pupa_setup.o pupa_setup-util_i386_pc_biosdisk.o pupa_setup-util_misc.o pupa_setup-util_i386_pc_getroot.o pupa_setup-kern_device.o pupa_setup-kern_disk.o pupa_setup-kern_err.o pupa_setup-kern_misc.o pupa_setup-disk_i386_pc_partition.o pupa_setup-fs_fat.o pupa_setup-fs_ext2.o pupa_setup-kern_file.o pupa_setup-kern_fs.o pupa_setup-kern_env.o
MOSTLYCLEANFILES += pupa_setup-util_i386_pc_pupa_setup.d pupa_setup-util_i386_pc_biosdisk.d pupa_setup-util_misc.d pupa_setup-util_i386_pc_getroot.d pupa_setup-kern_device.d pupa_setup-kern_disk.d pupa_setup-kern_err.d pupa_setup-kern_misc.d pupa_setup-disk_i386_pc_partition.d pupa_setup-fs_fat.d pupa_setup-fs_ext2.d pupa_setup-kern_file.d pupa_setup-kern_fs.d pupa_setup-kern_env.d
CLEANFILES += grub-setup grub_setup-util_i386_pc_grub_setup.o grub_setup-util_i386_pc_biosdisk.o grub_setup-util_misc.o grub_setup-util_i386_pc_getroot.o grub_setup-kern_device.o grub_setup-kern_disk.o grub_setup-kern_err.o grub_setup-kern_misc.o grub_setup-disk_i386_pc_partition.o grub_setup-fs_fat.o grub_setup-fs_ext2.o grub_setup-kern_file.o grub_setup-kern_fs.o grub_setup-kern_env.o
MOSTLYCLEANFILES += grub_setup-util_i386_pc_grub_setup.d grub_setup-util_i386_pc_biosdisk.d grub_setup-util_misc.d grub_setup-util_i386_pc_getroot.d grub_setup-kern_device.d grub_setup-kern_disk.d grub_setup-kern_err.d grub_setup-kern_misc.d grub_setup-disk_i386_pc_partition.d grub_setup-fs_fat.d grub_setup-fs_ext2.d grub_setup-kern_file.d grub_setup-kern_fs.d grub_setup-kern_env.d
pupa-setup: pupa_setup-util_i386_pc_pupa_setup.o pupa_setup-util_i386_pc_biosdisk.o pupa_setup-util_misc.o pupa_setup-util_i386_pc_getroot.o pupa_setup-kern_device.o pupa_setup-kern_disk.o pupa_setup-kern_err.o pupa_setup-kern_misc.o pupa_setup-disk_i386_pc_partition.o pupa_setup-fs_fat.o pupa_setup-fs_ext2.o pupa_setup-kern_file.o pupa_setup-kern_fs.o pupa_setup-kern_env.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(pupa_setup_LDFLAGS)
grub-setup: grub_setup-util_i386_pc_grub_setup.o grub_setup-util_i386_pc_biosdisk.o grub_setup-util_misc.o grub_setup-util_i386_pc_getroot.o grub_setup-kern_device.o grub_setup-kern_disk.o grub_setup-kern_err.o grub_setup-kern_misc.o grub_setup-disk_i386_pc_partition.o grub_setup-fs_fat.o grub_setup-fs_ext2.o grub_setup-kern_file.o grub_setup-kern_fs.o grub_setup-kern_env.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_setup_LDFLAGS)
pupa_setup-util_i386_pc_pupa_setup.o: util/i386/pc/pupa-setup.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-util_i386_pc_grub_setup.o: util/i386/pc/grub-setup.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-util_i386_pc_pupa_setup.d: util/i386/pc/pupa-setup.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,pupa\-setup\.o[ :]*,pupa_setup-util_i386_pc_pupa_setup.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-util_i386_pc_grub_setup.d: util/i386/pc/grub-setup.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,grub\-setup\.o[ :]*,grub_setup-util_i386_pc_grub_setup.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-util_i386_pc_pupa_setup.d
-include grub_setup-util_i386_pc_grub_setup.d
pupa_setup-util_i386_pc_biosdisk.o: util/i386/pc/biosdisk.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-util_i386_pc_biosdisk.o: util/i386/pc/biosdisk.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-util_i386_pc_biosdisk.d: util/i386/pc/biosdisk.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,biosdisk\.o[ :]*,pupa_setup-util_i386_pc_biosdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-util_i386_pc_biosdisk.d: util/i386/pc/biosdisk.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,biosdisk\.o[ :]*,grub_setup-util_i386_pc_biosdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-util_i386_pc_biosdisk.d
-include grub_setup-util_i386_pc_biosdisk.d
pupa_setup-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupa_setup-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grub_setup-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-util_misc.d
-include grub_setup-util_misc.d
pupa_setup-util_i386_pc_getroot.o: util/i386/pc/getroot.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-util_i386_pc_getroot.o: util/i386/pc/getroot.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-util_i386_pc_getroot.d: util/i386/pc/getroot.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,getroot\.o[ :]*,pupa_setup-util_i386_pc_getroot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-util_i386_pc_getroot.d: util/i386/pc/getroot.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,getroot\.o[ :]*,grub_setup-util_i386_pc_getroot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-util_i386_pc_getroot.d
-include grub_setup-util_i386_pc_getroot.d
pupa_setup-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,device\.o[ :]*,pupa_setup-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,device\.o[ :]*,grub_setup-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-kern_device.d
-include grub_setup-kern_device.d
pupa_setup-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,disk\.o[ :]*,pupa_setup-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,disk\.o[ :]*,grub_setup-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-kern_disk.d
-include grub_setup-kern_disk.d
pupa_setup-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,err\.o[ :]*,pupa_setup-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,err\.o[ :]*,grub_setup-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-kern_err.d
-include grub_setup-kern_err.d
pupa_setup-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupa_setup-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grub_setup-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-kern_misc.d
-include grub_setup-kern_misc.d
pupa_setup-disk_i386_pc_partition.o: disk/i386/pc/partition.c
$(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-disk_i386_pc_partition.o: disk/i386/pc/partition.c
$(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-disk_i386_pc_partition.d: disk/i386/pc/partition.c
set -e; $(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,partition\.o[ :]*,pupa_setup-disk_i386_pc_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-disk_i386_pc_partition.d: disk/i386/pc/partition.c
set -e; $(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,partition\.o[ :]*,grub_setup-disk_i386_pc_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-disk_i386_pc_partition.d
-include grub_setup-disk_i386_pc_partition.d
pupa_setup-fs_fat.o: fs/fat.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-fs_fat.o: fs/fat.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-fs_fat.d: fs/fat.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,fat\.o[ :]*,pupa_setup-fs_fat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-fs_fat.d: fs/fat.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,fat\.o[ :]*,grub_setup-fs_fat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-fs_fat.d
-include grub_setup-fs_fat.d
pupa_setup-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,pupa_setup-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,grub_setup-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-fs_ext2.d
-include grub_setup-fs_ext2.d
pupa_setup-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,file\.o[ :]*,pupa_setup-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,file\.o[ :]*,grub_setup-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-kern_file.d
-include grub_setup-kern_file.d
pupa_setup-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,fs\.o[ :]*,pupa_setup-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,fs\.o[ :]*,grub_setup-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-kern_fs.d
-include grub_setup-kern_fs.d
pupa_setup-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -c -o $@ $<
grub_setup-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
pupa_setup-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_setup_CFLAGS) -M $< | sed 's,env\.o[ :]*,pupa_setup-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_setup-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,env\.o[ :]*,grub_setup-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_setup-kern_env.d
-include grub_setup-kern_env.d
# For pupa
pupa_emu_SOURCES = kern/main.c kern/device.c \
# For grub
grub_emu_SOURCES = kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
kern/misc.c kern/loader.c kern/rescue.c kern/term.c \
disk/i386/pc/partition.c kern/env.c commands/ls.c \
commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c \
util/i386/pc/biosdisk.c fs/fat.c fs/ext2.c \
normal/cmdline.c normal/command.c normal/main.c normal/menu.c normal/arg.c \
util/console.c util/pupa-emu.c util/misc.c util/i386/pc/getroot.c
CLEANFILES += pupa-emu pupa_emu-kern_main.o pupa_emu-kern_device.o pupa_emu-kern_disk.o pupa_emu-kern_dl.o pupa_emu-kern_file.o pupa_emu-kern_fs.o pupa_emu-kern_err.o pupa_emu-kern_misc.o pupa_emu-kern_loader.o pupa_emu-kern_rescue.o pupa_emu-kern_term.o pupa_emu-disk_i386_pc_partition.o pupa_emu-kern_env.o pupa_emu-commands_ls.o pupa_emu-commands_terminal.o pupa_emu-commands_boot.o pupa_emu-commands_cmp.o pupa_emu-commands_cat.o pupa_emu-util_i386_pc_biosdisk.o pupa_emu-fs_fat.o pupa_emu-fs_ext2.o pupa_emu-normal_cmdline.o pupa_emu-normal_command.o pupa_emu-normal_main.o pupa_emu-normal_menu.o pupa_emu-normal_arg.o pupa_emu-util_console.o pupa_emu-util_pupa_emu.o pupa_emu-util_misc.o pupa_emu-util_i386_pc_getroot.o
MOSTLYCLEANFILES += pupa_emu-kern_main.d pupa_emu-kern_device.d pupa_emu-kern_disk.d pupa_emu-kern_dl.d pupa_emu-kern_file.d pupa_emu-kern_fs.d pupa_emu-kern_err.d pupa_emu-kern_misc.d pupa_emu-kern_loader.d pupa_emu-kern_rescue.d pupa_emu-kern_term.d pupa_emu-disk_i386_pc_partition.d pupa_emu-kern_env.d pupa_emu-commands_ls.d pupa_emu-commands_terminal.d pupa_emu-commands_boot.d pupa_emu-commands_cmp.d pupa_emu-commands_cat.d pupa_emu-util_i386_pc_biosdisk.d pupa_emu-fs_fat.d pupa_emu-fs_ext2.d pupa_emu-normal_cmdline.d pupa_emu-normal_command.d pupa_emu-normal_main.d pupa_emu-normal_menu.d pupa_emu-normal_arg.d pupa_emu-util_console.d pupa_emu-util_pupa_emu.d pupa_emu-util_misc.d pupa_emu-util_i386_pc_getroot.d
util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c
CLEANFILES += grub-emu grub_emu-kern_main.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_err.o grub_emu-kern_misc.o grub_emu-kern_loader.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-disk_i386_pc_partition.o grub_emu-kern_env.o grub_emu-commands_ls.o grub_emu-commands_terminal.o grub_emu-commands_boot.o grub_emu-commands_cmp.o grub_emu-commands_cat.o grub_emu-util_i386_pc_biosdisk.o grub_emu-fs_fat.o grub_emu-fs_ext2.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_arg.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_getroot.o
MOSTLYCLEANFILES += grub_emu-kern_main.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_err.d grub_emu-kern_misc.d grub_emu-kern_loader.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-disk_i386_pc_partition.d grub_emu-kern_env.d grub_emu-commands_ls.d grub_emu-commands_terminal.d grub_emu-commands_boot.d grub_emu-commands_cmp.d grub_emu-commands_cat.d grub_emu-util_i386_pc_biosdisk.d grub_emu-fs_fat.d grub_emu-fs_ext2.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_arg.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_getroot.d
pupa-emu: pupa_emu-kern_main.o pupa_emu-kern_device.o pupa_emu-kern_disk.o pupa_emu-kern_dl.o pupa_emu-kern_file.o pupa_emu-kern_fs.o pupa_emu-kern_err.o pupa_emu-kern_misc.o pupa_emu-kern_loader.o pupa_emu-kern_rescue.o pupa_emu-kern_term.o pupa_emu-disk_i386_pc_partition.o pupa_emu-kern_env.o pupa_emu-commands_ls.o pupa_emu-commands_terminal.o pupa_emu-commands_boot.o pupa_emu-commands_cmp.o pupa_emu-commands_cat.o pupa_emu-util_i386_pc_biosdisk.o pupa_emu-fs_fat.o pupa_emu-fs_ext2.o pupa_emu-normal_cmdline.o pupa_emu-normal_command.o pupa_emu-normal_main.o pupa_emu-normal_menu.o pupa_emu-normal_arg.o pupa_emu-util_console.o pupa_emu-util_pupa_emu.o pupa_emu-util_misc.o pupa_emu-util_i386_pc_getroot.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(pupa_emu_LDFLAGS)
grub-emu: grub_emu-kern_main.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_err.o grub_emu-kern_misc.o grub_emu-kern_loader.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-disk_i386_pc_partition.o grub_emu-kern_env.o grub_emu-commands_ls.o grub_emu-commands_terminal.o grub_emu-commands_boot.o grub_emu-commands_cmp.o grub_emu-commands_cat.o grub_emu-util_i386_pc_biosdisk.o grub_emu-fs_fat.o grub_emu-fs_ext2.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_arg.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_getroot.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_emu_LDFLAGS)
pupa_emu-kern_main.o: kern/main.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_main.o: kern/main.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_main.d: kern/main.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,pupa_emu-kern_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_main.d: kern/main.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,grub_emu-kern_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_main.d
-include grub_emu-kern_main.d
pupa_emu-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,device\.o[ :]*,pupa_emu-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,device\.o[ :]*,grub_emu-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_device.d
-include grub_emu-kern_device.d
pupa_emu-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,disk\.o[ :]*,pupa_emu-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,disk\.o[ :]*,grub_emu-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_disk.d
-include grub_emu-kern_disk.d
pupa_emu-kern_dl.o: kern/dl.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_dl.o: kern/dl.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_dl.d: kern/dl.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,dl\.o[ :]*,pupa_emu-kern_dl.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_dl.d: kern/dl.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,dl\.o[ :]*,grub_emu-kern_dl.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_dl.d
-include grub_emu-kern_dl.d
pupa_emu-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,file\.o[ :]*,pupa_emu-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,file\.o[ :]*,grub_emu-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_file.d
-include grub_emu-kern_file.d
pupa_emu-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,fs\.o[ :]*,pupa_emu-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,fs\.o[ :]*,grub_emu-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_fs.d
-include grub_emu-kern_fs.d
pupa_emu-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,err\.o[ :]*,pupa_emu-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,err\.o[ :]*,grub_emu-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_err.d
-include grub_emu-kern_err.d
pupa_emu-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupa_emu-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grub_emu-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_misc.d
-include grub_emu-kern_misc.d
pupa_emu-kern_loader.o: kern/loader.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_loader.o: kern/loader.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_loader.d: kern/loader.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,loader\.o[ :]*,pupa_emu-kern_loader.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_loader.d: kern/loader.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,loader\.o[ :]*,grub_emu-kern_loader.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_loader.d
-include grub_emu-kern_loader.d
pupa_emu-kern_rescue.o: kern/rescue.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_rescue.o: kern/rescue.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_rescue.d: kern/rescue.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,rescue\.o[ :]*,pupa_emu-kern_rescue.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_rescue.d: kern/rescue.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,rescue\.o[ :]*,grub_emu-kern_rescue.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_rescue.d
-include grub_emu-kern_rescue.d
pupa_emu-kern_term.o: kern/term.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_term.o: kern/term.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_term.d: kern/term.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,term\.o[ :]*,pupa_emu-kern_term.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_term.d: kern/term.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,term\.o[ :]*,grub_emu-kern_term.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_term.d
-include grub_emu-kern_term.d
pupa_emu-disk_i386_pc_partition.o: disk/i386/pc/partition.c
$(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-disk_i386_pc_partition.o: disk/i386/pc/partition.c
$(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-disk_i386_pc_partition.d: disk/i386/pc/partition.c
set -e; $(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,partition\.o[ :]*,pupa_emu-disk_i386_pc_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-disk_i386_pc_partition.d: disk/i386/pc/partition.c
set -e; $(BUILD_CC) -Idisk/i386/pc -I$(srcdir)/disk/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,partition\.o[ :]*,grub_emu-disk_i386_pc_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-disk_i386_pc_partition.d
-include grub_emu-disk_i386_pc_partition.d
pupa_emu-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,env\.o[ :]*,pupa_emu-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,env\.o[ :]*,grub_emu-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_env.d
-include grub_emu-kern_env.d
pupa_emu-commands_ls.o: commands/ls.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-commands_ls.o: commands/ls.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-commands_ls.d: commands/ls.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,ls\.o[ :]*,pupa_emu-commands_ls.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-commands_ls.d: commands/ls.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,ls\.o[ :]*,grub_emu-commands_ls.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-commands_ls.d
-include grub_emu-commands_ls.d
pupa_emu-commands_terminal.o: commands/terminal.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-commands_terminal.o: commands/terminal.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-commands_terminal.d: commands/terminal.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,terminal\.o[ :]*,pupa_emu-commands_terminal.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-commands_terminal.d: commands/terminal.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,terminal\.o[ :]*,grub_emu-commands_terminal.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-commands_terminal.d
-include grub_emu-commands_terminal.d
pupa_emu-commands_boot.o: commands/boot.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-commands_boot.o: commands/boot.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-commands_boot.d: commands/boot.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,boot\.o[ :]*,pupa_emu-commands_boot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-commands_boot.d: commands/boot.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,boot\.o[ :]*,grub_emu-commands_boot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-commands_boot.d
-include grub_emu-commands_boot.d
pupa_emu-commands_cmp.o: commands/cmp.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-commands_cmp.o: commands/cmp.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-commands_cmp.d: commands/cmp.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,cmp\.o[ :]*,pupa_emu-commands_cmp.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-commands_cmp.d: commands/cmp.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,cmp\.o[ :]*,grub_emu-commands_cmp.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-commands_cmp.d
-include grub_emu-commands_cmp.d
pupa_emu-commands_cat.o: commands/cat.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-commands_cat.o: commands/cat.c
$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-commands_cat.d: commands/cat.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,cat\.o[ :]*,pupa_emu-commands_cat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-commands_cat.d: commands/cat.c
set -e; $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,cat\.o[ :]*,grub_emu-commands_cat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-commands_cat.d
-include grub_emu-commands_cat.d
pupa_emu-util_i386_pc_biosdisk.o: util/i386/pc/biosdisk.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_i386_pc_biosdisk.o: util/i386/pc/biosdisk.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_i386_pc_biosdisk.d: util/i386/pc/biosdisk.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,biosdisk\.o[ :]*,pupa_emu-util_i386_pc_biosdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_i386_pc_biosdisk.d: util/i386/pc/biosdisk.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,biosdisk\.o[ :]*,grub_emu-util_i386_pc_biosdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_i386_pc_biosdisk.d
-include grub_emu-util_i386_pc_biosdisk.d
pupa_emu-fs_fat.o: fs/fat.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-fs_fat.o: fs/fat.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-fs_fat.d: fs/fat.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,fat\.o[ :]*,pupa_emu-fs_fat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-fs_fat.d: fs/fat.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,fat\.o[ :]*,grub_emu-fs_fat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-fs_fat.d
-include grub_emu-fs_fat.d
pupa_emu-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,pupa_emu-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,grub_emu-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-fs_ext2.d
-include grub_emu-fs_ext2.d
pupa_emu-normal_cmdline.o: normal/cmdline.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_cmdline.o: normal/cmdline.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_cmdline.d: normal/cmdline.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,cmdline\.o[ :]*,pupa_emu-normal_cmdline.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_cmdline.d: normal/cmdline.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,cmdline\.o[ :]*,grub_emu-normal_cmdline.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_cmdline.d
-include grub_emu-normal_cmdline.d
pupa_emu-normal_command.o: normal/command.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_command.o: normal/command.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_command.d: normal/command.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,command\.o[ :]*,pupa_emu-normal_command.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_command.d: normal/command.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,command\.o[ :]*,grub_emu-normal_command.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_command.d
-include grub_emu-normal_command.d
pupa_emu-normal_main.o: normal/main.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_main.o: normal/main.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_main.d: normal/main.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,pupa_emu-normal_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_main.d: normal/main.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,grub_emu-normal_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_main.d
-include grub_emu-normal_main.d
pupa_emu-normal_menu.o: normal/menu.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_menu.o: normal/menu.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_menu.d: normal/menu.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,menu\.o[ :]*,pupa_emu-normal_menu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_menu.d: normal/menu.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,menu\.o[ :]*,grub_emu-normal_menu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_menu.d
-include grub_emu-normal_menu.d
pupa_emu-normal_arg.o: normal/arg.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_arg.o: normal/arg.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_arg.d: normal/arg.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,arg\.o[ :]*,pupa_emu-normal_arg.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_arg.d: normal/arg.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,arg\.o[ :]*,grub_emu-normal_arg.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_arg.d
-include grub_emu-normal_arg.d
pupa_emu-util_console.o: util/console.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_console.o: util/console.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_console.d: util/console.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,console\.o[ :]*,pupa_emu-util_console.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_console.d: util/console.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,console\.o[ :]*,grub_emu-util_console.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_console.d
-include grub_emu-util_console.d
pupa_emu-util_pupa_emu.o: util/pupa-emu.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_grub_emu.o: util/grub-emu.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_pupa_emu.d: util/pupa-emu.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,pupa\-emu\.o[ :]*,pupa_emu-util_pupa_emu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_grub_emu.d: util/grub-emu.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,grub\-emu\.o[ :]*,grub_emu-util_grub_emu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_pupa_emu.d
-include grub_emu-util_grub_emu.d
pupa_emu-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupa_emu-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grub_emu-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_misc.d
-include grub_emu-util_misc.d
pupa_emu-util_i386_pc_getroot.o: util/i386/pc/getroot.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_i386_pc_getroot.o: util/i386/pc/getroot.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_i386_pc_getroot.d: util/i386/pc/getroot.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,getroot\.o[ :]*,pupa_emu-util_i386_pc_getroot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_i386_pc_getroot.d: util/i386/pc/getroot.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,getroot\.o[ :]*,grub_emu-util_i386_pc_getroot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_i386_pc_getroot.d
-include grub_emu-util_i386_pc_getroot.d
pupa_emu_LDFLAGS = -lncurses
grub_emu_LDFLAGS = -lncurses
# For genmoddep.
genmoddep_SOURCES = util/genmoddep.c
@ -675,10 +675,10 @@ genmoddep: genmoddep-util_genmoddep.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(genmoddep_LDFLAGS)
genmoddep-util_genmoddep.o: util/genmoddep.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(genmoddep_CFLAGS) -c -o $@ $<
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(genmoddep_CFLAGS) -c -o $@ $<
genmoddep-util_genmoddep.d: util/genmoddep.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(genmoddep_CFLAGS) -M $< | sed 's,genmoddep\.o[ :]*,genmoddep-util_genmoddep.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(genmoddep_CFLAGS) -M $< | sed 's,genmoddep\.o[ :]*,genmoddep-util_genmoddep.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include genmoddep-util_genmoddep.d
@ -697,7 +697,7 @@ UNDSYMFILES += und-_chain.lst
_chain.mod: pre-_chain.o mod-_chain.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-_chain.o: _chain_mod-loader_i386_pc_chainloader.o
-rm -f $@
@ -736,7 +736,7 @@ UNDSYMFILES += und-fat.lst
fat.mod: pre-fat.o mod-fat.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-fat.o: fat_mod-fs_fat.o
-rm -f $@
@ -775,7 +775,7 @@ UNDSYMFILES += und-ext2.lst
ext2.mod: pre-ext2.o mod-ext2.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-ext2.o: ext2_mod-fs_ext2.o
-rm -f $@
@ -814,7 +814,7 @@ UNDSYMFILES += und-_linux.lst
_linux.mod: pre-_linux.o mod-_linux.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-_linux.o: _linux_mod-loader_i386_pc_linux.o
-rm -f $@
@ -854,7 +854,7 @@ UNDSYMFILES += und-normal.lst
normal.mod: pre-normal.o mod-normal.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-normal.o: normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_arg.o normal_mod-normal_i386_setjmp.o
-rm -f $@
@ -934,7 +934,7 @@ UNDSYMFILES += und-hello.lst
hello.mod: pre-hello.o mod-hello.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-hello.o: hello_mod-hello_hello.o
-rm -f $@
@ -973,7 +973,7 @@ UNDSYMFILES += und-boot.lst
boot.mod: pre-boot.o mod-boot.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-boot.o: boot_mod-commands_boot.o
-rm -f $@
@ -1012,7 +1012,7 @@ UNDSYMFILES += und-terminal.lst
terminal.mod: pre-terminal.o mod-terminal.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-terminal.o: terminal_mod-commands_terminal.o
-rm -f $@
@ -1051,7 +1051,7 @@ UNDSYMFILES += und-ls.lst
ls.mod: pre-ls.o mod-ls.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-ls.o: ls_mod-commands_ls.o
-rm -f $@
@ -1090,7 +1090,7 @@ UNDSYMFILES += und-cmp.lst
cmp.mod: pre-cmp.o mod-cmp.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-cmp.o: cmp_mod-commands_cmp.o
-rm -f $@
@ -1129,7 +1129,7 @@ UNDSYMFILES += und-cat.lst
cat.mod: pre-cat.o mod-cat.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-cat.o: cat_mod-commands_cat.o
-rm -f $@
@ -1168,7 +1168,7 @@ UNDSYMFILES += und-vga.lst
vga.mod: pre-vga.o mod-vga.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-vga.o: vga_mod-term_i386_pc_vga.o
-rm -f $@
@ -1207,7 +1207,7 @@ UNDSYMFILES += und-font.lst
font.mod: pre-font.o mod-font.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-font.o: font_mod-font_manager.o
-rm -f $@
@ -1246,7 +1246,7 @@ UNDSYMFILES += und-_multiboot.lst
_multiboot.mod: pre-_multiboot.o mod-_multiboot.o
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-_multiboot.o: _multiboot_mod-loader_i386_pc_multiboot.o
-rm -f $@

View file

@ -36,38 +36,38 @@ kernel_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,8200
MOSTLYCLEANFILES += symlist.c kernel_syms.lst
DEFSYMFILES += kernel_syms.lst
symlist.c: $(addprefix include/pupa/,$(kernel_img_HEADERS)) gensymlist.sh
symlist.c: $(addprefix include/grub/,$(kernel_img_HEADERS)) gensymlist.sh
sh $(srcdir)/gensymlist.sh $(filter %.h,$^) > $@
kernel_syms.lst: $(addprefix include/pupa/,$(kernel_img_HEADERS)) genkernsyms.sh
kernel_syms.lst: $(addprefix include/grub/,$(kernel_img_HEADERS)) genkernsyms.sh
sh $(srcdir)/genkernsyms.sh $(filter %h,$^) > $@
# Utilities.
bin_UTILITIES = pupa-mkimage
sbin_UTILITIES = pupa-setup pupa-emu
bin_UTILITIES = grub-mkimage
sbin_UTILITIES = grub-setup grub-emu
noinst_UTILITIES = genmoddep
# For pupa-mkimage.
pupa_mkimage_SOURCES = util/i386/pc/pupa-mkimage.c util/misc.c \
# For grub-mkimage.
grub_mkimage_SOURCES = util/i386/pc/grub-mkimage.c util/misc.c \
util/resolve.c
pupa_mkimage_LDFLAGS = -llzo
grub_mkimage_LDFLAGS = -llzo
# For pupa-setup.
pupa_setup_SOURCES = util/i386/pc/pupa-setup.c util/i386/pc/biosdisk.c \
# For grub-setup.
grub_setup_SOURCES = util/i386/pc/grub-setup.c util/i386/pc/biosdisk.c \
util/misc.c util/i386/pc/getroot.c kern/device.c kern/disk.c \
kern/err.c kern/misc.c disk/i386/pc/partition.c fs/fat.c fs/ext2.c \
kern/file.c kern/fs.c kern/env.c
# For pupa
pupa_emu_SOURCES = kern/main.c kern/device.c \
# For grub
grub_emu_SOURCES = kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
kern/misc.c kern/loader.c kern/rescue.c kern/term.c \
disk/i386/pc/partition.c kern/env.c commands/ls.c \
commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c \
util/i386/pc/biosdisk.c fs/fat.c fs/ext2.c \
normal/cmdline.c normal/command.c normal/main.c normal/menu.c normal/arg.c \
util/console.c util/pupa-emu.c util/misc.c util/i386/pc/getroot.c
pupa_emu_LDFLAGS = -lncurses
util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c
grub_emu_LDFLAGS = -lncurses
# For genmoddep.
genmoddep_SOURCES = util/genmoddep.c

View file

@ -9,227 +9,227 @@ COMMON_CFLAGS = -fno-builtin -D__ASSEMBLY__
MOSTLYCLEANFILES += symlist.c kernel_syms.lst
DEFSYMFILES += kernel_syms.lst
symlist.c: $(addprefix include/pupa/,$(kernel_img_HEADERS)) gensymlist.sh
symlist.c: $(addprefix include/grub/,$(kernel_img_HEADERS)) gensymlist.sh
sh $(srcdir)/gensymlist.sh $(filter %.h,$^) > $@
kernel_syms.lst: $(addprefix include/pupa/,$(kernel_img_HEADERS)) genkernsyms.sh
kernel_syms.lst: $(addprefix include/grub/,$(kernel_img_HEADERS)) genkernsyms.sh
sh $(srcdir)/genkernsyms.sh $(filter %h,$^) > $@
# Utilities.
sbin_UTILITIES = pupaof
bin_UTILITIES = pupa-emu
sbin_UTILITIES = grubof
bin_UTILITIES = grub-emu
noinst_UTILITIES = genmoddep
# For pupa-emu
pupa_emu_SOURCES = kern/main.c kern/device.c \
# For grub-emu
grub_emu_SOURCES = kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
kern/misc.c kern/loader.c kern/rescue.c kern/term.c \
disk/powerpc/ieee1275/partition.c \
util/i386/pc/biosdisk.c fs/fat.c fs/ext2.c \
normal/cmdline.c normal/command.c normal/main.c normal/menu.c \
util/console.c util/pupa-emu.c util/misc.c util/i386/pc/getroot.c \
util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c \
kern/env.c
CLEANFILES += pupa-emu pupa_emu-kern_main.o pupa_emu-kern_device.o pupa_emu-kern_disk.o pupa_emu-kern_dl.o pupa_emu-kern_file.o pupa_emu-kern_fs.o pupa_emu-kern_err.o pupa_emu-kern_misc.o pupa_emu-kern_loader.o pupa_emu-kern_rescue.o pupa_emu-kern_term.o pupa_emu-disk_powerpc_ieee1275_partition.o pupa_emu-util_i386_pc_biosdisk.o pupa_emu-fs_fat.o pupa_emu-fs_ext2.o pupa_emu-normal_cmdline.o pupa_emu-normal_command.o pupa_emu-normal_main.o pupa_emu-normal_menu.o pupa_emu-util_console.o pupa_emu-util_pupa_emu.o pupa_emu-util_misc.o pupa_emu-util_i386_pc_getroot.o pupa_emu-kern_env.o
MOSTLYCLEANFILES += pupa_emu-kern_main.d pupa_emu-kern_device.d pupa_emu-kern_disk.d pupa_emu-kern_dl.d pupa_emu-kern_file.d pupa_emu-kern_fs.d pupa_emu-kern_err.d pupa_emu-kern_misc.d pupa_emu-kern_loader.d pupa_emu-kern_rescue.d pupa_emu-kern_term.d pupa_emu-disk_powerpc_ieee1275_partition.d pupa_emu-util_i386_pc_biosdisk.d pupa_emu-fs_fat.d pupa_emu-fs_ext2.d pupa_emu-normal_cmdline.d pupa_emu-normal_command.d pupa_emu-normal_main.d pupa_emu-normal_menu.d pupa_emu-util_console.d pupa_emu-util_pupa_emu.d pupa_emu-util_misc.d pupa_emu-util_i386_pc_getroot.d pupa_emu-kern_env.d
CLEANFILES += grub-emu grub_emu-kern_main.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_err.o grub_emu-kern_misc.o grub_emu-kern_loader.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-disk_powerpc_ieee1275_partition.o grub_emu-util_i386_pc_biosdisk.o grub_emu-fs_fat.o grub_emu-fs_ext2.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_getroot.o grub_emu-kern_env.o
MOSTLYCLEANFILES += grub_emu-kern_main.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_err.d grub_emu-kern_misc.d grub_emu-kern_loader.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-disk_powerpc_ieee1275_partition.d grub_emu-util_i386_pc_biosdisk.d grub_emu-fs_fat.d grub_emu-fs_ext2.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_getroot.d grub_emu-kern_env.d
pupa-emu: pupa_emu-kern_main.o pupa_emu-kern_device.o pupa_emu-kern_disk.o pupa_emu-kern_dl.o pupa_emu-kern_file.o pupa_emu-kern_fs.o pupa_emu-kern_err.o pupa_emu-kern_misc.o pupa_emu-kern_loader.o pupa_emu-kern_rescue.o pupa_emu-kern_term.o pupa_emu-disk_powerpc_ieee1275_partition.o pupa_emu-util_i386_pc_biosdisk.o pupa_emu-fs_fat.o pupa_emu-fs_ext2.o pupa_emu-normal_cmdline.o pupa_emu-normal_command.o pupa_emu-normal_main.o pupa_emu-normal_menu.o pupa_emu-util_console.o pupa_emu-util_pupa_emu.o pupa_emu-util_misc.o pupa_emu-util_i386_pc_getroot.o pupa_emu-kern_env.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(pupa_emu_LDFLAGS)
grub-emu: grub_emu-kern_main.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_err.o grub_emu-kern_misc.o grub_emu-kern_loader.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-disk_powerpc_ieee1275_partition.o grub_emu-util_i386_pc_biosdisk.o grub_emu-fs_fat.o grub_emu-fs_ext2.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_getroot.o grub_emu-kern_env.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_emu_LDFLAGS)
pupa_emu-kern_main.o: kern/main.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_main.o: kern/main.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_main.d: kern/main.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,pupa_emu-kern_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_main.d: kern/main.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,grub_emu-kern_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_main.d
-include grub_emu-kern_main.d
pupa_emu-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,device\.o[ :]*,pupa_emu-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,device\.o[ :]*,grub_emu-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_device.d
-include grub_emu-kern_device.d
pupa_emu-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,disk\.o[ :]*,pupa_emu-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,disk\.o[ :]*,grub_emu-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_disk.d
-include grub_emu-kern_disk.d
pupa_emu-kern_dl.o: kern/dl.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_dl.o: kern/dl.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_dl.d: kern/dl.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,dl\.o[ :]*,pupa_emu-kern_dl.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_dl.d: kern/dl.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,dl\.o[ :]*,grub_emu-kern_dl.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_dl.d
-include grub_emu-kern_dl.d
pupa_emu-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,file\.o[ :]*,pupa_emu-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,file\.o[ :]*,grub_emu-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_file.d
-include grub_emu-kern_file.d
pupa_emu-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,fs\.o[ :]*,pupa_emu-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,fs\.o[ :]*,grub_emu-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_fs.d
-include grub_emu-kern_fs.d
pupa_emu-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,err\.o[ :]*,pupa_emu-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,err\.o[ :]*,grub_emu-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_err.d
-include grub_emu-kern_err.d
pupa_emu-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupa_emu-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grub_emu-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_misc.d
-include grub_emu-kern_misc.d
pupa_emu-kern_loader.o: kern/loader.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_loader.o: kern/loader.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_loader.d: kern/loader.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,loader\.o[ :]*,pupa_emu-kern_loader.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_loader.d: kern/loader.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,loader\.o[ :]*,grub_emu-kern_loader.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_loader.d
-include grub_emu-kern_loader.d
pupa_emu-kern_rescue.o: kern/rescue.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_rescue.o: kern/rescue.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_rescue.d: kern/rescue.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,rescue\.o[ :]*,pupa_emu-kern_rescue.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_rescue.d: kern/rescue.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,rescue\.o[ :]*,grub_emu-kern_rescue.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_rescue.d
-include grub_emu-kern_rescue.d
pupa_emu-kern_term.o: kern/term.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_term.o: kern/term.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_term.d: kern/term.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,term\.o[ :]*,pupa_emu-kern_term.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_term.d: kern/term.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,term\.o[ :]*,grub_emu-kern_term.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_term.d
-include grub_emu-kern_term.d
pupa_emu-disk_powerpc_ieee1275_partition.o: disk/powerpc/ieee1275/partition.c
$(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-disk_powerpc_ieee1275_partition.o: disk/powerpc/ieee1275/partition.c
$(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-disk_powerpc_ieee1275_partition.d: disk/powerpc/ieee1275/partition.c
set -e; $(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,partition\.o[ :]*,pupa_emu-disk_powerpc_ieee1275_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-disk_powerpc_ieee1275_partition.d: disk/powerpc/ieee1275/partition.c
set -e; $(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,partition\.o[ :]*,grub_emu-disk_powerpc_ieee1275_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-disk_powerpc_ieee1275_partition.d
-include grub_emu-disk_powerpc_ieee1275_partition.d
pupa_emu-util_i386_pc_biosdisk.o: util/i386/pc/biosdisk.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_i386_pc_biosdisk.o: util/i386/pc/biosdisk.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_i386_pc_biosdisk.d: util/i386/pc/biosdisk.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,biosdisk\.o[ :]*,pupa_emu-util_i386_pc_biosdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_i386_pc_biosdisk.d: util/i386/pc/biosdisk.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,biosdisk\.o[ :]*,grub_emu-util_i386_pc_biosdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_i386_pc_biosdisk.d
-include grub_emu-util_i386_pc_biosdisk.d
pupa_emu-fs_fat.o: fs/fat.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-fs_fat.o: fs/fat.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-fs_fat.d: fs/fat.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,fat\.o[ :]*,pupa_emu-fs_fat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-fs_fat.d: fs/fat.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,fat\.o[ :]*,grub_emu-fs_fat.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-fs_fat.d
-include grub_emu-fs_fat.d
pupa_emu-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,pupa_emu-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,grub_emu-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-fs_ext2.d
-include grub_emu-fs_ext2.d
pupa_emu-normal_cmdline.o: normal/cmdline.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_cmdline.o: normal/cmdline.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_cmdline.d: normal/cmdline.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,cmdline\.o[ :]*,pupa_emu-normal_cmdline.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_cmdline.d: normal/cmdline.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,cmdline\.o[ :]*,grub_emu-normal_cmdline.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_cmdline.d
-include grub_emu-normal_cmdline.d
pupa_emu-normal_command.o: normal/command.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_command.o: normal/command.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_command.d: normal/command.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,command\.o[ :]*,pupa_emu-normal_command.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_command.d: normal/command.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,command\.o[ :]*,grub_emu-normal_command.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_command.d
-include grub_emu-normal_command.d
pupa_emu-normal_main.o: normal/main.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_main.o: normal/main.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_main.d: normal/main.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,pupa_emu-normal_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_main.d: normal/main.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,main\.o[ :]*,grub_emu-normal_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_main.d
-include grub_emu-normal_main.d
pupa_emu-normal_menu.o: normal/menu.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-normal_menu.o: normal/menu.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-normal_menu.d: normal/menu.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,menu\.o[ :]*,pupa_emu-normal_menu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-normal_menu.d: normal/menu.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,menu\.o[ :]*,grub_emu-normal_menu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-normal_menu.d
-include grub_emu-normal_menu.d
pupa_emu-util_console.o: util/console.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_console.o: util/console.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_console.d: util/console.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,console\.o[ :]*,pupa_emu-util_console.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_console.d: util/console.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,console\.o[ :]*,grub_emu-util_console.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_console.d
-include grub_emu-util_console.d
pupa_emu-util_pupa_emu.o: util/pupa-emu.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_grub_emu.o: util/grub-emu.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_pupa_emu.d: util/pupa-emu.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,pupa\-emu\.o[ :]*,pupa_emu-util_pupa_emu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_grub_emu.d: util/grub-emu.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,grub\-emu\.o[ :]*,grub_emu-util_grub_emu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_pupa_emu.d
-include grub_emu-util_grub_emu.d
pupa_emu-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_misc.o: util/misc.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupa_emu-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_misc.d: util/misc.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grub_emu-util_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_misc.d
-include grub_emu-util_misc.d
pupa_emu-util_i386_pc_getroot.o: util/i386/pc/getroot.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-util_i386_pc_getroot.o: util/i386/pc/getroot.c
$(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-util_i386_pc_getroot.d: util/i386/pc/getroot.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,getroot\.o[ :]*,pupa_emu-util_i386_pc_getroot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-util_i386_pc_getroot.d: util/i386/pc/getroot.c
set -e; $(BUILD_CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,getroot\.o[ :]*,grub_emu-util_i386_pc_getroot.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-util_i386_pc_getroot.d
-include grub_emu-util_i386_pc_getroot.d
pupa_emu-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -c -o $@ $<
grub_emu-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
pupa_emu-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupa_emu_CFLAGS) -M $< | sed 's,env\.o[ :]*,pupa_emu-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grub_emu-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,env\.o[ :]*,grub_emu-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupa_emu-kern_env.d
-include grub_emu-kern_env.d
pupa_emu_LDFLAGS = -lncurses
grub_emu_LDFLAGS = -lncurses
pupaof_SOURCES = boot/powerpc/ieee1275/cmain.c boot/powerpc/ieee1275/ieee1275.c \
grubof_SOURCES = boot/powerpc/ieee1275/cmain.c boot/powerpc/ieee1275/ieee1275.c \
boot/powerpc/ieee1275/crt0.S kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
kern/misc.c kern/mm.c kern/loader.c kern/rescue.c kern/term.c \
@ -238,232 +238,232 @@ pupaof_SOURCES = boot/powerpc/ieee1275/cmain.c boot/powerpc/ieee1275/ieee1275.c
normal/command.c normal/main.c normal/menu.c \
disk/powerpc/ieee1275/ofdisk.c disk/powerpc/ieee1275/partition.c \
kern/env.c normal/arg.c
CLEANFILES += pupaof pupaof-boot_powerpc_ieee1275_cmain.o pupaof-boot_powerpc_ieee1275_ieee1275.o pupaof-boot_powerpc_ieee1275_crt0.o pupaof-kern_main.o pupaof-kern_device.o pupaof-kern_disk.o pupaof-kern_dl.o pupaof-kern_file.o pupaof-kern_fs.o pupaof-kern_err.o pupaof-kern_misc.o pupaof-kern_mm.o pupaof-kern_loader.o pupaof-kern_rescue.o pupaof-kern_term.o pupaof-kern_powerpc_ieee1275_init.o pupaof-term_powerpc_ieee1275_ofconsole.o pupaof-kern_powerpc_ieee1275_openfw.o pupaof-fs_ext2.o pupaof-normal_cmdline.o pupaof-normal_command.o pupaof-normal_main.o pupaof-normal_menu.o pupaof-disk_powerpc_ieee1275_ofdisk.o pupaof-disk_powerpc_ieee1275_partition.o pupaof-kern_env.o pupaof-normal_arg.o
MOSTLYCLEANFILES += pupaof-boot_powerpc_ieee1275_cmain.d pupaof-boot_powerpc_ieee1275_ieee1275.d pupaof-boot_powerpc_ieee1275_crt0.d pupaof-kern_main.d pupaof-kern_device.d pupaof-kern_disk.d pupaof-kern_dl.d pupaof-kern_file.d pupaof-kern_fs.d pupaof-kern_err.d pupaof-kern_misc.d pupaof-kern_mm.d pupaof-kern_loader.d pupaof-kern_rescue.d pupaof-kern_term.d pupaof-kern_powerpc_ieee1275_init.d pupaof-term_powerpc_ieee1275_ofconsole.d pupaof-kern_powerpc_ieee1275_openfw.d pupaof-fs_ext2.d pupaof-normal_cmdline.d pupaof-normal_command.d pupaof-normal_main.d pupaof-normal_menu.d pupaof-disk_powerpc_ieee1275_ofdisk.d pupaof-disk_powerpc_ieee1275_partition.d pupaof-kern_env.d pupaof-normal_arg.d
CLEANFILES += grubof grubof-boot_powerpc_ieee1275_cmain.o grubof-boot_powerpc_ieee1275_ieee1275.o grubof-boot_powerpc_ieee1275_crt0.o grubof-kern_main.o grubof-kern_device.o grubof-kern_disk.o grubof-kern_dl.o grubof-kern_file.o grubof-kern_fs.o grubof-kern_err.o grubof-kern_misc.o grubof-kern_mm.o grubof-kern_loader.o grubof-kern_rescue.o grubof-kern_term.o grubof-kern_powerpc_ieee1275_init.o grubof-term_powerpc_ieee1275_ofconsole.o grubof-kern_powerpc_ieee1275_openfw.o grubof-fs_ext2.o grubof-normal_cmdline.o grubof-normal_command.o grubof-normal_main.o grubof-normal_menu.o grubof-disk_powerpc_ieee1275_ofdisk.o grubof-disk_powerpc_ieee1275_partition.o grubof-kern_env.o grubof-normal_arg.o
MOSTLYCLEANFILES += grubof-boot_powerpc_ieee1275_cmain.d grubof-boot_powerpc_ieee1275_ieee1275.d grubof-boot_powerpc_ieee1275_crt0.d grubof-kern_main.d grubof-kern_device.d grubof-kern_disk.d grubof-kern_dl.d grubof-kern_file.d grubof-kern_fs.d grubof-kern_err.d grubof-kern_misc.d grubof-kern_mm.d grubof-kern_loader.d grubof-kern_rescue.d grubof-kern_term.d grubof-kern_powerpc_ieee1275_init.d grubof-term_powerpc_ieee1275_ofconsole.d grubof-kern_powerpc_ieee1275_openfw.d grubof-fs_ext2.d grubof-normal_cmdline.d grubof-normal_command.d grubof-normal_main.d grubof-normal_menu.d grubof-disk_powerpc_ieee1275_ofdisk.d grubof-disk_powerpc_ieee1275_partition.d grubof-kern_env.d grubof-normal_arg.d
pupaof: pupaof-boot_powerpc_ieee1275_cmain.o pupaof-boot_powerpc_ieee1275_ieee1275.o pupaof-boot_powerpc_ieee1275_crt0.o pupaof-kern_main.o pupaof-kern_device.o pupaof-kern_disk.o pupaof-kern_dl.o pupaof-kern_file.o pupaof-kern_fs.o pupaof-kern_err.o pupaof-kern_misc.o pupaof-kern_mm.o pupaof-kern_loader.o pupaof-kern_rescue.o pupaof-kern_term.o pupaof-kern_powerpc_ieee1275_init.o pupaof-term_powerpc_ieee1275_ofconsole.o pupaof-kern_powerpc_ieee1275_openfw.o pupaof-fs_ext2.o pupaof-normal_cmdline.o pupaof-normal_command.o pupaof-normal_main.o pupaof-normal_menu.o pupaof-disk_powerpc_ieee1275_ofdisk.o pupaof-disk_powerpc_ieee1275_partition.o pupaof-kern_env.o pupaof-normal_arg.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(pupaof_LDFLAGS)
grubof: grubof-boot_powerpc_ieee1275_cmain.o grubof-boot_powerpc_ieee1275_ieee1275.o grubof-boot_powerpc_ieee1275_crt0.o grubof-kern_main.o grubof-kern_device.o grubof-kern_disk.o grubof-kern_dl.o grubof-kern_file.o grubof-kern_fs.o grubof-kern_err.o grubof-kern_misc.o grubof-kern_mm.o grubof-kern_loader.o grubof-kern_rescue.o grubof-kern_term.o grubof-kern_powerpc_ieee1275_init.o grubof-term_powerpc_ieee1275_ofconsole.o grubof-kern_powerpc_ieee1275_openfw.o grubof-fs_ext2.o grubof-normal_cmdline.o grubof-normal_command.o grubof-normal_main.o grubof-normal_menu.o grubof-disk_powerpc_ieee1275_ofdisk.o grubof-disk_powerpc_ieee1275_partition.o grubof-kern_env.o grubof-normal_arg.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grubof_LDFLAGS)
pupaof-boot_powerpc_ieee1275_cmain.o: boot/powerpc/ieee1275/cmain.c
$(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-boot_powerpc_ieee1275_cmain.o: boot/powerpc/ieee1275/cmain.c
$(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-boot_powerpc_ieee1275_cmain.d: boot/powerpc/ieee1275/cmain.c
set -e; $(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,cmain\.o[ :]*,pupaof-boot_powerpc_ieee1275_cmain.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-boot_powerpc_ieee1275_cmain.d: boot/powerpc/ieee1275/cmain.c
set -e; $(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,cmain\.o[ :]*,grubof-boot_powerpc_ieee1275_cmain.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-boot_powerpc_ieee1275_cmain.d
-include grubof-boot_powerpc_ieee1275_cmain.d
pupaof-boot_powerpc_ieee1275_ieee1275.o: boot/powerpc/ieee1275/ieee1275.c
$(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-boot_powerpc_ieee1275_ieee1275.o: boot/powerpc/ieee1275/ieee1275.c
$(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-boot_powerpc_ieee1275_ieee1275.d: boot/powerpc/ieee1275/ieee1275.c
set -e; $(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,ieee1275\.o[ :]*,pupaof-boot_powerpc_ieee1275_ieee1275.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-boot_powerpc_ieee1275_ieee1275.d: boot/powerpc/ieee1275/ieee1275.c
set -e; $(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,ieee1275\.o[ :]*,grubof-boot_powerpc_ieee1275_ieee1275.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-boot_powerpc_ieee1275_ieee1275.d
-include grubof-boot_powerpc_ieee1275_ieee1275.d
pupaof-boot_powerpc_ieee1275_crt0.o: boot/powerpc/ieee1275/crt0.S
$(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-boot_powerpc_ieee1275_crt0.o: boot/powerpc/ieee1275/crt0.S
$(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-boot_powerpc_ieee1275_crt0.d: boot/powerpc/ieee1275/crt0.S
set -e; $(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,crt0\.o[ :]*,pupaof-boot_powerpc_ieee1275_crt0.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-boot_powerpc_ieee1275_crt0.d: boot/powerpc/ieee1275/crt0.S
set -e; $(BUILD_CC) -Iboot/powerpc/ieee1275 -I$(srcdir)/boot/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,crt0\.o[ :]*,grubof-boot_powerpc_ieee1275_crt0.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-boot_powerpc_ieee1275_crt0.d
-include grubof-boot_powerpc_ieee1275_crt0.d
pupaof-kern_main.o: kern/main.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_main.o: kern/main.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_main.d: kern/main.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,main\.o[ :]*,pupaof-kern_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_main.d: kern/main.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,main\.o[ :]*,grubof-kern_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_main.d
-include grubof-kern_main.d
pupaof-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_device.o: kern/device.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,device\.o[ :]*,pupaof-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_device.d: kern/device.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,device\.o[ :]*,grubof-kern_device.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_device.d
-include grubof-kern_device.d
pupaof-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_disk.o: kern/disk.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,disk\.o[ :]*,pupaof-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_disk.d: kern/disk.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,disk\.o[ :]*,grubof-kern_disk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_disk.d
-include grubof-kern_disk.d
pupaof-kern_dl.o: kern/dl.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_dl.o: kern/dl.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_dl.d: kern/dl.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,dl\.o[ :]*,pupaof-kern_dl.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_dl.d: kern/dl.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,dl\.o[ :]*,grubof-kern_dl.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_dl.d
-include grubof-kern_dl.d
pupaof-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,file\.o[ :]*,pupaof-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_file.d: kern/file.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,file\.o[ :]*,grubof-kern_file.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_file.d
-include grubof-kern_file.d
pupaof-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_fs.o: kern/fs.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,fs\.o[ :]*,pupaof-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_fs.d: kern/fs.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,fs\.o[ :]*,grubof-kern_fs.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_fs.d
-include grubof-kern_fs.d
pupaof-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_err.o: kern/err.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,err\.o[ :]*,pupaof-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_err.d: kern/err.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,err\.o[ :]*,grubof-kern_err.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_err.d
-include grubof-kern_err.d
pupaof-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_misc.o: kern/misc.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,misc\.o[ :]*,pupaof-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_misc.d: kern/misc.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,misc\.o[ :]*,grubof-kern_misc.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_misc.d
-include grubof-kern_misc.d
pupaof-kern_mm.o: kern/mm.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_mm.o: kern/mm.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_mm.d: kern/mm.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,mm\.o[ :]*,pupaof-kern_mm.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_mm.d: kern/mm.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,mm\.o[ :]*,grubof-kern_mm.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_mm.d
-include grubof-kern_mm.d
pupaof-kern_loader.o: kern/loader.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_loader.o: kern/loader.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_loader.d: kern/loader.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,loader\.o[ :]*,pupaof-kern_loader.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_loader.d: kern/loader.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,loader\.o[ :]*,grubof-kern_loader.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_loader.d
-include grubof-kern_loader.d
pupaof-kern_rescue.o: kern/rescue.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_rescue.o: kern/rescue.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_rescue.d: kern/rescue.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,rescue\.o[ :]*,pupaof-kern_rescue.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_rescue.d: kern/rescue.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,rescue\.o[ :]*,grubof-kern_rescue.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_rescue.d
-include grubof-kern_rescue.d
pupaof-kern_term.o: kern/term.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_term.o: kern/term.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_term.d: kern/term.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,term\.o[ :]*,pupaof-kern_term.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_term.d: kern/term.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,term\.o[ :]*,grubof-kern_term.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_term.d
-include grubof-kern_term.d
pupaof-kern_powerpc_ieee1275_init.o: kern/powerpc/ieee1275/init.c
$(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_powerpc_ieee1275_init.o: kern/powerpc/ieee1275/init.c
$(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_powerpc_ieee1275_init.d: kern/powerpc/ieee1275/init.c
set -e; $(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,init\.o[ :]*,pupaof-kern_powerpc_ieee1275_init.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_powerpc_ieee1275_init.d: kern/powerpc/ieee1275/init.c
set -e; $(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,init\.o[ :]*,grubof-kern_powerpc_ieee1275_init.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_powerpc_ieee1275_init.d
-include grubof-kern_powerpc_ieee1275_init.d
pupaof-term_powerpc_ieee1275_ofconsole.o: term/powerpc/ieee1275/ofconsole.c
$(BUILD_CC) -Iterm/powerpc/ieee1275 -I$(srcdir)/term/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-term_powerpc_ieee1275_ofconsole.o: term/powerpc/ieee1275/ofconsole.c
$(BUILD_CC) -Iterm/powerpc/ieee1275 -I$(srcdir)/term/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-term_powerpc_ieee1275_ofconsole.d: term/powerpc/ieee1275/ofconsole.c
set -e; $(BUILD_CC) -Iterm/powerpc/ieee1275 -I$(srcdir)/term/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,ofconsole\.o[ :]*,pupaof-term_powerpc_ieee1275_ofconsole.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-term_powerpc_ieee1275_ofconsole.d: term/powerpc/ieee1275/ofconsole.c
set -e; $(BUILD_CC) -Iterm/powerpc/ieee1275 -I$(srcdir)/term/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,ofconsole\.o[ :]*,grubof-term_powerpc_ieee1275_ofconsole.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-term_powerpc_ieee1275_ofconsole.d
-include grubof-term_powerpc_ieee1275_ofconsole.d
pupaof-kern_powerpc_ieee1275_openfw.o: kern/powerpc/ieee1275/openfw.c
$(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_powerpc_ieee1275_openfw.o: kern/powerpc/ieee1275/openfw.c
$(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_powerpc_ieee1275_openfw.d: kern/powerpc/ieee1275/openfw.c
set -e; $(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,openfw\.o[ :]*,pupaof-kern_powerpc_ieee1275_openfw.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_powerpc_ieee1275_openfw.d: kern/powerpc/ieee1275/openfw.c
set -e; $(BUILD_CC) -Ikern/powerpc/ieee1275 -I$(srcdir)/kern/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,openfw\.o[ :]*,grubof-kern_powerpc_ieee1275_openfw.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_powerpc_ieee1275_openfw.d
-include grubof-kern_powerpc_ieee1275_openfw.d
pupaof-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-fs_ext2.o: fs/ext2.c
$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,pupaof-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-fs_ext2.d: fs/ext2.c
set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,ext2\.o[ :]*,grubof-fs_ext2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-fs_ext2.d
-include grubof-fs_ext2.d
pupaof-normal_cmdline.o: normal/cmdline.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-normal_cmdline.o: normal/cmdline.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-normal_cmdline.d: normal/cmdline.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,cmdline\.o[ :]*,pupaof-normal_cmdline.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-normal_cmdline.d: normal/cmdline.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,cmdline\.o[ :]*,grubof-normal_cmdline.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-normal_cmdline.d
-include grubof-normal_cmdline.d
pupaof-normal_command.o: normal/command.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-normal_command.o: normal/command.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-normal_command.d: normal/command.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,command\.o[ :]*,pupaof-normal_command.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-normal_command.d: normal/command.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,command\.o[ :]*,grubof-normal_command.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-normal_command.d
-include grubof-normal_command.d
pupaof-normal_main.o: normal/main.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-normal_main.o: normal/main.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-normal_main.d: normal/main.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,main\.o[ :]*,pupaof-normal_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-normal_main.d: normal/main.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,main\.o[ :]*,grubof-normal_main.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-normal_main.d
-include grubof-normal_main.d
pupaof-normal_menu.o: normal/menu.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-normal_menu.o: normal/menu.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-normal_menu.d: normal/menu.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,menu\.o[ :]*,pupaof-normal_menu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-normal_menu.d: normal/menu.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,menu\.o[ :]*,grubof-normal_menu.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-normal_menu.d
-include grubof-normal_menu.d
pupaof-disk_powerpc_ieee1275_ofdisk.o: disk/powerpc/ieee1275/ofdisk.c
$(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-disk_powerpc_ieee1275_ofdisk.o: disk/powerpc/ieee1275/ofdisk.c
$(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-disk_powerpc_ieee1275_ofdisk.d: disk/powerpc/ieee1275/ofdisk.c
set -e; $(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,ofdisk\.o[ :]*,pupaof-disk_powerpc_ieee1275_ofdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-disk_powerpc_ieee1275_ofdisk.d: disk/powerpc/ieee1275/ofdisk.c
set -e; $(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,ofdisk\.o[ :]*,grubof-disk_powerpc_ieee1275_ofdisk.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-disk_powerpc_ieee1275_ofdisk.d
-include grubof-disk_powerpc_ieee1275_ofdisk.d
pupaof-disk_powerpc_ieee1275_partition.o: disk/powerpc/ieee1275/partition.c
$(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-disk_powerpc_ieee1275_partition.o: disk/powerpc/ieee1275/partition.c
$(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-disk_powerpc_ieee1275_partition.d: disk/powerpc/ieee1275/partition.c
set -e; $(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,partition\.o[ :]*,pupaof-disk_powerpc_ieee1275_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-disk_powerpc_ieee1275_partition.d: disk/powerpc/ieee1275/partition.c
set -e; $(BUILD_CC) -Idisk/powerpc/ieee1275 -I$(srcdir)/disk/powerpc/ieee1275 $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,partition\.o[ :]*,grubof-disk_powerpc_ieee1275_partition.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-disk_powerpc_ieee1275_partition.d
-include grubof-disk_powerpc_ieee1275_partition.d
pupaof-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-kern_env.o: kern/env.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,env\.o[ :]*,pupaof-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-kern_env.d: kern/env.c
set -e; $(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,env\.o[ :]*,grubof-kern_env.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-kern_env.d
-include grubof-kern_env.d
pupaof-normal_arg.o: normal/arg.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -c -o $@ $<
grubof-normal_arg.o: normal/arg.c
$(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -c -o $@ $<
pupaof-normal_arg.d: normal/arg.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(pupaof_CFLAGS) -M $< | sed 's,arg\.o[ :]*,pupaof-normal_arg.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
grubof-normal_arg.d: normal/arg.c
set -e; $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grubof_CFLAGS) -M $< | sed 's,arg\.o[ :]*,grubof-normal_arg.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include pupaof-normal_arg.d
-include grubof-normal_arg.d
pupaof_HEADERS = pupa/powerpc/ieee1275/ieee1275.h
pupaof_CFLAGS = $(COMMON_CFLAGS)
pupaof_ASFLAGS = $(COMMON_ASFLAGS)
pupaof_LDFLAGS = -Wl,-Ttext,0x200000,-Bstatic
grubof_HEADERS = grub/powerpc/ieee1275/ieee1275.h
grubof_CFLAGS = $(COMMON_CFLAGS)
grubof_ASFLAGS = $(COMMON_ASFLAGS)
grubof_LDFLAGS = -Wl,-Ttext,0x200000,-Bstatic
# For genmoddep.
genmoddep_SOURCES = util/genmoddep.c
@ -474,10 +474,10 @@ genmoddep: genmoddep-util_genmoddep.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(genmoddep_LDFLAGS)
genmoddep-util_genmoddep.o: util/genmoddep.c
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(genmoddep_CFLAGS) -c -o $@ $<
$(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(genmoddep_CFLAGS) -c -o $@ $<
genmoddep-util_genmoddep.d: util/genmoddep.c
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(genmoddep_CFLAGS) -M $< | sed 's,genmoddep\.o[ :]*,genmoddep-util_genmoddep.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
set -e; $(BUILD_CC) -Iutil -I$(srcdir)/util $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(genmoddep_CFLAGS) -M $< | sed 's,genmoddep\.o[ :]*,genmoddep-util_genmoddep.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include genmoddep-util_genmoddep.d

View file

@ -9,29 +9,29 @@ COMMON_CFLAGS = -fno-builtin -D__ASSEMBLY__
MOSTLYCLEANFILES += symlist.c kernel_syms.lst
DEFSYMFILES += kernel_syms.lst
symlist.c: $(addprefix include/pupa/,$(kernel_img_HEADERS)) gensymlist.sh
symlist.c: $(addprefix include/grub/,$(kernel_img_HEADERS)) gensymlist.sh
sh $(srcdir)/gensymlist.sh $(filter %.h,$^) > $@
kernel_syms.lst: $(addprefix include/pupa/,$(kernel_img_HEADERS)) genkernsyms.sh
kernel_syms.lst: $(addprefix include/grub/,$(kernel_img_HEADERS)) genkernsyms.sh
sh $(srcdir)/genkernsyms.sh $(filter %h,$^) > $@
# Utilities.
sbin_UTILITIES = pupaof
bin_UTILITIES = pupa-emu
sbin_UTILITIES = grubof
bin_UTILITIES = grub-emu
noinst_UTILITIES = genmoddep
# For pupa-emu
pupa_emu_SOURCES = kern/main.c kern/device.c \
# For grub-emu
grub_emu_SOURCES = kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
kern/misc.c kern/loader.c kern/rescue.c kern/term.c \
disk/powerpc/ieee1275/partition.c \
util/i386/pc/biosdisk.c fs/fat.c fs/ext2.c \
normal/cmdline.c normal/command.c normal/main.c normal/menu.c \
util/console.c util/pupa-emu.c util/misc.c util/i386/pc/getroot.c \
util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c \
kern/env.c
pupa_emu_LDFLAGS = -lncurses
grub_emu_LDFLAGS = -lncurses
pupaof_SOURCES = boot/powerpc/ieee1275/cmain.c boot/powerpc/ieee1275/ieee1275.c \
grubof_SOURCES = boot/powerpc/ieee1275/cmain.c boot/powerpc/ieee1275/ieee1275.c \
boot/powerpc/ieee1275/crt0.S kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
kern/misc.c kern/mm.c kern/loader.c kern/rescue.c kern/term.c \
@ -40,10 +40,10 @@ pupaof_SOURCES = boot/powerpc/ieee1275/cmain.c boot/powerpc/ieee1275/ieee1275.c
normal/command.c normal/main.c normal/menu.c \
disk/powerpc/ieee1275/ofdisk.c disk/powerpc/ieee1275/partition.c \
kern/env.c normal/arg.c
pupaof_HEADERS = pupa/powerpc/ieee1275/ieee1275.h
pupaof_CFLAGS = $(COMMON_CFLAGS)
pupaof_ASFLAGS = $(COMMON_ASFLAGS)
pupaof_LDFLAGS = -Wl,-Ttext,0x200000,-Bstatic
grubof_HEADERS = grub/powerpc/ieee1275/ieee1275.h
grubof_CFLAGS = $(COMMON_CFLAGS)
grubof_ASFLAGS = $(COMMON_ASFLAGS)
grubof_LDFLAGS = -Wl,-Ttext,0x200000,-Bstatic
# For genmoddep.
genmoddep_SOURCES = util/genmoddep.c

182
configure vendored
View file

@ -272,7 +272,7 @@ PACKAGE_VERSION='1.90'
PACKAGE_STRING='GRUB 1.90'
PACKAGE_BUGREPORT='bug-grub@gnu.org'
ac_unique_file="include/pupa/dl.h"
ac_unique_file="include/grub/dl.h"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@ -2693,7 +2693,7 @@ fi
echo "$as_me:$LINENO: checking if C symbols get an underscore after compilation" >&5
echo $ECHO_N "checking if C symbols get an underscore after compilation... $ECHO_C" >&6
if test "${pupa_cv_asm_uscore+set}" = set; then
if test "${grub_cv_asm_uscore+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.c <<\EOF
@ -2719,31 +2719,31 @@ echo "$as_me: error: ${CC-cc} failed to produce assembly code" >&2;}
fi
if grep _func conftest.s >/dev/null 2>&1; then
pupa_cv_asm_uscore=yes
grub_cv_asm_uscore=yes
else
pupa_cv_asm_uscore=no
grub_cv_asm_uscore=no
fi
rm -f conftest*
fi
if test "x$pupa_cv_asm_uscore" = xyes; then
if test "x$grub_cv_asm_uscore" = xyes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_ASM_USCORE $pupa_cv_asm_uscore
#define HAVE_ASM_USCORE $grub_cv_asm_uscore
_ACEOF
fi
echo "$as_me:$LINENO: result: $pupa_cv_asm_uscore" >&5
echo "${ECHO_T}$pupa_cv_asm_uscore" >&6
echo "$as_me:$LINENO: result: $grub_cv_asm_uscore" >&5
echo "${ECHO_T}$grub_cv_asm_uscore" >&6
if test "x$host_cpu" = xi386; then
echo "$as_me:$LINENO: checking if start is defined by the compiler" >&5
echo $ECHO_N "checking if start is defined by the compiler... $ECHO_C" >&6
if test "${pupa_cv_check_start_symbol+set}" = set; then
if test "${grub_cv_check_start_symbol+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -2774,23 +2774,23 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_check_start_symbol=yes
grub_cv_check_start_symbol=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pupa_cv_check_start_symbol=no
grub_cv_check_start_symbol=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $pupa_cv_check_start_symbol" >&5
echo "${ECHO_T}$pupa_cv_check_start_symbol" >&6
echo "$as_me:$LINENO: result: $grub_cv_check_start_symbol" >&5
echo "${ECHO_T}$grub_cv_check_start_symbol" >&6
echo "$as_me:$LINENO: checking if _start is defined by the compiler" >&5
echo $ECHO_N "checking if _start is defined by the compiler... $ECHO_C" >&6
if test "${pupa_cv_check_uscore_start_symbol+set}" = set; then
if test "${grub_cv_check_uscore_start_symbol+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -2821,29 +2821,29 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_check_uscore_start_symbol=yes
grub_cv_check_uscore_start_symbol=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pupa_cv_check_uscore_start_symbol=no
grub_cv_check_uscore_start_symbol=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $pupa_cv_check_uscore_start_symbol" >&5
echo "${ECHO_T}$pupa_cv_check_uscore_start_symbol" >&6
echo "$as_me:$LINENO: result: $grub_cv_check_uscore_start_symbol" >&5
echo "${ECHO_T}$grub_cv_check_uscore_start_symbol" >&6
if test "x$pupa_cv_check_start_symbol" = xyes; then
if test "x$grub_cv_check_start_symbol" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define START_SYMBOL start
_ACEOF
elif test "x$pupa_cv_check_uscore_start_symbol" = xyes; then
elif test "x$grub_cv_check_uscore_start_symbol" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define START_SYMBOL _start
_ACEOF
@ -2857,7 +2857,7 @@ fi
echo "$as_me:$LINENO: checking if __bss_start is defined by the compiler" >&5
echo $ECHO_N "checking if __bss_start is defined by the compiler... $ECHO_C" >&6
if test "${pupa_cv_check_uscore_uscore_bss_start_symbol+set}" = set; then
if test "${grub_cv_check_uscore_uscore_bss_start_symbol+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -2888,23 +2888,23 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_check_uscore_uscore_bss_start_symbol=yes
grub_cv_check_uscore_uscore_bss_start_symbol=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pupa_cv_check_uscore_uscore_bss_start_symbol=no
grub_cv_check_uscore_uscore_bss_start_symbol=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $pupa_cv_check_uscore_uscore_bss_start_symbol" >&5
echo "${ECHO_T}$pupa_cv_check_uscore_uscore_bss_start_symbol" >&6
echo "$as_me:$LINENO: result: $grub_cv_check_uscore_uscore_bss_start_symbol" >&5
echo "${ECHO_T}$grub_cv_check_uscore_uscore_bss_start_symbol" >&6
echo "$as_me:$LINENO: checking if edata is defined by the compiler" >&5
echo $ECHO_N "checking if edata is defined by the compiler... $ECHO_C" >&6
if test "${pupa_cv_check_edata_symbol+set}" = set; then
if test "${grub_cv_check_edata_symbol+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -2935,23 +2935,23 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_check_edata_symbol=yes
grub_cv_check_edata_symbol=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pupa_cv_check_edata_symbol=no
grub_cv_check_edata_symbol=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $pupa_cv_check_edata_symbol" >&5
echo "${ECHO_T}$pupa_cv_check_edata_symbol" >&6
echo "$as_me:$LINENO: result: $grub_cv_check_edata_symbol" >&5
echo "${ECHO_T}$grub_cv_check_edata_symbol" >&6
echo "$as_me:$LINENO: checking if _edata is defined by the compiler" >&5
echo $ECHO_N "checking if _edata is defined by the compiler... $ECHO_C" >&6
if test "${pupa_cv_check_uscore_edata_symbol+set}" = set; then
if test "${grub_cv_check_uscore_edata_symbol+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -2982,34 +2982,34 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_check_uscore_edata_symbol=yes
grub_cv_check_uscore_edata_symbol=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pupa_cv_check_uscore_edata_symbol=no
grub_cv_check_uscore_edata_symbol=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $pupa_cv_check_uscore_edata_symbol" >&5
echo "${ECHO_T}$pupa_cv_check_uscore_edata_symbol" >&6
echo "$as_me:$LINENO: result: $grub_cv_check_uscore_edata_symbol" >&5
echo "${ECHO_T}$grub_cv_check_uscore_edata_symbol" >&6
if test "x$pupa_cv_check_uscore_uscore_bss_start_symbol" = xyes; then
if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define BSS_START_SYMBOL __bss_start
_ACEOF
elif test "x$pupa_cv_check_edata_symbol" = xyes; then
elif test "x$grub_cv_check_edata_symbol" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define BSS_START_SYMBOL edata
_ACEOF
elif test "x$pupa_cv_check_uscore_edata_symbol" = xyes; then
elif test "x$grub_cv_check_uscore_edata_symbol" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define BSS_START_SYMBOL _edata
_ACEOF
@ -3023,7 +3023,7 @@ fi
echo "$as_me:$LINENO: checking if end is defined by the compiler" >&5
echo $ECHO_N "checking if end is defined by the compiler... $ECHO_C" >&6
if test "${pupa_cv_check_end_symbol+set}" = set; then
if test "${grub_cv_check_end_symbol+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -3054,23 +3054,23 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_check_end_symbol=yes
grub_cv_check_end_symbol=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pupa_cv_check_end_symbol=no
grub_cv_check_end_symbol=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $pupa_cv_check_end_symbol" >&5
echo "${ECHO_T}$pupa_cv_check_end_symbol" >&6
echo "$as_me:$LINENO: result: $grub_cv_check_end_symbol" >&5
echo "${ECHO_T}$grub_cv_check_end_symbol" >&6
echo "$as_me:$LINENO: checking if _end is defined by the compiler" >&5
echo $ECHO_N "checking if _end is defined by the compiler... $ECHO_C" >&6
if test "${pupa_cv_check_uscore_end_symbol+set}" = set; then
if test "${grub_cv_check_uscore_end_symbol+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -3101,29 +3101,29 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_check_uscore_end_symbol=yes
grub_cv_check_uscore_end_symbol=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pupa_cv_check_uscore_end_symbol=no
grub_cv_check_uscore_end_symbol=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $pupa_cv_check_uscore_end_symbol" >&5
echo "${ECHO_T}$pupa_cv_check_uscore_end_symbol" >&6
echo "$as_me:$LINENO: result: $grub_cv_check_uscore_end_symbol" >&5
echo "${ECHO_T}$grub_cv_check_uscore_end_symbol" >&6
if test "x$pupa_cv_check_end_symbol" = xyes; then
if test "x$grub_cv_check_end_symbol" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define END_SYMBOL end
_ACEOF
elif test "x$pupa_cv_check_uscore_end_symbol" = xyes; then
elif test "x$grub_cv_check_uscore_end_symbol" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define END_SYMBOL _end
_ACEOF
@ -3140,7 +3140,7 @@ if test "x$host_cpu" = xi386; then
echo "$as_me:$LINENO: checking whether addr32 must be in the same line as the instruction" >&5
echo $ECHO_N "checking whether addr32 must be in the same line as the instruction... $ECHO_C" >&6
if test "${pupa_cv_i386_asm_prefix_requirement+set}" = set; then
if test "${grub_cv_i386_asm_prefix_requirement+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.s <<\EOF
@ -3154,41 +3154,41 @@ if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } && test -s conftest.o; then
pupa_cv_i386_asm_prefix_requirement=yes
grub_cv_i386_asm_prefix_requirement=yes
else
pupa_cv_i386_asm_prefix_requirement=no
grub_cv_i386_asm_prefix_requirement=no
fi
rm -f conftest*
fi
if test "x$pupa_cv_i386_asm_prefix_requirement" = xyes; then
pupa_tmp_addr32="addr32"
pupa_tmp_data32="data32"
if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then
grub_tmp_addr32="addr32"
grub_tmp_data32="data32"
else
pupa_tmp_addr32="addr32;"
pupa_tmp_data32="data32;"
grub_tmp_addr32="addr32;"
grub_tmp_data32="data32;"
fi
cat >>confdefs.h <<_ACEOF
#define ADDR32 $pupa_tmp_addr32
#define ADDR32 $grub_tmp_addr32
_ACEOF
cat >>confdefs.h <<_ACEOF
#define DATA32 $pupa_tmp_data32
#define DATA32 $grub_tmp_data32
_ACEOF
echo "$as_me:$LINENO: result: $pupa_cv_i386_asm_prefix_requirement" >&5
echo "${ECHO_T}$pupa_cv_i386_asm_prefix_requirement" >&6
echo "$as_me:$LINENO: result: $grub_cv_i386_asm_prefix_requirement" >&5
echo "${ECHO_T}$grub_cv_i386_asm_prefix_requirement" >&6
echo "$as_me:$LINENO: checking for .code16 addr32 assembler support" >&5
echo $ECHO_N "checking for .code16 addr32 assembler support... $ECHO_C" >&6
if test "${pupa_cv_i386_asm_addr32+set}" = set; then
if test "${grub_cv_i386_asm_addr32+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.s.in <<\EOF
@ -3196,7 +3196,7 @@ else
l1: @ADDR32@ movb %al, l1
EOF
if test "x$pupa_cv_i386_asm_prefix_requirement" = xyes; then
if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then
sed -e s/@ADDR32@/addr32/ < conftest.s.in > conftest.s
else
sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s
@ -3208,21 +3208,21 @@ if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } && test -s conftest.o; then
pupa_cv_i386_asm_addr32=yes
grub_cv_i386_asm_addr32=yes
else
pupa_cv_i386_asm_addr32=no
grub_cv_i386_asm_addr32=no
fi
rm -f conftest*
fi
echo "$as_me:$LINENO: result: $pupa_cv_i386_asm_addr32" >&5
echo "${ECHO_T}$pupa_cv_i386_asm_addr32" >&6
echo "$as_me:$LINENO: result: $grub_cv_i386_asm_addr32" >&5
echo "${ECHO_T}$grub_cv_i386_asm_addr32" >&6
echo "$as_me:$LINENO: checking whether an absolute indirect call/jump must not be prefixed with an asterisk" >&5
echo $ECHO_N "checking whether an absolute indirect call/jump must not be prefixed with an asterisk... $ECHO_C" >&6
if test "${pupa_cv_i386_asm_absolute_without_asterisk+set}" = set; then
if test "${grub_cv_i386_asm_absolute_without_asterisk+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.s <<\EOF
@ -3238,16 +3238,16 @@ if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } && test -s conftest.o; then
pupa_cv_i386_asm_absolute_without_asterisk=no
grub_cv_i386_asm_absolute_without_asterisk=no
else
pupa_cv_i386_asm_absolute_without_asterisk=yes
grub_cv_i386_asm_absolute_without_asterisk=yes
fi
rm -f conftest*
fi
if test "x$pupa_cv_i386_asm_absolute_without_asterisk" = xyes; then
if test "x$grub_cv_i386_asm_absolute_without_asterisk" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define ABSOLUTE_WITHOUT_ASTERISK 1
@ -3255,12 +3255,12 @@ _ACEOF
fi
echo "$as_me:$LINENO: result: $pupa_cv_i386_asm_absolute_without_asterisk" >&5
echo "${ECHO_T}$pupa_cv_i386_asm_absolute_without_asterisk" >&6
echo "$as_me:$LINENO: result: $grub_cv_i386_asm_absolute_without_asterisk" >&5
echo "${ECHO_T}$grub_cv_i386_asm_absolute_without_asterisk" >&6
echo "$as_me:$LINENO: checking if GCC has the regparm=3 bug" >&5
echo $ECHO_N "checking if GCC has the regparm=3 bug... $ECHO_C" >&6
if test "${pupa_cv_i386_check_nested_functions+set}" = set; then
if test "${grub_cv_i386_check_nested_functions+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "$cross_compiling" = yes; then
@ -3305,24 +3305,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
pupa_cv_i386_check_nested_functions=yes
grub_cv_i386_check_nested_functions=yes
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
pupa_cv_i386_check_nested_functions=no
grub_cv_i386_check_nested_functions=no
fi
rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
echo "$as_me:$LINENO: result: $pupa_cv_i386_check_nested_functions" >&5
echo "${ECHO_T}$pupa_cv_i386_check_nested_functions" >&6
echo "$as_me:$LINENO: result: $grub_cv_i386_check_nested_functions" >&5
echo "${ECHO_T}$grub_cv_i386_check_nested_functions" >&6
if test "x$pupa_cv_i386_check_nested_functions" = xyes; then
if test "x$grub_cv_i386_check_nested_functions" = xyes; then
cat >>confdefs.h <<\_ACEOF
#define NESTED_FUNC_ATTR __attribute__ ((__regparm__ (2)))
@ -3531,7 +3531,7 @@ fi
echo "$as_me:$LINENO: checking whether ${OBJCOPY} works for absolute addresses" >&5
echo $ECHO_N "checking whether ${OBJCOPY} works for absolute addresses... $ECHO_C" >&6
if test "${pupa_cv_prog_objcopy_absolute+set}" = set; then
if test "${grub_cv_prog_objcopy_absolute+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.c <<\EOF
@ -3552,7 +3552,7 @@ else
echo "$as_me: error: ${CC-cc} cannot compile C source code" >&2;}
{ (exit 1); exit 1; }; }
fi
pupa_cv_prog_objcopy_absolute=yes
grub_cv_prog_objcopy_absolute=yes
for link_addr in 2000 8000 7C00; do
if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
@ -3584,19 +3584,19 @@ echo "$as_me: error: ${OBJCOPY-objcopy} cannot create binary files" >&2;}
(exit $ac_status); }; }; then
mv -f conftest conftest.old
else
pupa_cv_prog_objcopy_absolute=no
grub_cv_prog_objcopy_absolute=no
break
fi
done
rm -f conftest*
fi
echo "$as_me:$LINENO: result: $pupa_cv_prog_objcopy_absolute" >&5
echo "${ECHO_T}$pupa_cv_prog_objcopy_absolute" >&6
echo "$as_me:$LINENO: result: $grub_cv_prog_objcopy_absolute" >&5
echo "${ECHO_T}$grub_cv_prog_objcopy_absolute" >&6
if test "x$pupa_cv_prog_objcopy_absolute" = xno; then
{ { echo "$as_me:$LINENO: error: PUPA requires a working absolute objcopy; upgrade your binutils" >&5
echo "$as_me: error: PUPA requires a working absolute objcopy; upgrade your binutils" >&2;}
if test "x$grub_cv_prog_objcopy_absolute" = xno; then
{ { echo "$as_me:$LINENO: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&5
echo "$as_me: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&2;}
{ (exit 1); exit 1; }; }
fi
@ -5495,7 +5495,7 @@ CFLAGS="$tmp_CFLAGS"
CPPFLAGS="$tmp_CPPFLAGS"
# Output files.
ac_config_links="$ac_config_links include/pupa/cpu:include/pupa/$host_cpu include/pupa/machine:include/pupa/$host_cpu/$host_vendor"
ac_config_links="$ac_config_links include/grub/cpu:include/grub/$host_cpu include/grub/machine:include/grub/$host_cpu/$host_vendor"
ac_config_files="$ac_config_files Makefile"
@ -6030,8 +6030,8 @@ do
# Handling of arguments.
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"stamp-h" ) CONFIG_FILES="$CONFIG_FILES stamp-h" ;;
"include/pupa/cpu" ) CONFIG_LINKS="$CONFIG_LINKS include/pupa/cpu:include/pupa/$host_cpu" ;;
"include/pupa/machine" ) CONFIG_LINKS="$CONFIG_LINKS include/pupa/machine:include/pupa/$host_cpu/$host_vendor" ;;
"include/grub/cpu" ) CONFIG_LINKS="$CONFIG_LINKS include/grub/cpu:include/grub/$host_cpu" ;;
"include/grub/machine" ) CONFIG_LINKS="$CONFIG_LINKS include/grub/machine:include/grub/$host_cpu/$host_vendor" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}

View file

@ -13,7 +13,7 @@
AC_INIT(GRUB, 1.90, [bug-grub@gnu.org])
AC_PREREQ(2.53)
AC_CONFIG_SRCDIR([include/pupa/dl.h])
AC_CONFIG_SRCDIR([include/grub/dl.h])
AC_CONFIG_HEADER([config.h])
# Checks for build and host systems.
@ -81,18 +81,18 @@ fi
AC_SUBST(CFLAGS)
# Defined in aclocal.m4.
pupa_ASM_USCORE
grub_ASM_USCORE
if test "x$host_cpu" = xi386; then
pupa_CHECK_START_SYMBOL
pupa_CHECK_BSS_START_SYMBOL
pupa_CHECK_END_SYMBOL
grub_CHECK_START_SYMBOL
grub_CHECK_BSS_START_SYMBOL
grub_CHECK_END_SYMBOL
fi
if test "x$host_cpu" = xi386; then
pupa_I386_ASM_PREFIX_REQUIREMENT
pupa_I386_ASM_ADDR32
pupa_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK
pupa_I386_CHECK_REGPARM_BUG
grub_I386_ASM_PREFIX_REQUIREMENT
grub_I386_ASM_ADDR32
grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK
grub_I386_CHECK_REGPARM_BUG
else
AC_DEFINE([NESTED_FUNC_ATTR], [],[Catch gcc bug])
fi
@ -100,7 +100,7 @@ fi
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_CHECK_TOOL(OBJCOPY, objcopy)
pupa_PROG_OBJCOPY_ABSOLUTE
grub_PROG_OBJCOPY_ABSOLUTE
AC_CHECK_TOOL(STRIP, strip)
AC_CHECK_TOOL(NM, nm)
AC_CHECK_TOOL(LD, ld)
@ -143,8 +143,8 @@ CFLAGS="$tmp_CFLAGS"
CPPFLAGS="$tmp_CPPFLAGS"
# Output files.
AC_CONFIG_LINKS([include/pupa/cpu:include/pupa/$host_cpu
include/pupa/machine:include/pupa/$host_cpu/$host_vendor])
AC_CONFIG_LINKS([include/grub/cpu:include/grub/$host_cpu
include/grub/machine:include/grub/$host_cpu/$host_vendor])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
AC_OUTPUT

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,69 +13,69 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/machine/biosdisk.h>
#include <pupa/machine/memory.h>
#include <pupa/disk.h>
#include <pupa/mm.h>
#include <pupa/types.h>
#include <pupa/misc.h>
#include <pupa/err.h>
#include <pupa/term.h>
#include <grub/machine/biosdisk.h>
#include <grub/machine/memory.h>
#include <grub/disk.h>
#include <grub/mm.h>
#include <grub/types.h>
#include <grub/misc.h>
#include <grub/err.h>
#include <grub/term.h>
/* Drive Parameters. */
struct pupa_biosdisk_drp
struct grub_biosdisk_drp
{
pupa_uint16_t size;
pupa_uint16_t flags;
pupa_uint32_t cylinders;
pupa_uint32_t heads;
pupa_uint32_t sectors;
pupa_uint64_t total_sectors;
pupa_uint16_t bytes_per_sector;
grub_uint16_t size;
grub_uint16_t flags;
grub_uint32_t cylinders;
grub_uint32_t heads;
grub_uint32_t sectors;
grub_uint64_t total_sectors;
grub_uint16_t bytes_per_sector;
/* ver 2.0 or higher */
pupa_uint32_t EDD_configuration_parameters;
grub_uint32_t EDD_configuration_parameters;
/* ver 3.0 or higher */
pupa_uint16_t signature_dpi;
pupa_uint8_t length_dpi;
pupa_uint8_t reserved[3];
pupa_uint8_t name_of_host_bus[4];
pupa_uint8_t name_of_interface_type[8];
pupa_uint8_t interface_path[8];
pupa_uint8_t device_path[8];
pupa_uint8_t reserved2;
pupa_uint8_t checksum;
grub_uint16_t signature_dpi;
grub_uint8_t length_dpi;
grub_uint8_t reserved[3];
grub_uint8_t name_of_host_bus[4];
grub_uint8_t name_of_interface_type[8];
grub_uint8_t interface_path[8];
grub_uint8_t device_path[8];
grub_uint8_t reserved2;
grub_uint8_t checksum;
/* XXX: This is necessary, because the BIOS of Thinkpad X20
writes a garbage to the tail of drive parameters,
regardless of a size specified in a caller. */
pupa_uint8_t dummy[16];
grub_uint8_t dummy[16];
} __attribute__ ((packed));
/* Disk Address Packet. */
struct pupa_biosdisk_dap
struct grub_biosdisk_dap
{
pupa_uint8_t length;
pupa_uint8_t reserved;
pupa_uint16_t blocks;
pupa_uint32_t buffer;
pupa_uint64_t block;
grub_uint8_t length;
grub_uint8_t reserved;
grub_uint16_t blocks;
grub_uint32_t buffer;
grub_uint64_t block;
} __attribute__ ((packed));
static int
pupa_biosdisk_get_drive (const char *name)
grub_biosdisk_get_drive (const char *name)
{
unsigned long drive;
if ((name[0] != 'f' && name[0] != 'h') || name[1] != 'd')
goto fail;
drive = pupa_strtoul (name + 2, 0, 10);
if (pupa_errno != PUPA_ERR_NONE)
drive = grub_strtoul (name + 2, 0, 10);
if (grub_errno != GRUB_ERR_NONE)
goto fail;
if (name[0] == 'h')
@ -84,62 +84,62 @@ pupa_biosdisk_get_drive (const char *name)
return (int) drive ;
fail:
pupa_error (PUPA_ERR_UNKNOWN_DEVICE, "not a biosdisk");
grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not a biosdisk");
return -1;
}
static int
pupa_biosdisk_call_hook (int (*hook) (const char *name), int drive)
grub_biosdisk_call_hook (int (*hook) (const char *name), int drive)
{
char name[10];
pupa_sprintf (name, (drive & 0x80) ? "hd%d" : "fd%d", drive & (~0x80));
grub_sprintf (name, (drive & 0x80) ? "hd%d" : "fd%d", drive & (~0x80));
return hook (name);
}
static int
pupa_biosdisk_iterate (int (*hook) (const char *name))
grub_biosdisk_iterate (int (*hook) (const char *name))
{
int drive;
int num_floppies;
/* For floppy disks, we can get the number safely. */
num_floppies = pupa_biosdisk_get_num_floppies ();
num_floppies = grub_biosdisk_get_num_floppies ();
for (drive = 0; drive < num_floppies; drive++)
if (pupa_biosdisk_call_hook (hook, drive))
if (grub_biosdisk_call_hook (hook, drive))
return 1;
/* For hard disks, attempt to read the MBR. */
for (drive = 0x80; drive < 0x90; drive++)
{
if (pupa_biosdisk_rw_standard (0x02, drive, 0, 0, 1, 1,
PUPA_MEMORY_MACHINE_SCRATCH_SEG) != 0)
if (grub_biosdisk_rw_standard (0x02, drive, 0, 0, 1, 1,
GRUB_MEMORY_MACHINE_SCRATCH_SEG) != 0)
break;
if (pupa_biosdisk_call_hook (hook, drive))
if (grub_biosdisk_call_hook (hook, drive))
return 1;
}
return 0;
}
static pupa_err_t
pupa_biosdisk_open (const char *name, pupa_disk_t disk)
static grub_err_t
grub_biosdisk_open (const char *name, grub_disk_t disk)
{
unsigned long total_sectors = 0;
int drive;
struct pupa_biosdisk_data *data;
struct grub_biosdisk_data *data;
drive = pupa_biosdisk_get_drive (name);
drive = grub_biosdisk_get_drive (name);
if (drive < 0)
return pupa_errno;
return grub_errno;
disk->has_partitions = (drive & 0x80);
disk->id = drive;
data = (struct pupa_biosdisk_data *) pupa_malloc (sizeof (*data));
data = (struct grub_biosdisk_data *) grub_malloc (sizeof (*data));
if (! data)
return pupa_errno;
return grub_errno;
data->drive = drive;
data->flags = 0;
@ -149,18 +149,18 @@ pupa_biosdisk_open (const char *name, pupa_disk_t disk)
/* HDD */
int version;
version = pupa_biosdisk_check_int13_extensions (drive);
version = grub_biosdisk_check_int13_extensions (drive);
if (version)
{
struct pupa_biosdisk_drp *drp
= (struct pupa_biosdisk_drp *) PUPA_MEMORY_MACHINE_SCRATCH_ADDR;
struct grub_biosdisk_drp *drp
= (struct grub_biosdisk_drp *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
/* Clear out the DRP. */
pupa_memset (drp, 0, sizeof (*drp));
grub_memset (drp, 0, sizeof (*drp));
drp->size = sizeof (*drp);
if (!pupa_biosdisk_get_diskinfo_int13_extensions (drive, drp))
if (!grub_biosdisk_get_diskinfo_int13_extensions (drive, drp))
{
data->flags = PUPA_BIOSDISK_FLAG_LBA;
data->flags = GRUB_BIOSDISK_FLAG_LBA;
/* FIXME: 2TB limit. */
if (drp->total_sectors)
@ -174,13 +174,13 @@ pupa_biosdisk_open (const char *name, pupa_disk_t disk)
}
}
if (pupa_biosdisk_get_diskinfo_standard (drive,
if (grub_biosdisk_get_diskinfo_standard (drive,
&data->cylinders,
&data->heads,
&data->sectors) != 0)
{
pupa_free (data);
return pupa_error (PUPA_ERR_BAD_DEVICE, "cannot get C/H/S values");
grub_free (data);
return grub_error (GRUB_ERR_BAD_DEVICE, "cannot get C/H/S values");
}
if (! total_sectors)
@ -189,45 +189,45 @@ pupa_biosdisk_open (const char *name, pupa_disk_t disk)
disk->total_sectors = total_sectors;
disk->data = data;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
static void
pupa_biosdisk_close (pupa_disk_t disk)
grub_biosdisk_close (grub_disk_t disk)
{
pupa_free (disk->data);
grub_free (disk->data);
}
/* For readability. */
#define PUPA_BIOSDISK_READ 0
#define PUPA_BIOSDISK_WRITE 1
#define GRUB_BIOSDISK_READ 0
#define GRUB_BIOSDISK_WRITE 1
static pupa_err_t
pupa_biosdisk_rw (int cmd, pupa_disk_t disk,
static grub_err_t
grub_biosdisk_rw (int cmd, grub_disk_t disk,
unsigned long sector, unsigned long size,
unsigned segment)
{
struct pupa_biosdisk_data *data = disk->data;
struct grub_biosdisk_data *data = disk->data;
if (data->flags & PUPA_BIOSDISK_FLAG_LBA)
if (data->flags & GRUB_BIOSDISK_FLAG_LBA)
{
struct pupa_biosdisk_dap *dap;
struct grub_biosdisk_dap *dap;
dap = (struct pupa_biosdisk_dap *) (PUPA_MEMORY_MACHINE_SCRATCH_ADDR
dap = (struct grub_biosdisk_dap *) (GRUB_MEMORY_MACHINE_SCRATCH_ADDR
+ (data->sectors
<< PUPA_DISK_SECTOR_BITS));
<< GRUB_DISK_SECTOR_BITS));
dap->length = sizeof (*dap);
dap->reserved = 0;
dap->blocks = size;
dap->buffer = segment << 16; /* The format SEGMENT:ADDRESS. */
dap->block = sector;
if (pupa_biosdisk_rw_int13_extensions (cmd + 0x42, data->drive, dap))
if (grub_biosdisk_rw_int13_extensions (cmd + 0x42, data->drive, dap))
{
/* Fall back to the CHS mode. */
data->flags &= ~PUPA_BIOSDISK_FLAG_LBA;
data->flags &= ~GRUB_BIOSDISK_FLAG_LBA;
disk->total_sectors = data->cylinders * data->heads * data->sectors;
return pupa_biosdisk_rw (cmd, disk, sector, size, segment);
return grub_biosdisk_rw (cmd, disk, sector, size, segment);
}
}
else
@ -241,29 +241,29 @@ pupa_biosdisk_rw (int cmd, pupa_disk_t disk,
coff = head / data->heads;
if (coff >= data->cylinders)
return pupa_error (PUPA_ERR_OUT_OF_RANGE, "out of disk");
return grub_error (GRUB_ERR_OUT_OF_RANGE, "out of disk");
if (pupa_biosdisk_rw_standard (cmd + 0x02, data->drive,
if (grub_biosdisk_rw_standard (cmd + 0x02, data->drive,
coff, hoff, soff, size, segment))
{
switch (cmd)
{
case PUPA_BIOSDISK_READ:
return pupa_error (PUPA_ERR_READ_ERROR, "biosdisk read error");
case PUPA_BIOSDISK_WRITE:
return pupa_error (PUPA_ERR_WRITE_ERROR, "biosdisk write error");
case GRUB_BIOSDISK_READ:
return grub_error (GRUB_ERR_READ_ERROR, "biosdisk read error");
case GRUB_BIOSDISK_WRITE:
return grub_error (GRUB_ERR_WRITE_ERROR, "biosdisk write error");
}
}
}
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
static pupa_err_t
pupa_biosdisk_read (pupa_disk_t disk, unsigned long sector,
static grub_err_t
grub_biosdisk_read (grub_disk_t disk, unsigned long sector,
unsigned long size, char *buf)
{
struct pupa_biosdisk_data *data = disk->data;
struct grub_biosdisk_data *data = disk->data;
while (size)
{
@ -273,25 +273,25 @@ pupa_biosdisk_read (pupa_disk_t disk, unsigned long sector,
if (len > size)
len = size;
if (pupa_biosdisk_rw (PUPA_BIOSDISK_READ, disk, sector, len,
PUPA_MEMORY_MACHINE_SCRATCH_SEG))
return pupa_errno;
if (grub_biosdisk_rw (GRUB_BIOSDISK_READ, disk, sector, len,
GRUB_MEMORY_MACHINE_SCRATCH_SEG))
return grub_errno;
pupa_memcpy (buf, (void *) PUPA_MEMORY_MACHINE_SCRATCH_ADDR,
len << PUPA_DISK_SECTOR_BITS);
buf += len << PUPA_DISK_SECTOR_BITS;
grub_memcpy (buf, (void *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR,
len << GRUB_DISK_SECTOR_BITS);
buf += len << GRUB_DISK_SECTOR_BITS;
sector += len;
size -= len;
}
return pupa_errno;
return grub_errno;
}
static pupa_err_t
pupa_biosdisk_write (pupa_disk_t disk, unsigned long sector,
static grub_err_t
grub_biosdisk_write (grub_disk_t disk, unsigned long sector,
unsigned long size, const char *buf)
{
struct pupa_biosdisk_data *data = disk->data;
struct grub_biosdisk_data *data = disk->data;
while (size)
{
@ -301,34 +301,34 @@ pupa_biosdisk_write (pupa_disk_t disk, unsigned long sector,
if (len > size)
len = size;
pupa_memcpy ((void *) PUPA_MEMORY_MACHINE_SCRATCH_ADDR, buf,
len << PUPA_DISK_SECTOR_BITS);
grub_memcpy ((void *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR, buf,
len << GRUB_DISK_SECTOR_BITS);
if (pupa_biosdisk_rw (PUPA_BIOSDISK_WRITE, disk, sector, len,
PUPA_MEMORY_MACHINE_SCRATCH_SEG))
return pupa_errno;
if (grub_biosdisk_rw (GRUB_BIOSDISK_WRITE, disk, sector, len,
GRUB_MEMORY_MACHINE_SCRATCH_SEG))
return grub_errno;
buf += len << PUPA_DISK_SECTOR_BITS;
buf += len << GRUB_DISK_SECTOR_BITS;
sector += len;
size -= len;
}
return pupa_errno;
return grub_errno;
}
static struct pupa_disk_dev pupa_biosdisk_dev =
static struct grub_disk_dev grub_biosdisk_dev =
{
.name = "biosdisk",
.iterate = pupa_biosdisk_iterate,
.open = pupa_biosdisk_open,
.close = pupa_biosdisk_close,
.read = pupa_biosdisk_read,
.write = pupa_biosdisk_write,
.iterate = grub_biosdisk_iterate,
.open = grub_biosdisk_open,
.close = grub_biosdisk_close,
.read = grub_biosdisk_read,
.write = grub_biosdisk_write,
.next = 0
};
void
pupa_biosdisk_init (void)
grub_biosdisk_init (void)
{
pupa_disk_dev_register (&pupa_biosdisk_dev);
grub_disk_dev_register (&grub_biosdisk_dev);
}

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,23 +13,23 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/machine/partition.h>
#include <pupa/disk.h>
#include <pupa/mm.h>
#include <pupa/misc.h>
#include <grub/machine/partition.h>
#include <grub/disk.h>
#include <grub/mm.h>
#include <grub/misc.h>
/* Parse the partition representation in STR and return a partition. */
static pupa_partition_t
pupa_partition_parse (const char *str)
static grub_partition_t
grub_partition_parse (const char *str)
{
pupa_partition_t p;
grub_partition_t p;
char *s = (char *) str;
p = (pupa_partition_t) pupa_malloc (sizeof (*p));
p = (grub_partition_t) grub_malloc (sizeof (*p));
if (! p)
return 0;
@ -37,13 +37,13 @@ pupa_partition_parse (const char *str)
p->bsd_part = p->dos_type = p->bsd_type = p->index = -1;
/* Get the DOS partition number. */
p->dos_part = pupa_strtoul (s, &s, 0);
p->dos_part = grub_strtoul (s, &s, 0);
if (pupa_errno)
if (grub_errno)
{
/* Not found. Maybe only a BSD label is specified. */
p->dos_part = -1;
pupa_errno = PUPA_ERR_NONE;
grub_errno = GRUB_ERR_NONE;
}
else if (*s == ',')
s++;
@ -66,19 +66,19 @@ pupa_partition_parse (const char *str)
return p;
fail:
pupa_free (p);
pupa_error (PUPA_ERR_BAD_FILENAME, "invalid partition");
grub_free (p);
grub_error (GRUB_ERR_BAD_FILENAME, "invalid partition");
return 0;
}
pupa_err_t
pupa_partition_iterate (pupa_disk_t disk,
int (*hook) (const pupa_partition_t partition))
grub_err_t
grub_partition_iterate (grub_disk_t disk,
int (*hook) (const grub_partition_t partition))
{
struct pupa_partition p;
struct pupa_partition_mbr mbr;
struct pupa_partition_disk_label label;
struct pupa_disk raw;
struct grub_partition p;
struct grub_partition_mbr mbr;
struct grub_partition_disk_label label;
struct grub_disk raw;
/* Enforce raw disk access. */
raw = *disk;
@ -91,30 +91,30 @@ pupa_partition_iterate (pupa_disk_t disk,
while (1)
{
int i;
struct pupa_partition_entry *e;
struct grub_partition_entry *e;
/* Read the MBR. */
if (pupa_disk_read (&raw, p.offset, 0, sizeof (mbr), (char *) &mbr))
if (grub_disk_read (&raw, p.offset, 0, sizeof (mbr), (char *) &mbr))
goto finish;
/* Check if it is valid. */
if (mbr.signature != pupa_cpu_to_le16 (PUPA_PARTITION_SIGNATURE))
return pupa_error (PUPA_ERR_BAD_PART_TABLE, "no signature");
if (mbr.signature != grub_cpu_to_le16 (GRUB_PARTITION_SIGNATURE))
return grub_error (GRUB_ERR_BAD_PART_TABLE, "no signature");
/* Analyze DOS partitions. */
for (p.index = 0; p.index < 4; p.index++)
{
e = mbr.entries + p.index;
p.start = p.offset + pupa_le_to_cpu32 (e->start);
p.len = pupa_le_to_cpu32 (e->length);
p.start = p.offset + grub_le_to_cpu32 (e->start);
p.len = grub_le_to_cpu32 (e->length);
p.bsd_part = -1;
p.dos_type = e->type;
p.bsd_type = -1;
/* If this partition is a normal one, call the hook. */
if (! pupa_partition_is_empty (e->type)
&& ! pupa_partition_is_extended (e->type))
if (! grub_partition_is_empty (e->type)
&& ! grub_partition_is_extended (e->type))
{
p.dos_part++;
@ -122,17 +122,17 @@ pupa_partition_iterate (pupa_disk_t disk,
goto finish;
/* Check if this is a BSD partition. */
if (pupa_partition_is_bsd (e->type))
if (grub_partition_is_bsd (e->type))
{
/* Check if the BSD label is within the DOS partition. */
if (p.len <= PUPA_PARTITION_BSD_LABEL_SECTOR)
return pupa_error (PUPA_ERR_BAD_PART_TABLE,
if (p.len <= GRUB_PARTITION_BSD_LABEL_SECTOR)
return grub_error (GRUB_ERR_BAD_PART_TABLE,
"no space for disk label");
/* Read the BSD label. */
if (pupa_disk_read (&raw,
if (grub_disk_read (&raw,
(p.start
+ PUPA_PARTITION_BSD_LABEL_SECTOR),
+ GRUB_PARTITION_BSD_LABEL_SECTOR),
0,
sizeof (label),
(char *) &label))
@ -140,22 +140,22 @@ pupa_partition_iterate (pupa_disk_t disk,
/* Check if it is valid. */
if (label.magic
!= pupa_cpu_to_le32 (PUPA_PARTITION_BSD_LABEL_MAGIC))
return pupa_error (PUPA_ERR_BAD_PART_TABLE,
!= grub_cpu_to_le32 (GRUB_PARTITION_BSD_LABEL_MAGIC))
return grub_error (GRUB_ERR_BAD_PART_TABLE,
"invalid disk label magic");
for (p.bsd_part = 0;
p.bsd_part < pupa_cpu_to_le16 (label.num_partitions);
p.bsd_part < grub_cpu_to_le16 (label.num_partitions);
p.bsd_part++)
{
struct pupa_partition_bsd_entry *be
struct grub_partition_bsd_entry *be
= label.entries + p.bsd_part;
p.start = pupa_le_to_cpu32 (be->offset);
p.len = pupa_le_to_cpu32 (be->size);
p.start = grub_le_to_cpu32 (be->offset);
p.len = grub_le_to_cpu32 (be->size);
p.bsd_type = be->fs_type;
if (be->fs_type != PUPA_PARTITION_BSD_TYPE_UNUSED)
if (be->fs_type != GRUB_PARTITION_BSD_TYPE_UNUSED)
if (hook (&p))
goto finish;
}
@ -172,9 +172,9 @@ pupa_partition_iterate (pupa_disk_t disk,
{
e = mbr.entries + i;
if (pupa_partition_is_extended (e->type))
if (grub_partition_is_extended (e->type))
{
p.offset = p.ext_offset + pupa_le_to_cpu32 (e->start);
p.offset = p.ext_offset + grub_le_to_cpu32 (e->start);
if (! p.ext_offset)
p.ext_offset = p.offset;
@ -188,61 +188,61 @@ pupa_partition_iterate (pupa_disk_t disk,
}
finish:
return pupa_errno;
return grub_errno;
}
pupa_partition_t
pupa_partition_probe (pupa_disk_t disk, const char *str)
grub_partition_t
grub_partition_probe (grub_disk_t disk, const char *str)
{
pupa_partition_t p;
auto int find_func (const pupa_partition_t partition);
grub_partition_t p;
auto int find_func (const grub_partition_t partition);
int find_func (const pupa_partition_t partition)
int find_func (const grub_partition_t partition)
{
if ((p->dos_part == partition->dos_part || p->dos_part == -1)
&& p->bsd_part == partition->bsd_part)
{
pupa_memcpy (p, partition, sizeof (*p));
grub_memcpy (p, partition, sizeof (*p));
return 1;
}
return 0;
}
p = pupa_partition_parse (str);
p = grub_partition_parse (str);
if (! p)
return 0;
if (pupa_partition_iterate (disk, find_func))
if (grub_partition_iterate (disk, find_func))
goto fail;
if (p->index < 0)
{
pupa_error (PUPA_ERR_BAD_DEVICE, "no such partition");
grub_error (GRUB_ERR_BAD_DEVICE, "no such partition");
goto fail;
}
return p;
fail:
pupa_free (p);
grub_free (p);
return 0;
}
char *
pupa_partition_get_name (const pupa_partition_t p)
grub_partition_get_name (const grub_partition_t p)
{
char *name;
name = pupa_malloc (13);
name = grub_malloc (13);
if (! name)
return 0;
if (p->bsd_part < 0)
pupa_sprintf (name, "%d", p->dos_part);
grub_sprintf (name, "%d", p->dos_part);
else
pupa_sprintf (name, "%d,%c", p->dos_part, p->bsd_part + 'a');
grub_sprintf (name, "%d,%c", p->dos_part, p->bsd_part + 'a');
return name;
}

View file

@ -1,6 +1,6 @@
/* ofdisk.c - Open Firmware disk access. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,70 +18,70 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/misc.h>
#include <pupa/disk.h>
#include <pupa/mm.h>
#include <pupa/machine/ieee1275.h>
#include <grub/misc.h>
#include <grub/disk.h>
#include <grub/mm.h>
#include <grub/machine/ieee1275.h>
static int
pupa_ofdisk_iterate (int (*hook) (const char *name))
grub_ofdisk_iterate (int (*hook) (const char *name))
{
int dev_iterate (struct pupa_ieee1275_devalias *alias)
int dev_iterate (struct grub_ieee1275_devalias *alias)
{
if (! pupa_strcmp (alias->type, "block"))
if (! grub_strcmp (alias->type, "block"))
hook (alias->name);
return 0;
}
pupa_devalias_iterate (dev_iterate);
grub_devalias_iterate (dev_iterate);
return 0;
}
static pupa_err_t
pupa_ofdisk_open (const char *name, pupa_disk_t disk)
static grub_err_t
grub_ofdisk_open (const char *name, grub_disk_t disk)
{
pupa_ieee1275_phandle_t devalias;
pupa_ieee1275_phandle_t dev;
pupa_ieee1275_ihandle_t dev_ihandle = 0;
grub_ieee1275_phandle_t devalias;
grub_ieee1275_phandle_t dev;
grub_ieee1275_ihandle_t dev_ihandle = 0;
char *devpath = 0;
/* XXX: This should be large enough for any possible case. */
char prop[64];
pupa_size_t pathlen;
grub_size_t pathlen;
int actual;
if (pupa_ieee1275_finddevice ("/aliases", &devalias))
return pupa_error (PUPA_ERR_UNKNOWN_DEVICE, "Can't read the aliases");
if (grub_ieee1275_finddevice ("/aliases", &devalias))
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "Can't read the aliases");
pupa_ieee1275_get_property_length (devalias, name, &pathlen);
devpath = pupa_malloc (pathlen);
grub_ieee1275_get_property_length (devalias, name, &pathlen);
devpath = grub_malloc (pathlen);
if (! devpath)
return pupa_errno;
return grub_errno;
if (pupa_ieee1275_get_property (devalias, name, devpath, pathlen, &actual))
return pupa_error (PUPA_ERR_UNKNOWN_DEVICE, "No such device alias");
if (grub_ieee1275_get_property (devalias, name, devpath, pathlen, &actual))
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "No such device alias");
/* To access the complete disk add `:0'. */
pupa_strcat (devpath, ":0");
pupa_ieee1275_open (devpath, &dev_ihandle);
grub_strcat (devpath, ":0");
grub_ieee1275_open (devpath, &dev_ihandle);
if (! dev_ihandle)
return pupa_error (PUPA_ERR_UNKNOWN_DEVICE, "Can't open device");
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "Can't open device");
if (pupa_ieee1275_finddevice (devpath, &dev))
if (grub_ieee1275_finddevice (devpath, &dev))
{
pupa_error (PUPA_ERR_UNKNOWN_DEVICE, "Can't read device properties");
grub_error (GRUB_ERR_UNKNOWN_DEVICE, "Can't read device properties");
goto fail;
}
if (pupa_ieee1275_get_property (dev, "device_type", prop, sizeof (prop),
if (grub_ieee1275_get_property (dev, "device_type", prop, sizeof (prop),
&actual))
{
pupa_error (PUPA_ERR_BAD_DEVICE, "Can't read the device type");
grub_error (GRUB_ERR_BAD_DEVICE, "Can't read the device type");
goto fail;
}
if (pupa_strcmp (prop, "block"))
if (grub_strcmp (prop, "block"))
{
pupa_error (PUPA_ERR_BAD_DEVICE, "Not a block device");
grub_error (GRUB_ERR_BAD_DEVICE, "Not a block device");
goto fail;
}
@ -99,20 +99,20 @@ pupa_ofdisk_open (const char *name, pupa_disk_t disk)
disk->data = (void *) dev_ihandle;
fail:
if (pupa_errno)
pupa_ieee1275_close (dev_ihandle);
pupa_free (devpath);
return pupa_errno;
if (grub_errno)
grub_ieee1275_close (dev_ihandle);
grub_free (devpath);
return grub_errno;
}
static void
pupa_ofdisk_close (pupa_disk_t disk)
grub_ofdisk_close (grub_disk_t disk)
{
pupa_ieee1275_close ((pupa_ieee1275_ihandle_t) disk->data);
grub_ieee1275_close ((grub_ieee1275_ihandle_t) disk->data);
}
static pupa_err_t
pupa_ofdisk_read (pupa_disk_t disk, unsigned long sector,
static grub_err_t
grub_ofdisk_read (grub_disk_t disk, unsigned long sector,
unsigned long size, char *buf)
{
int status;
@ -121,41 +121,41 @@ pupa_ofdisk_read (pupa_disk_t disk, unsigned long sector,
pos = (unsigned long long) sector * 512UL;
pupa_ieee1275_seek ((pupa_ieee1275_ihandle_t) disk->data, (int) (pos >> 32),
grub_ieee1275_seek ((grub_ieee1275_ihandle_t) disk->data, (int) (pos >> 32),
(int) pos & 0xFFFFFFFFUL, &status);
if (status != 0)
return pupa_error (PUPA_ERR_READ_ERROR,
return grub_error (GRUB_ERR_READ_ERROR,
"Seek error, can't seek block %d", sector);
pupa_ieee1275_read ((pupa_ieee1275_ihandle_t) disk->data, buf,
grub_ieee1275_read ((grub_ieee1275_ihandle_t) disk->data, buf,
size * 512UL, &actual);
if (actual != actual)
return pupa_error (PUPA_ERR_READ_ERROR, "Read error on block: %d", sector);
return grub_error (GRUB_ERR_READ_ERROR, "Read error on block: %d", sector);
return 0;
}
static pupa_err_t
pupa_ofdisk_write (pupa_disk_t disk __attribute ((unused)),
static grub_err_t
grub_ofdisk_write (grub_disk_t disk __attribute ((unused)),
unsigned long sector __attribute ((unused)),
unsigned long size __attribute ((unused)),
const char *buf __attribute ((unused)))
{
return PUPA_ERR_NOT_IMPLEMENTED_YET;
return GRUB_ERR_NOT_IMPLEMENTED_YET;
}
static struct pupa_disk_dev pupa_ofdisk_dev =
static struct grub_disk_dev grub_ofdisk_dev =
{
.name = "ofdisk",
.iterate = pupa_ofdisk_iterate,
.open = pupa_ofdisk_open,
.close = pupa_ofdisk_close,
.read = pupa_ofdisk_read,
.write = pupa_ofdisk_write,
.iterate = grub_ofdisk_iterate,
.open = grub_ofdisk_open,
.close = grub_ofdisk_close,
.read = grub_ofdisk_read,
.write = grub_ofdisk_write,
.next = 0
};
void
pupa_ofdisk_init (void)
grub_ofdisk_init (void)
{
pupa_disk_dev_register (&pupa_ofdisk_dev);
grub_disk_dev_register (&grub_ofdisk_dev);
}

View file

@ -1,6 +1,6 @@
/* partiton.c - Read macintosh partition tables. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,20 +18,20 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/disk.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <pupa/machine/partition.h>
#include <grub/disk.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/machine/partition.h>
pupa_err_t
pupa_partition_iterate (pupa_disk_t disk,
int (*hook) (const pupa_partition_t partition))
grub_err_t
grub_partition_iterate (grub_disk_t disk,
int (*hook) (const grub_partition_t partition))
{
struct pupa_partition part;
struct pupa_apple_part apart;
struct pupa_disk raw;
struct grub_partition part;
struct grub_apple_part apart;
struct grub_disk raw;
int partno = 0;
int pos = PUPA_DISK_SECTOR_SIZE * 2;
int pos = GRUB_DISK_SECTOR_SIZE * 2;
/* Enforce raw disk access. */
raw = *disk;
@ -39,12 +39,12 @@ pupa_partition_iterate (pupa_disk_t disk,
for (;;)
{
if (pupa_disk_read (&raw, pos / PUPA_DISK_SECTOR_SIZE,
pos % PUPA_DISK_SECTOR_SIZE,
sizeof (struct pupa_apple_part), (char *) &apart))
return pupa_errno;
if (grub_disk_read (&raw, pos / GRUB_DISK_SECTOR_SIZE,
pos % GRUB_DISK_SECTOR_SIZE,
sizeof (struct grub_apple_part), (char *) &apart))
return grub_errno;
if (apart.magic != PUPA_APPLE_PART_MAGIC)
if (apart.magic != GRUB_APPLE_PART_MAGIC)
break;
part.start = apart.first_phys_block;
@ -53,34 +53,34 @@ pupa_partition_iterate (pupa_disk_t disk,
part.index = partno;
if (hook (&part))
return pupa_errno;
return grub_errno;
if (apart.first_phys_block == PUPA_DISK_SECTOR_SIZE * 2)
if (apart.first_phys_block == GRUB_DISK_SECTOR_SIZE * 2)
return 0;
pos += sizeof (struct pupa_apple_part);
pos += sizeof (struct grub_apple_part);
partno++;
}
return 0;
}
pupa_partition_t
pupa_partition_probe (pupa_disk_t disk, const char *str)
grub_partition_t
grub_partition_probe (grub_disk_t disk, const char *str)
{
pupa_partition_t p;
grub_partition_t p;
int partnum = 0;
char *s = (char *) str;
int find_func (const pupa_partition_t partition)
int find_func (const grub_partition_t partition)
{
if (partnum == partition->index)
{
p = (pupa_partition_t) pupa_malloc (sizeof (*p));
p = (grub_partition_t) grub_malloc (sizeof (*p));
if (! p)
return 1;
pupa_memcpy (p, partition, sizeof (*p));
grub_memcpy (p, partition, sizeof (*p));
return 1;
}
@ -88,33 +88,33 @@ pupa_partition_probe (pupa_disk_t disk, const char *str)
}
/* Get the partition number. */
partnum = pupa_strtoul (s, &s, 0);
if (pupa_errno)
partnum = grub_strtoul (s, &s, 0);
if (grub_errno)
{
pupa_error (PUPA_ERR_BAD_FILENAME, "invalid partition");
grub_error (GRUB_ERR_BAD_FILENAME, "invalid partition");
return 0;
}
if (pupa_partition_iterate (disk, find_func))
if (grub_partition_iterate (disk, find_func))
goto fail;
return p;
fail:
pupa_free (p);
grub_free (p);
return 0;
}
char *
pupa_partition_get_name (const pupa_partition_t p)
grub_partition_get_name (const grub_partition_t p)
{
char *name;
name = pupa_malloc (13);
name = grub_malloc (13);
if (! name)
return 0;
pupa_sprintf (name, "%d", p->index);
grub_sprintf (name, "%d", p->index);
return name;
}

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,25 +17,25 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/file.h>
#include <pupa/misc.h>
#include <pupa/dl.h>
#include <pupa/normal.h>
#include <pupa/types.h>
#include <pupa/mm.h>
#include <pupa/font.h>
#include <grub/file.h>
#include <grub/misc.h>
#include <grub/dl.h>
#include <grub/normal.h>
#include <grub/types.h>
#include <grub/mm.h>
#include <grub/font.h>
struct entry
{
pupa_uint32_t code;
pupa_uint32_t offset;
grub_uint32_t code;
grub_uint32_t offset;
};
struct font
{
struct font *next;
pupa_file_t file;
pupa_uint32_t num;
grub_file_t file;
grub_uint32_t num;
struct entry table[0];
};
@ -44,29 +44,29 @@ static struct font *font_list;
static int
add_font (const char *filename)
{
pupa_file_t file = 0;
grub_file_t file = 0;
char magic[4];
pupa_uint32_t num, i;
grub_uint32_t num, i;
struct font *font = 0;
file = pupa_file_open (filename);
file = grub_file_open (filename);
if (! file)
goto fail;
if (pupa_file_read (file, magic, 4) != 4)
if (grub_file_read (file, magic, 4) != 4)
goto fail;
if (pupa_memcmp (magic, PUPA_FONT_MAGIC, 4) != 0)
if (grub_memcmp (magic, GRUB_FONT_MAGIC, 4) != 0)
{
pupa_error (PUPA_ERR_BAD_FONT, "invalid font magic");
grub_error (GRUB_ERR_BAD_FONT, "invalid font magic");
goto fail;
}
if (pupa_file_read (file, (char *) &num, 4) != 4)
if (grub_file_read (file, (char *) &num, 4) != 4)
goto fail;
num = pupa_le_to_cpu32 (num);
font = (struct font *) pupa_malloc (sizeof (struct font)
num = grub_le_to_cpu32 (num);
font = (struct font *) grub_malloc (sizeof (struct font)
+ sizeof (struct entry) * num);
if (! font)
goto fail;
@ -76,16 +76,16 @@ add_font (const char *filename)
for (i = 0; i < num; i++)
{
pupa_uint32_t code, offset;
grub_uint32_t code, offset;
if (pupa_file_read (file, (char *) &code, 4) != 4)
if (grub_file_read (file, (char *) &code, 4) != 4)
goto fail;
if (pupa_file_read (file, (char *) &offset, 4) != 4)
if (grub_file_read (file, (char *) &offset, 4) != 4)
goto fail;
font->table[i].code = pupa_le_to_cpu32 (code);
font->table[i].offset = pupa_le_to_cpu32 (offset);
font->table[i].code = grub_le_to_cpu32 (code);
font->table[i].offset = grub_le_to_cpu32 (offset);
}
font->next = font_list;
@ -95,10 +95,10 @@ add_font (const char *filename)
fail:
if (font)
pupa_free (font);
grub_free (font);
if (file)
pupa_file_close (file);
grub_file_close (file);
return 0;
}
@ -113,8 +113,8 @@ remove_font (struct font *font)
{
*p = q->next;
pupa_file_close (font->file);
pupa_free (font);
grub_file_close (font->file);
grub_free (font);
break;
}
@ -122,11 +122,11 @@ remove_font (struct font *font)
/* Return the offset of the glyph corresponding to the codepoint CODE
in the font FONT. If no found, return zero. */
static pupa_uint32_t
find_glyph (const struct font *font, pupa_uint32_t code)
static grub_uint32_t
find_glyph (const struct font *font, grub_uint32_t code)
{
pupa_uint32_t start = 0;
pupa_uint32_t end = font->num - 1;
grub_uint32_t start = 0;
grub_uint32_t end = font->num - 1;
struct entry *table = font->table;
/* This shouldn't happen. */
@ -136,7 +136,7 @@ find_glyph (const struct font *font, pupa_uint32_t code)
/* Do a binary search. */
while (start <= end)
{
pupa_uint32_t i = (start + end) / 2;
grub_uint32_t i = (start + end) / 2;
if (table[i].code < code)
start = i + 1;
@ -167,7 +167,7 @@ fill_with_default_glyph (unsigned char bitmap[32], unsigned *width)
/* Get a glyph corresponding to the codepoint CODE. Always fill BITMAP
and WIDTH with something, even if no glyph is found. */
int
pupa_font_get_glyph (pupa_uint32_t code,
grub_font_get_glyph (grub_uint32_t code,
unsigned char bitmap[32], unsigned *width)
{
struct font *font;
@ -177,31 +177,31 @@ pupa_font_get_glyph (pupa_uint32_t code,
restart:
for (font = font_list; font; font = font->next)
{
pupa_uint32_t offset;
grub_uint32_t offset;
offset = find_glyph (font, code);
if (offset)
{
pupa_uint32_t w;
grub_uint32_t w;
pupa_file_seek (font->file, offset);
if (pupa_file_read (font->file, (char *) &w, 4) != 4)
grub_file_seek (font->file, offset);
if (grub_file_read (font->file, (char *) &w, 4) != 4)
{
remove_font (font);
goto restart;
}
w = pupa_le_to_cpu32 (w);
w = grub_le_to_cpu32 (w);
if (w != 1 && w != 2)
{
/* pupa_error (PUPA_ERR_BAD_FONT, "invalid width"); */
/* grub_error (GRUB_ERR_BAD_FONT, "invalid width"); */
remove_font (font);
goto restart;
}
if (bitmap
&& (pupa_file_read (font->file, bitmap, w * 16)
!= (pupa_ssize_t) w * 16))
&& (grub_file_read (font->file, bitmap, w * 16)
!= (grub_ssize_t) w * 16))
{
remove_font (font);
goto restart;
@ -217,13 +217,13 @@ pupa_font_get_glyph (pupa_uint32_t code,
return 0;
}
static pupa_err_t
font_command (struct pupa_arg_list *state __attribute__ ((unused)),
static grub_err_t
font_command (struct grub_arg_list *state __attribute__ ((unused)),
int argc __attribute__ ((unused)),
char **args __attribute__ ((unused)))
{
if (argc == 0)
return pupa_error (PUPA_ERR_BAD_ARGUMENT, "no font specified");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no font specified");
while (argc--)
if (! add_font (*args++))
@ -232,14 +232,14 @@ font_command (struct pupa_arg_list *state __attribute__ ((unused)),
return 0;
}
PUPA_MOD_INIT
GRUB_MOD_INIT
{
(void) mod; /* Stop warning. */
pupa_register_command ("font", font_command, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("font", font_command, GRUB_COMMAND_FLAG_BOTH,
"font FILE...", "Specify a font file to display.", 0);
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_unregister_command ("font");
grub_unregister_command ("font");
}

518
fs/ext2.c
View file

@ -1,6 +1,6 @@
/* ext2.c - Second Extended filesystem */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -31,139 +31,139 @@
#define FILETYPE_DIRECTORY 2
#define FILETYPE_SYMLINK 7
#include <pupa/err.h>
#include <pupa/file.h>
#include <pupa/mm.h>
#include <pupa/misc.h>
#include <pupa/disk.h>
#include <pupa/dl.h>
#include <pupa/types.h>
#include <grub/err.h>
#include <grub/file.h>
#include <grub/mm.h>
#include <grub/misc.h>
#include <grub/disk.h>
#include <grub/dl.h>
#include <grub/types.h>
/* Log2 size of ext2 block in 512 blocks. */
#define LOG2_EXT2_BLOCK_SIZE(data) \
(pupa_le_to_cpu32 (data->sblock.log2_block_size) + 1)
(grub_le_to_cpu32 (data->sblock.log2_block_size) + 1)
/* Log2 size of ext2 block in bytes. */
#define LOG2_BLOCK_SIZE(data) \
(pupa_le_to_cpu32 (data->sblock.log2_block_size) + 10)
(grub_le_to_cpu32 (data->sblock.log2_block_size) + 10)
/* The size of an ext2 block in bytes. */
#define EXT2_BLOCK_SIZE(data) (1 << LOG2_BLOCK_SIZE(data))
/* The ext2 superblock. */
struct pupa_ext_sblock
struct grub_ext_sblock
{
pupa_uint32_t total_inodes;
pupa_uint32_t total_blocks;
pupa_uint32_t reserved_blocks;
pupa_uint32_t free_blocks;
pupa_uint32_t free_inodes;
pupa_uint32_t first_data_block;
pupa_uint32_t log2_block_size;
pupa_uint32_t log2_fragment_size;
pupa_uint32_t blocks_per_group;
pupa_uint32_t fragments_per_group;
pupa_uint32_t inodes_per_group;
pupa_uint32_t mtime;
pupa_uint32_t utime;
pupa_uint16_t mnt_count;
pupa_uint16_t max_mnt_count;
pupa_uint16_t magic;
pupa_uint16_t fs_state;
pupa_uint16_t error_handling;
pupa_uint16_t minor_revision_level;
pupa_uint32_t lastcheck;
pupa_uint32_t checkinterval;
pupa_uint32_t creator_os;
pupa_uint32_t revision_level;
pupa_uint16_t uid_reserved;
pupa_uint16_t gid_reserved;
pupa_uint32_t first_inode;
pupa_uint16_t inode_size;
pupa_uint16_t block_group_number;
pupa_uint32_t feature_compatibility;
pupa_uint32_t feature_incompat;
pupa_uint32_t feature_ro_compat;
pupa_uint32_t unique_id[4];
grub_uint32_t total_inodes;
grub_uint32_t total_blocks;
grub_uint32_t reserved_blocks;
grub_uint32_t free_blocks;
grub_uint32_t free_inodes;
grub_uint32_t first_data_block;
grub_uint32_t log2_block_size;
grub_uint32_t log2_fragment_size;
grub_uint32_t blocks_per_group;
grub_uint32_t fragments_per_group;
grub_uint32_t inodes_per_group;
grub_uint32_t mtime;
grub_uint32_t utime;
grub_uint16_t mnt_count;
grub_uint16_t max_mnt_count;
grub_uint16_t magic;
grub_uint16_t fs_state;
grub_uint16_t error_handling;
grub_uint16_t minor_revision_level;
grub_uint32_t lastcheck;
grub_uint32_t checkinterval;
grub_uint32_t creator_os;
grub_uint32_t revision_level;
grub_uint16_t uid_reserved;
grub_uint16_t gid_reserved;
grub_uint32_t first_inode;
grub_uint16_t inode_size;
grub_uint16_t block_group_number;
grub_uint32_t feature_compatibility;
grub_uint32_t feature_incompat;
grub_uint32_t feature_ro_compat;
grub_uint32_t unique_id[4];
char volume_name[16];
char last_mounted_on[64];
pupa_uint32_t compression_info;
grub_uint32_t compression_info;
};
/* The ext2 blockgroup. */
struct ext2_block_group
{
pupa_uint32_t block_id;
pupa_uint32_t inode_id;
pupa_uint32_t inode_table_id;
pupa_uint16_t free_blocks;
pupa_uint16_t free_inodes;
pupa_uint16_t pad;
pupa_uint32_t reserved[3];
grub_uint32_t block_id;
grub_uint32_t inode_id;
grub_uint32_t inode_table_id;
grub_uint16_t free_blocks;
grub_uint16_t free_inodes;
grub_uint16_t pad;
grub_uint32_t reserved[3];
};
/* The ext2 inode. */
struct pupa_ext2_inode
struct grub_ext2_inode
{
pupa_uint16_t mode;
pupa_uint16_t uid;
pupa_uint32_t size;
pupa_uint32_t atime;
pupa_uint32_t ctime;
pupa_uint32_t mtime;
pupa_uint32_t dtime;
pupa_uint16_t gid;
pupa_uint16_t nlinks;
pupa_uint32_t blockcnt; /* Blocks of 512 bytes!! */
pupa_uint32_t flags;
pupa_uint32_t osd1;
grub_uint16_t mode;
grub_uint16_t uid;
grub_uint32_t size;
grub_uint32_t atime;
grub_uint32_t ctime;
grub_uint32_t mtime;
grub_uint32_t dtime;
grub_uint16_t gid;
grub_uint16_t nlinks;
grub_uint32_t blockcnt; /* Blocks of 512 bytes!! */
grub_uint32_t flags;
grub_uint32_t osd1;
union
{
struct datablocks
{
pupa_uint32_t dir_blocks[INDIRECT_BLOCKS];
pupa_uint32_t indir_block;
pupa_uint32_t double_indir_block;
pupa_uint32_t tripple_indir_block;
grub_uint32_t dir_blocks[INDIRECT_BLOCKS];
grub_uint32_t indir_block;
grub_uint32_t double_indir_block;
grub_uint32_t tripple_indir_block;
} blocks;
char symlink[60];
};
pupa_uint32_t version;
pupa_uint32_t acl;
pupa_uint32_t dir_acl;
pupa_uint32_t fragment_addr;
pupa_uint32_t osd2[3];
grub_uint32_t version;
grub_uint32_t acl;
grub_uint32_t dir_acl;
grub_uint32_t fragment_addr;
grub_uint32_t osd2[3];
};
/* The header of an ext2 directory entry. */
struct ext2_dirent
{
pupa_uint32_t inode;
pupa_uint16_t direntlen;
pupa_uint8_t namelen;
pupa_uint8_t filetype;
grub_uint32_t inode;
grub_uint16_t direntlen;
grub_uint8_t namelen;
grub_uint8_t filetype;
};
/* Information about a "mounted" ext2 filesystem. */
struct pupa_ext2_data
struct grub_ext2_data
{
struct pupa_ext_sblock sblock;
pupa_disk_t disk;
struct pupa_ext2_inode inode;
struct grub_ext_sblock sblock;
grub_disk_t disk;
struct grub_ext2_inode inode;
};
#ifndef PUPA_UTIL
static pupa_dl_t my_mod;
#ifndef GRUB_UTIL
static grub_dl_t my_mod;
#endif
/* Read into BLKGRP the blockgroup descriptor of blockgroup GROUP of
the mounted filesystem DATA. */
inline static pupa_err_t
pupa_ext2_blockgroup (struct pupa_ext2_data *data, int group,
inline static grub_err_t
grub_ext2_blockgroup (struct grub_ext2_data *data, int group,
struct ext2_block_group *blkgrp)
{
return pupa_disk_read (data->disk,
((pupa_le_to_cpu32 (data->sblock.first_data_block) + 1)
return grub_disk_read (data->disk,
((grub_le_to_cpu32 (data->sblock.first_data_block) + 1)
<< LOG2_EXT2_BLOCK_SIZE (data)),
group * sizeof (struct ext2_block_group),
sizeof (struct ext2_block_group), (char *) blkgrp);
@ -172,28 +172,28 @@ pupa_ext2_blockgroup (struct pupa_ext2_data *data, int group,
/* Return in BLOCK the on disk block number of block FILEBLOCK in the
opened file descibed by DATA. If this block is not stored on disk
in case of a sparse file return 0. */
static pupa_err_t
pupa_ext2_get_file_block (struct pupa_ext2_data *data,
static grub_err_t
grub_ext2_get_file_block (struct grub_ext2_data *data,
int fileblock, int *block)
{
int blknr;
struct pupa_ext2_inode *inode = &data->inode;
struct grub_ext2_inode *inode = &data->inode;
/* Direct blocks. */
if (fileblock < INDIRECT_BLOCKS)
blknr = pupa_le_to_cpu32 (inode->blocks.dir_blocks[fileblock]);
blknr = grub_le_to_cpu32 (inode->blocks.dir_blocks[fileblock]);
/* Indirect. */
else if (fileblock < INDIRECT_BLOCKS + EXT2_BLOCK_SIZE (data) / 4)
{
pupa_uint32_t indir[EXT2_BLOCK_SIZE (data) / 4];
grub_uint32_t indir[EXT2_BLOCK_SIZE (data) / 4];
if (pupa_disk_read (data->disk,
pupa_le_to_cpu32 (inode->blocks.indir_block)
if (grub_disk_read (data->disk,
grub_le_to_cpu32 (inode->blocks.indir_block)
<< LOG2_EXT2_BLOCK_SIZE (data),
0, EXT2_BLOCK_SIZE (data), (char *) indir))
return pupa_errno;
return grub_errno;
blknr = pupa_le_to_cpu32 (indir[fileblock - INDIRECT_BLOCKS]);
blknr = grub_le_to_cpu32 (indir[fileblock - INDIRECT_BLOCKS]);
}
/* Double indirect. */
else if (fileblock < INDIRECT_BLOCKS + EXT2_BLOCK_SIZE (data) / 4
@ -202,29 +202,29 @@ pupa_ext2_get_file_block (struct pupa_ext2_data *data,
unsigned int perblock = EXT2_BLOCK_SIZE (data) / 4;
unsigned int rblock = fileblock - (INDIRECT_BLOCKS
+ EXT2_BLOCK_SIZE (data) / 4);
pupa_uint32_t indir[EXT2_BLOCK_SIZE (data) / 4];
grub_uint32_t indir[EXT2_BLOCK_SIZE (data) / 4];
if (pupa_disk_read (data->disk,
pupa_le_to_cpu32 (inode->blocks.double_indir_block)
if (grub_disk_read (data->disk,
grub_le_to_cpu32 (inode->blocks.double_indir_block)
<< LOG2_EXT2_BLOCK_SIZE (data),
0, EXT2_BLOCK_SIZE (data), (char *) indir))
return pupa_errno;
return grub_errno;
if (pupa_disk_read (data->disk,
pupa_le_to_cpu32 (indir[rblock / perblock])
if (grub_disk_read (data->disk,
grub_le_to_cpu32 (indir[rblock / perblock])
<< LOG2_EXT2_BLOCK_SIZE (data),
0, EXT2_BLOCK_SIZE (data), (char *) indir))
return pupa_errno;
return grub_errno;
blknr = pupa_le_to_cpu32 (indir[rblock % perblock]);
blknr = grub_le_to_cpu32 (indir[rblock % perblock]);
}
/* Tripple indirect. */
else
{
pupa_error (PUPA_ERR_NOT_IMPLEMENTED_YET,
grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
"ext2fs doesn't support tripple indirect blocks");
return pupa_errno;
return grub_errno;
}
*block = blknr;
@ -234,8 +234,8 @@ pupa_ext2_get_file_block (struct pupa_ext2_data *data,
/* Read LEN bytes from the file described by DATA starting with byte
POS. Return the amount of read bytes in READ. */
static pupa_ssize_t
pupa_ext2_read_file (struct pupa_ext2_data *data,
static grub_ssize_t
grub_ext2_read_file (struct grub_ext2_data *data,
void (*read_hook) (unsigned long sector,
unsigned offset, unsigned length),
int pos, unsigned int len, char *buf)
@ -244,8 +244,8 @@ pupa_ext2_read_file (struct pupa_ext2_data *data,
int blockcnt;
/* Adjust len so it we can't read past the end of the file. */
if (len > pupa_le_to_cpu32 (data->inode.size))
len = pupa_le_to_cpu32 (data->inode.size);
if (len > grub_le_to_cpu32 (data->inode.size))
len = grub_le_to_cpu32 (data->inode.size);
blockcnt = ((len + pos)
+ EXT2_BLOCK_SIZE (data) - 1) / EXT2_BLOCK_SIZE (data);
@ -258,8 +258,8 @@ pupa_ext2_read_file (struct pupa_ext2_data *data,
int skipfirst = 0;
pupa_ext2_get_file_block (data, i, &blknr);
if (pupa_errno)
grub_ext2_get_file_block (data, i, &blknr);
if (grub_errno)
return -1;
blknr = blknr << LOG2_EXT2_BLOCK_SIZE (data);
@ -286,14 +286,14 @@ pupa_ext2_read_file (struct pupa_ext2_data *data,
if (blknr)
{
data->disk->read_hook = read_hook;
pupa_disk_read (data->disk, blknr, skipfirst,
grub_disk_read (data->disk, blknr, skipfirst,
blockend, buf);
data->disk->read_hook = 0;
if (pupa_errno)
if (grub_errno)
return -1;
}
else
pupa_memset (buf, EXT2_BLOCK_SIZE (data) - skipfirst, 0);
grub_memset (buf, EXT2_BLOCK_SIZE (data) - skipfirst, 0);
buf += EXT2_BLOCK_SIZE (data) - skipfirst;
}
@ -303,12 +303,12 @@ pupa_ext2_read_file (struct pupa_ext2_data *data,
/* Read the inode INO for the file described by DATA into INODE. */
static pupa_err_t
pupa_ext2_read_inode (struct pupa_ext2_data *data,
int ino, struct pupa_ext2_inode *inode)
static grub_err_t
grub_ext2_read_inode (struct grub_ext2_data *data,
int ino, struct grub_ext2_inode *inode)
{
struct ext2_block_group blkgrp;
struct pupa_ext_sblock *sblock = &data->sblock;
struct grub_ext_sblock *sblock = &data->sblock;
int inodes_per_block;
unsigned int blkno;
@ -317,76 +317,76 @@ pupa_ext2_read_inode (struct pupa_ext2_data *data,
/* It is easier to calculate if the first inode is 0. */
ino--;
pupa_ext2_blockgroup (data, ino / pupa_le_to_cpu32 (sblock->inodes_per_group),
grub_ext2_blockgroup (data, ino / grub_le_to_cpu32 (sblock->inodes_per_group),
&blkgrp);
if (pupa_errno)
return pupa_errno;
if (grub_errno)
return grub_errno;
inodes_per_block = EXT2_BLOCK_SIZE (data) / 128;
blkno = (ino % pupa_le_to_cpu32 (sblock->inodes_per_group))
blkno = (ino % grub_le_to_cpu32 (sblock->inodes_per_group))
/ inodes_per_block;
blkoff = (ino % pupa_le_to_cpu32 (sblock->inodes_per_group))
blkoff = (ino % grub_le_to_cpu32 (sblock->inodes_per_group))
% inodes_per_block;
/* Read the inode. */
if (pupa_disk_read (data->disk,
((pupa_le_to_cpu32 (blkgrp.inode_table_id) + blkno)
if (grub_disk_read (data->disk,
((grub_le_to_cpu32 (blkgrp.inode_table_id) + blkno)
<< LOG2_EXT2_BLOCK_SIZE (data)),
sizeof (struct pupa_ext2_inode) * blkoff,
sizeof (struct pupa_ext2_inode), (char *) inode))
return pupa_errno;
sizeof (struct grub_ext2_inode) * blkoff,
sizeof (struct grub_ext2_inode), (char *) inode))
return grub_errno;
return 0;
}
static struct pupa_ext2_data *
pupa_ext2_mount (pupa_disk_t disk)
static struct grub_ext2_data *
grub_ext2_mount (grub_disk_t disk)
{
struct pupa_ext2_data *data;
struct grub_ext2_data *data;
data = pupa_malloc (sizeof (struct pupa_ext2_data));
data = grub_malloc (sizeof (struct grub_ext2_data));
if (!data)
return 0;
/* Read the superblock. */
pupa_disk_read (disk, 1 * 2, 0, sizeof (struct pupa_ext_sblock),
grub_disk_read (disk, 1 * 2, 0, sizeof (struct grub_ext_sblock),
(char *) &data->sblock);
if (pupa_errno)
if (grub_errno)
goto fail;
/* Make sure this is an ext2 filesystem. */
if (pupa_le_to_cpu16 (data->sblock.magic) != EXT2_MAGIC)
if (grub_le_to_cpu16 (data->sblock.magic) != EXT2_MAGIC)
goto fail;
data->disk = disk;
return data;
fail:
pupa_error (PUPA_ERR_BAD_FS, "not an ext2 filesystem");
pupa_free (data);
grub_error (GRUB_ERR_BAD_FS, "not an ext2 filesystem");
grub_free (data);
return 0;
}
/* Find the file with the pathname PATH on the filesystem described by
DATA. Return its inode number in INO. */
static pupa_err_t
pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
static grub_err_t
grub_ext2_find_file (struct grub_ext2_data *data, const char *path, int *ino)
{
int blocksize = EXT2_BLOCK_SIZE (data)
<< pupa_le_to_cpu32 (data->sblock.log2_block_size);
struct pupa_ext2_inode *inode = &data->inode;
<< grub_le_to_cpu32 (data->sblock.log2_block_size);
struct grub_ext2_inode *inode = &data->inode;
int currinode = 2;
int symlinkcnt = 0;
char fpath[EXT2_PATH_MAX];
char *name = fpath;
pupa_strncpy (fpath, path, EXT2_PATH_MAX);
grub_strncpy (fpath, path, EXT2_PATH_MAX);
if (!name || name[0] != '/')
{
pupa_error (PUPA_ERR_BAD_FILENAME, "bad filename");
return pupa_errno;
grub_error (GRUB_ERR_BAD_FILENAME, "bad filename");
return grub_errno;
}
/* Skip the first slash. */
@ -398,8 +398,8 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
}
/* Remove trailing "/". */
if (name[pupa_strlen (name) - 1] =='/')
name[pupa_strlen (name) - 1] = '\0';
if (name[grub_strlen (name) - 1] =='/')
name[grub_strlen (name) - 1] = '\0';
while (*name)
{
@ -408,29 +408,29 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
int namesize;
/* Extract the actual part from the pathname. */
next = pupa_strchr (name, '/');
next = grub_strchr (name, '/');
if (next)
{
next[0] = '\0';
next++;
}
namesize = pupa_strlen (name);
namesize = grub_strlen (name);
/* Open the file. */
pupa_ext2_read_inode (data, currinode, inode);
if (pupa_errno)
grub_ext2_read_inode (data, currinode, inode);
if (grub_errno)
goto fail;
/* Search the file. */
while (fpos < pupa_le_to_cpu32 (inode->size))
while (fpos < grub_le_to_cpu32 (inode->size))
{
struct ext2_dirent dirent;
/* Read the directory entry. */
pupa_ext2_read_file (data, 0, fpos, sizeof (struct ext2_dirent),
grub_ext2_read_file (data, 0, fpos, sizeof (struct ext2_dirent),
(char *) &dirent);
if (pupa_errno)
if (grub_errno)
goto fail;
if (dirent.namelen != 0)
@ -438,10 +438,10 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
char filename[dirent.namelen + 1];
/* Read the filename part of this directory entry. */
pupa_ext2_read_file (data, 0, fpos
grub_ext2_read_file (data, 0, fpos
+ sizeof (struct ext2_dirent),
dirent.namelen, filename);
if (pupa_errno)
if (grub_errno)
goto fail;
filename[dirent.namelen] = '\0';
@ -449,7 +449,7 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
/* Check if the current directory entry described the
file we are looking for. */
if (dirent.namelen == namesize
&& !pupa_strncmp (name, filename, namesize))
&& !grub_strncmp (name, filename, namesize))
{
/* If this is a symlink, follow it. */
if (dirent.filetype == FILETYPE_SYMLINK)
@ -459,38 +459,38 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
if (++symlinkcnt == EXT2_MAX_SYMLINKCNT)
{
pupa_error (PUPA_ERR_SYMLINK_LOOP,
grub_error (GRUB_ERR_SYMLINK_LOOP,
"too deep nesting of symlinks");
goto fail;
}
/* Read the symlink. */
pupa_ext2_read_inode (data,
pupa_le_to_cpu32 (dirent.inode),
grub_ext2_read_inode (data,
grub_le_to_cpu32 (dirent.inode),
inode);
/* If the filesize of the symlink is bigger than
60 the symlink is stored in a separate block,
otherwise it is stored in the inode. */
if (pupa_le_to_cpu32 (inode->size) <= 60)
pupa_strncpy (symlink,
if (grub_le_to_cpu32 (inode->size) <= 60)
grub_strncpy (symlink,
inode->symlink,
pupa_le_to_cpu32 (inode->size));
grub_le_to_cpu32 (inode->size));
else
{
pupa_ext2_read_file (data, 0, 0,
pupa_le_to_cpu32 (inode->size),
grub_ext2_read_file (data, 0, 0,
grub_le_to_cpu32 (inode->size),
symlink);
if (pupa_errno)
if (grub_errno)
goto fail;
}
symlink[pupa_le_to_cpu32 (inode->size)] = '\0';
symlink[grub_le_to_cpu32 (inode->size)] = '\0';
/* Check if the symlink is absolute or relative. */
if (symlink[0] == '/')
{
pupa_strncpy (fpath, symlink, EXT2_PATH_MAX);
grub_strncpy (fpath, symlink, EXT2_PATH_MAX);
name = fpath;
currinode = 2;
}
@ -500,20 +500,20 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
if (next)
{
bak = pupa_strdup (next);
bak = grub_strdup (next);
if (!bak)
goto fail;
}
/* Relative symlink, construct the new path. */
pupa_strcpy (fpath, symlink);
grub_strcpy (fpath, symlink);
name = fpath;
if (next)
{
pupa_strcat (name, "/");
pupa_strcat (name, bak);
pupa_free (bak);
grub_strcat (name, "/");
grub_strcat (name, bak);
grub_free (bak);
}
}
@ -523,12 +523,12 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
if (next)
{
currinode = pupa_le_to_cpu32 (dirent.inode);
currinode = grub_le_to_cpu32 (dirent.inode);
name = next;
if (dirent.filetype != FILETYPE_DIRECTORY)
{
pupa_error (PUPA_ERR_BAD_FILE_TYPE,
grub_error (GRUB_ERR_BAD_FILE_TYPE,
"not a directory");
goto fail;
}
@ -536,59 +536,59 @@ pupa_ext2_find_file (struct pupa_ext2_data *data, const char *path, int *ino)
}
else /* Found it! */
{
*ino = pupa_le_to_cpu32 (dirent.inode);
*ino = grub_le_to_cpu32 (dirent.inode);
return 0;
}
}
}
/* Move to next directory entry. */
fpos += pupa_le_to_cpu16 (dirent.direntlen);
fpos += grub_le_to_cpu16 (dirent.direntlen);
}
/* The complete directory was read and no matching file was
found. */
if (fpos >= pupa_le_to_cpu32 (inode->size))
if (fpos >= grub_le_to_cpu32 (inode->size))
{
pupa_error (PUPA_ERR_FILE_NOT_FOUND, "file not found");
grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
goto fail;
}
}
fail:
return pupa_errno;
return grub_errno;
}
/* Open a file named NAME and initialize FILE. */
static pupa_err_t
pupa_ext2_open (struct pupa_file *file, const char *name)
static grub_err_t
grub_ext2_open (struct grub_file *file, const char *name)
{
struct pupa_ext2_data *data;
struct grub_ext2_data *data;
int ino;
#ifndef PUPA_UTIL
pupa_dl_ref (my_mod);
#ifndef GRUB_UTIL
grub_dl_ref (my_mod);
#endif
data = pupa_ext2_mount (file->device->disk);
data = grub_ext2_mount (file->device->disk);
if (!data)
goto fail;
pupa_ext2_find_file (data, name, &ino);
if (pupa_errno)
grub_ext2_find_file (data, name, &ino);
if (grub_errno)
goto fail;
pupa_ext2_read_inode (data, ino, &data->inode);
if (pupa_errno)
grub_ext2_read_inode (data, ino, &data->inode);
if (grub_errno)
goto fail;
if (!(pupa_le_to_cpu16 (data->inode.mode) & 0100000))
if (!(grub_le_to_cpu16 (data->inode.mode) & 0100000))
{
pupa_error (PUPA_ERR_BAD_FILE_TYPE, "not a regular file");
grub_error (GRUB_ERR_BAD_FILE_TYPE, "not a regular file");
goto fail;
}
file->size = pupa_le_to_cpu32 (data->inode.size);
file->size = grub_le_to_cpu32 (data->inode.size);
file->data = data;
file->offset = 0;
@ -596,86 +596,86 @@ pupa_ext2_open (struct pupa_file *file, const char *name)
fail:
pupa_free (data);
grub_free (data);
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
return pupa_errno;
return grub_errno;
}
static pupa_err_t
pupa_ext2_close (pupa_file_t file)
static grub_err_t
grub_ext2_close (grub_file_t file)
{
pupa_free (file->data);
grub_free (file->data);
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
/* Read LEN bytes data from FILE into BUF. */
static pupa_ssize_t
pupa_ext2_read (pupa_file_t file, char *buf, pupa_ssize_t len)
static grub_ssize_t
grub_ext2_read (grub_file_t file, char *buf, grub_ssize_t len)
{
struct pupa_ext2_data *data =
(struct pupa_ext2_data *) file->data;
struct grub_ext2_data *data =
(struct grub_ext2_data *) file->data;
return pupa_ext2_read_file (data, file->read_hook, file->offset, len, buf);
return grub_ext2_read_file (data, file->read_hook, file->offset, len, buf);
}
static pupa_err_t
pupa_ext2_dir (pupa_device_t device, const char *path,
static grub_err_t
grub_ext2_dir (grub_device_t device, const char *path,
int (*hook) (const char *filename, int dir))
{
struct pupa_ext2_data *data = 0;;
struct grub_ext2_data *data = 0;;
int ino;
unsigned int fpos = 0;
#ifndef PUPA_UTIL
pupa_dl_ref (my_mod);
#ifndef GRUB_UTIL
grub_dl_ref (my_mod);
#endif
data = pupa_ext2_mount (device->disk);
data = grub_ext2_mount (device->disk);
if (!data)
goto fail;
pupa_ext2_find_file (data, (char *) path, &ino);
if (pupa_errno)
grub_ext2_find_file (data, (char *) path, &ino);
if (grub_errno)
goto fail;
pupa_ext2_read_inode (data, ino, &data->inode);
if (pupa_errno)
grub_ext2_read_inode (data, ino, &data->inode);
if (grub_errno)
goto fail;
if (!(pupa_le_to_cpu16 (data->inode.mode) & 040000))
if (!(grub_le_to_cpu16 (data->inode.mode) & 040000))
{
pupa_error (PUPA_ERR_BAD_FILE_TYPE, "not a directory");
grub_error (GRUB_ERR_BAD_FILE_TYPE, "not a directory");
goto fail;
}
/* Search the file. */
while (fpos < pupa_le_to_cpu32 (data->inode.size))
while (fpos < grub_le_to_cpu32 (data->inode.size))
{
struct ext2_dirent dirent;
pupa_ext2_read_file (data, 0, fpos, sizeof (struct ext2_dirent),
grub_ext2_read_file (data, 0, fpos, sizeof (struct ext2_dirent),
(char *) &dirent);
if (pupa_errno)
if (grub_errno)
goto fail;
if (dirent.namelen != 0)
{
char filename[dirent.namelen + 1];
pupa_ext2_read_file (data, 0, fpos + sizeof (struct ext2_dirent),
grub_ext2_read_file (data, 0, fpos + sizeof (struct ext2_dirent),
dirent.namelen, filename);
if (pupa_errno)
if (grub_errno)
goto fail;
filename[dirent.namelen] = '\0';
@ -683,78 +683,78 @@ pupa_ext2_dir (pupa_device_t device, const char *path,
hook (filename, dirent.filetype == FILETYPE_DIRECTORY);
}
fpos += pupa_le_to_cpu16 (dirent.direntlen);
fpos += grub_le_to_cpu16 (dirent.direntlen);
}
fail:
pupa_free (data);
grub_free (data);
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
return pupa_errno;
return grub_errno;
}
static pupa_err_t
pupa_ext2_label (pupa_device_t device, char **label)
static grub_err_t
grub_ext2_label (grub_device_t device, char **label)
{
struct pupa_ext2_data *data;
pupa_disk_t disk = device->disk;
struct grub_ext2_data *data;
grub_disk_t disk = device->disk;
#ifndef PUPA_UTIL
pupa_dl_ref (my_mod);
#ifndef GRUB_UTIL
grub_dl_ref (my_mod);
#endif
data = pupa_ext2_mount (disk);
data = grub_ext2_mount (disk);
if (data)
*label = pupa_strndup (data->sblock.volume_name, 14);
*label = grub_strndup (data->sblock.volume_name, 14);
else
*label = 0;
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
pupa_free (data);
grub_free (data);
return pupa_errno;
return grub_errno;
}
static struct pupa_fs pupa_ext2_fs =
static struct grub_fs grub_ext2_fs =
{
.name = "ext2",
.dir = pupa_ext2_dir,
.open = pupa_ext2_open,
.read = pupa_ext2_read,
.close = pupa_ext2_close,
.label = pupa_ext2_label,
.dir = grub_ext2_dir,
.open = grub_ext2_open,
.read = grub_ext2_read,
.close = grub_ext2_close,
.label = grub_ext2_label,
.next = 0
};
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
void
pupa_ext2_init (void)
grub_ext2_init (void)
{
pupa_fs_register (&pupa_ext2_fs);
grub_fs_register (&grub_ext2_fs);
}
void
pupa_ext2_fini (void)
grub_ext2_fini (void)
{
pupa_fs_unregister (&pupa_ext2_fs);
grub_fs_unregister (&grub_ext2_fs);
}
#else /* ! PUPA_UTIL */
PUPA_MOD_INIT
#else /* ! GRUB_UTIL */
GRUB_MOD_INIT
{
pupa_fs_register (&pupa_ext2_fs);
grub_fs_register (&grub_ext2_fs);
my_mod = mod;
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_fs_unregister (&pupa_ext2_fs);
grub_fs_unregister (&grub_ext2_fs);
}
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */

500
fs/fat.c
View file

@ -1,6 +1,6 @@
/* fat.c - FAT filesystem */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2000,2001,2002,2003,2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,115 +18,115 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/fs.h>
#include <pupa/disk.h>
#include <pupa/file.h>
#include <pupa/types.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <pupa/err.h>
#include <pupa/dl.h>
#include <grub/fs.h>
#include <grub/disk.h>
#include <grub/file.h>
#include <grub/types.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/err.h>
#include <grub/dl.h>
#define PUPA_FAT_DIR_ENTRY_SIZE 32
#define GRUB_FAT_DIR_ENTRY_SIZE 32
#define PUPA_FAT_ATTR_READ_ONLY 0x01
#define PUPA_FAT_ATTR_HIDDEN 0x02
#define PUPA_FAT_ATTR_SYSTEM 0x04
#define PUPA_FAT_ATTR_VOLUME_ID 0x08
#define PUPA_FAT_ATTR_DIRECTORY 0x10
#define PUPA_FAT_ATTR_ARCHIVE 0x20
#define GRUB_FAT_ATTR_READ_ONLY 0x01
#define GRUB_FAT_ATTR_HIDDEN 0x02
#define GRUB_FAT_ATTR_SYSTEM 0x04
#define GRUB_FAT_ATTR_VOLUME_ID 0x08
#define GRUB_FAT_ATTR_DIRECTORY 0x10
#define GRUB_FAT_ATTR_ARCHIVE 0x20
#define PUPA_FAT_ATTR_LONG_NAME (PUPA_FAT_ATTR_READ_ONLY \
| PUPA_FAT_ATTR_HIDDEN \
| PUPA_FAT_ATTR_SYSTEM \
| PUPA_FAT_ATTR_VOLUME_ID)
#define PUPA_FAT_ATTR_VALID (PUPA_FAT_ATTR_READ_ONLY \
| PUPA_FAT_ATTR_HIDDEN \
| PUPA_FAT_ATTR_SYSTEM \
| PUPA_FAT_ATTR_DIRECTORY \
| PUPA_FAT_ATTR_ARCHIVE)
#define GRUB_FAT_ATTR_LONG_NAME (GRUB_FAT_ATTR_READ_ONLY \
| GRUB_FAT_ATTR_HIDDEN \
| GRUB_FAT_ATTR_SYSTEM \
| GRUB_FAT_ATTR_VOLUME_ID)
#define GRUB_FAT_ATTR_VALID (GRUB_FAT_ATTR_READ_ONLY \
| GRUB_FAT_ATTR_HIDDEN \
| GRUB_FAT_ATTR_SYSTEM \
| GRUB_FAT_ATTR_DIRECTORY \
| GRUB_FAT_ATTR_ARCHIVE)
struct pupa_fat_bpb
struct grub_fat_bpb
{
pupa_uint8_t jmp_boot[3];
pupa_uint8_t oem_name[8];
pupa_uint16_t bytes_per_sector;
pupa_uint8_t sectors_per_cluster;
pupa_uint16_t num_reserved_sectors;
pupa_uint8_t num_fats;
pupa_uint16_t num_root_entries;
pupa_uint16_t num_total_sectors_16;
pupa_uint8_t media;
pupa_uint16_t sectors_per_fat_16;
pupa_uint16_t sectors_per_track;
pupa_uint16_t num_heads;
pupa_uint32_t num_hidden_sectors;
pupa_uint32_t num_total_sectors_32;
grub_uint8_t jmp_boot[3];
grub_uint8_t oem_name[8];
grub_uint16_t bytes_per_sector;
grub_uint8_t sectors_per_cluster;
grub_uint16_t num_reserved_sectors;
grub_uint8_t num_fats;
grub_uint16_t num_root_entries;
grub_uint16_t num_total_sectors_16;
grub_uint8_t media;
grub_uint16_t sectors_per_fat_16;
grub_uint16_t sectors_per_track;
grub_uint16_t num_heads;
grub_uint32_t num_hidden_sectors;
grub_uint32_t num_total_sectors_32;
/* The following fields are only used by FAT32. */
pupa_uint32_t sectors_per_fat_32;
pupa_uint16_t extended_flags;
pupa_uint16_t fs_version;
pupa_uint32_t root_cluster;
pupa_uint16_t fs_info;
pupa_uint16_t backup_boot_sector;
grub_uint32_t sectors_per_fat_32;
grub_uint16_t extended_flags;
grub_uint16_t fs_version;
grub_uint32_t root_cluster;
grub_uint16_t fs_info;
grub_uint16_t backup_boot_sector;
} __attribute__ ((packed));
struct pupa_fat_dir_entry
struct grub_fat_dir_entry
{
pupa_uint8_t name[11];
pupa_uint8_t attr;
pupa_uint8_t nt_reserved;
pupa_uint8_t c_time_tenth;
pupa_uint16_t c_time;
pupa_uint16_t c_date;
pupa_uint16_t a_date;
pupa_uint16_t first_cluster_high;
pupa_uint16_t w_time;
pupa_uint16_t w_date;
pupa_uint16_t first_cluster_low;
pupa_uint32_t file_size;
grub_uint8_t name[11];
grub_uint8_t attr;
grub_uint8_t nt_reserved;
grub_uint8_t c_time_tenth;
grub_uint16_t c_time;
grub_uint16_t c_date;
grub_uint16_t a_date;
grub_uint16_t first_cluster_high;
grub_uint16_t w_time;
grub_uint16_t w_date;
grub_uint16_t first_cluster_low;
grub_uint32_t file_size;
} __attribute__ ((packed));
struct pupa_fat_long_name_entry
struct grub_fat_long_name_entry
{
pupa_uint8_t id;
pupa_uint16_t name1[5];
pupa_uint8_t attr;
pupa_uint8_t reserved;
pupa_uint8_t checksum;
pupa_uint16_t name2[6];
pupa_uint16_t first_cluster;
pupa_uint16_t name3[2];
grub_uint8_t id;
grub_uint16_t name1[5];
grub_uint8_t attr;
grub_uint8_t reserved;
grub_uint8_t checksum;
grub_uint16_t name2[6];
grub_uint16_t first_cluster;
grub_uint16_t name3[2];
} __attribute__ ((packed));
struct pupa_fat_data
struct grub_fat_data
{
int logical_sector_bits;
pupa_uint32_t num_sectors;
grub_uint32_t num_sectors;
pupa_uint16_t fat_sector;
pupa_uint32_t sectors_per_fat;
grub_uint16_t fat_sector;
grub_uint32_t sectors_per_fat;
int fat_size;
pupa_uint32_t root_cluster;
pupa_uint32_t root_sector;
pupa_uint32_t num_root_sectors;
grub_uint32_t root_cluster;
grub_uint32_t root_sector;
grub_uint32_t num_root_sectors;
int cluster_bits;
pupa_uint32_t cluster_eof_mark;
pupa_uint32_t cluster_sector;
pupa_uint32_t num_clusters;
grub_uint32_t cluster_eof_mark;
grub_uint32_t cluster_sector;
grub_uint32_t num_clusters;
pupa_uint8_t attr;
pupa_ssize_t file_size;
pupa_uint32_t file_cluster;
pupa_uint32_t cur_cluster_num;
pupa_uint32_t cur_cluster;
grub_uint8_t attr;
grub_ssize_t file_size;
grub_uint32_t file_cluster;
grub_uint32_t cur_cluster_num;
grub_uint32_t cur_cluster;
};
#ifndef PUPA_UTIL
static pupa_dl_t my_mod;
#ifndef GRUB_UTIL
static grub_dl_t my_mod;
#endif
static int
@ -146,30 +146,30 @@ fat_log2 (unsigned x)
return i;
}
static struct pupa_fat_data *
pupa_fat_mount (pupa_disk_t disk)
static struct grub_fat_data *
grub_fat_mount (grub_disk_t disk)
{
struct pupa_fat_bpb bpb;
struct pupa_fat_data *data = 0;
pupa_uint32_t first_fat, magic;
struct grub_fat_bpb bpb;
struct grub_fat_data *data = 0;
grub_uint32_t first_fat, magic;
if (! disk)
goto fail;
data = (struct pupa_fat_data *) pupa_malloc (sizeof (*data));
data = (struct grub_fat_data *) grub_malloc (sizeof (*data));
if (! data)
goto fail;
/* Read the BPB. */
if (pupa_disk_read (disk, 0, 0, sizeof (bpb), (char *) &bpb))
if (grub_disk_read (disk, 0, 0, sizeof (bpb), (char *) &bpb))
goto fail;
/* Get the sizes of logical sectors and clusters. */
data->logical_sector_bits =
fat_log2 (pupa_le_to_cpu16 (bpb.bytes_per_sector));
if (data->logical_sector_bits < PUPA_DISK_SECTOR_BITS)
fat_log2 (grub_le_to_cpu16 (bpb.bytes_per_sector));
if (data->logical_sector_bits < GRUB_DISK_SECTOR_BITS)
goto fail;
data->logical_sector_bits -= PUPA_DISK_SECTOR_BITS;
data->logical_sector_bits -= GRUB_DISK_SECTOR_BITS;
data->cluster_bits = fat_log2 (bpb.sectors_per_cluster);
if (data->cluster_bits < 0)
@ -177,22 +177,22 @@ pupa_fat_mount (pupa_disk_t disk)
data->cluster_bits += data->logical_sector_bits;
/* Get information about FATs. */
data->fat_sector = (pupa_le_to_cpu16 (bpb.num_reserved_sectors)
data->fat_sector = (grub_le_to_cpu16 (bpb.num_reserved_sectors)
<< data->logical_sector_bits);
if (data->fat_sector == 0)
goto fail;
data->sectors_per_fat = ((bpb.sectors_per_fat_16
? pupa_le_to_cpu16 (bpb.sectors_per_fat_16)
: pupa_le_to_cpu32 (bpb.sectors_per_fat_32))
? grub_le_to_cpu16 (bpb.sectors_per_fat_16)
: grub_le_to_cpu32 (bpb.sectors_per_fat_32))
<< data->logical_sector_bits);
if (data->sectors_per_fat == 0)
goto fail;
/* Get the number of sectors in this volume. */
data->num_sectors = ((bpb.num_total_sectors_16
? pupa_le_to_cpu16 (bpb.num_total_sectors_16)
: pupa_le_to_cpu32 (bpb.num_total_sectors_32))
? grub_le_to_cpu16 (bpb.num_total_sectors_16)
: grub_le_to_cpu32 (bpb.num_total_sectors_32))
<< data->logical_sector_bits);
if (data->num_sectors == 0)
goto fail;
@ -203,10 +203,10 @@ pupa_fat_mount (pupa_disk_t disk)
data->root_sector = data->fat_sector + bpb.num_fats * data->sectors_per_fat;
data->num_root_sectors
= ((((pupa_uint32_t) pupa_le_to_cpu16 (bpb.num_root_entries)
* PUPA_FAT_DIR_ENTRY_SIZE
+ pupa_le_to_cpu16 (bpb.bytes_per_sector) - 1)
>> (data->logical_sector_bits + PUPA_DISK_SECTOR_BITS))
= ((((grub_uint32_t) grub_le_to_cpu16 (bpb.num_root_entries)
* GRUB_FAT_DIR_ENTRY_SIZE
+ grub_le_to_cpu16 (bpb.bytes_per_sector) - 1)
>> (data->logical_sector_bits + GRUB_DISK_SECTOR_BITS))
<< (data->logical_sector_bits));
data->cluster_sector = data->root_sector + data->num_root_sectors;
@ -220,9 +220,9 @@ pupa_fat_mount (pupa_disk_t disk)
if (! bpb.sectors_per_fat_16)
{
/* FAT32. */
pupa_uint16_t flags = pupa_le_to_cpu16 (bpb.extended_flags);
grub_uint16_t flags = grub_le_to_cpu16 (bpb.extended_flags);
data->root_cluster = pupa_le_to_cpu32 (bpb.root_cluster);
data->root_cluster = grub_le_to_cpu32 (bpb.root_cluster);
data->fat_size = 32;
data->cluster_eof_mark = 0x0ffffff8;
@ -263,14 +263,14 @@ pupa_fat_mount (pupa_disk_t disk)
if (data->num_sectors <= data->fat_sector)
goto fail;
if (pupa_disk_read (disk,
if (grub_disk_read (disk,
data->fat_sector,
0,
sizeof (first_fat),
(char *) &first_fat))
goto fail;
first_fat = pupa_le_to_cpu32 (first_fat);
first_fat = grub_le_to_cpu32 (first_fat);
if (data->fat_size == 32)
{
@ -294,26 +294,26 @@ pupa_fat_mount (pupa_disk_t disk)
/* Start from the root directory. */
data->file_cluster = data->root_cluster;
data->cur_cluster_num = ~0UL;
data->attr = PUPA_FAT_ATTR_DIRECTORY;
data->attr = GRUB_FAT_ATTR_DIRECTORY;
return data;
fail:
pupa_free (data);
pupa_error (PUPA_ERR_BAD_FS, "not a fat filesystem");
grub_free (data);
grub_error (GRUB_ERR_BAD_FS, "not a fat filesystem");
return 0;
}
/* Convert UTF-16 (little endian) to UTF8. */
static pupa_uint8_t *
pupa_fat_utf16_to_utf8 (pupa_uint8_t *dest, pupa_uint16_t *src,
pupa_size_t size)
static grub_uint8_t *
grub_fat_utf16_to_utf8 (grub_uint8_t *dest, grub_uint16_t *src,
grub_size_t size)
{
pupa_uint32_t code_high = 0;
grub_uint32_t code_high = 0;
while (size--)
{
pupa_uint32_t code = pupa_le_to_cpu16 (*src++);
grub_uint32_t code = grub_le_to_cpu16 (*src++);
if (code_high)
{
@ -366,27 +366,27 @@ pupa_fat_utf16_to_utf8 (pupa_uint8_t *dest, pupa_uint16_t *src,
return dest;
}
static pupa_ssize_t
pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
static grub_ssize_t
grub_fat_read_data (grub_disk_t disk, struct grub_fat_data *data,
void (*read_hook) (unsigned long sector,
unsigned offset, unsigned length),
pupa_ssize_t offset, pupa_ssize_t len, char *buf)
grub_ssize_t offset, grub_ssize_t len, char *buf)
{
pupa_ssize_t size;
pupa_uint32_t logical_cluster;
grub_ssize_t size;
grub_uint32_t logical_cluster;
unsigned logical_cluster_bits;
pupa_ssize_t ret = 0;
grub_ssize_t ret = 0;
unsigned long sector;
/* This is a special case. FAT12 and FAT16 doesn't have the root directory
in clusters. */
if (data->file_cluster == ~0UL)
{
size = (data->num_root_sectors << PUPA_DISK_SECTOR_BITS) - offset;
size = (data->num_root_sectors << GRUB_DISK_SECTOR_BITS) - offset;
if (size > len)
size = len;
if (pupa_disk_read (disk, data->root_sector, offset, size, buf))
if (grub_disk_read (disk, data->root_sector, offset, size, buf))
return -1;
return size;
@ -395,7 +395,7 @@ pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
/* Calculate the logical cluster number and offset. */
logical_cluster_bits = (data->cluster_bits
+ data->logical_sector_bits
+ PUPA_DISK_SECTOR_BITS);
+ GRUB_DISK_SECTOR_BITS);
logical_cluster = offset >> logical_cluster_bits;
offset &= (1 << logical_cluster_bits) - 1;
@ -410,7 +410,7 @@ pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
while (logical_cluster > data->cur_cluster_num)
{
/* Find next cluster. */
pupa_uint32_t next_cluster;
grub_uint32_t next_cluster;
unsigned long fat_offset;
switch (data->fat_size)
@ -428,12 +428,12 @@ pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
}
/* Read the FAT. */
if (pupa_disk_read (disk, data->fat_sector, fat_offset,
if (grub_disk_read (disk, data->fat_sector, fat_offset,
(data->fat_size + 7) >> 3,
(char *) &next_cluster))
return -1;
next_cluster = pupa_le_to_cpu32 (next_cluster);
next_cluster = grub_le_to_cpu32 (next_cluster);
switch (data->fat_size)
{
case 16:
@ -448,7 +448,7 @@ pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
}
#if 0
pupa_printf ("%s:%d: fat_size=%d, next_cluster=%u\n",
grub_printf ("%s:%d: fat_size=%d, next_cluster=%u\n",
__FILE__, __LINE__, data->fat_size, next_cluster);
#endif
@ -458,7 +458,7 @@ pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
if (next_cluster < 2 || next_cluster >= data->num_clusters)
{
pupa_error (PUPA_ERR_BAD_FS, "invalid cluster %u",
grub_error (GRUB_ERR_BAD_FS, "invalid cluster %u",
next_cluster);
return -1;
}
@ -476,9 +476,9 @@ pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
size = len;
disk->read_hook = read_hook;
pupa_disk_read (disk, sector, offset, size, buf);
grub_disk_read (disk, sector, offset, size, buf);
disk->read_hook = 0;
if (pupa_errno)
if (grub_errno)
return -1;
len -= size;
@ -495,22 +495,22 @@ pupa_fat_read_data (pupa_disk_t disk, struct pupa_fat_data *data,
next path. If there is no next path or an error occurs, return NULL.
If HOOK is specified, call it with each file name. */
static char *
pupa_fat_find_dir (pupa_disk_t disk, struct pupa_fat_data *data,
grub_fat_find_dir (grub_disk_t disk, struct grub_fat_data *data,
const char *path,
int (*hook) (const char *filename, int dir))
{
struct pupa_fat_dir_entry dir;
struct grub_fat_dir_entry dir;
char *dirname, *dirp;
char *filename, *filep = 0;
pupa_uint16_t *unibuf;
grub_uint16_t *unibuf;
int slot = -1, slots = -1;
int checksum = -1;
pupa_ssize_t offset = -sizeof(dir);
grub_ssize_t offset = -sizeof(dir);
int call_hook;
if (! (data->attr & PUPA_FAT_ATTR_DIRECTORY))
if (! (data->attr & GRUB_FAT_ATTR_DIRECTORY))
{
pupa_error (PUPA_ERR_BAD_FILE_TYPE, "not a directory");
grub_error (GRUB_ERR_BAD_FILE_TYPE, "not a directory");
return 0;
}
@ -518,32 +518,32 @@ pupa_fat_find_dir (pupa_disk_t disk, struct pupa_fat_data *data,
while (*path == '/')
path++;
dirp = pupa_strchr (path, '/');
dirp = grub_strchr (path, '/');
if (dirp)
{
unsigned len = dirp - path;
dirname = pupa_malloc (len + 1);
dirname = grub_malloc (len + 1);
if (! dirname)
return 0;
pupa_memcpy (dirname, path, len);
grub_memcpy (dirname, path, len);
dirname[len] = '\0';
}
else
/* This is actually a file. */
dirname = pupa_strdup (path);
dirname = grub_strdup (path);
call_hook = (! dirp && hook);
/* Allocate space enough to hold a long name. */
filename = pupa_malloc (0x40 * 13 * 4 + 1);
unibuf = (pupa_uint16_t *) pupa_malloc (0x40 * 13 * 2);
filename = grub_malloc (0x40 * 13 * 4 + 1);
unibuf = (grub_uint16_t *) grub_malloc (0x40 * 13 * 2);
if (! filename || ! unibuf)
{
pupa_free (filename);
pupa_free (unibuf);
pupa_free (dirname);
grub_free (filename);
grub_free (unibuf);
grub_free (dirname);
return 0;
}
@ -555,23 +555,23 @@ pupa_fat_find_dir (pupa_disk_t disk, struct pupa_fat_data *data,
offset += sizeof (dir);
/* Read a directory entry. */
if ((pupa_fat_read_data (disk, data, 0,
if ((grub_fat_read_data (disk, data, 0,
offset, sizeof (dir), (char *) &dir)
!= sizeof (dir))
|| dir.name[0] == 0)
{
if (pupa_errno == PUPA_ERR_NONE && ! call_hook)
pupa_error (PUPA_ERR_FILE_NOT_FOUND, "file not found");
if (grub_errno == GRUB_ERR_NONE && ! call_hook)
grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
break;
}
/* Handle long name entries. */
if (dir.attr == PUPA_FAT_ATTR_LONG_NAME)
if (dir.attr == GRUB_FAT_ATTR_LONG_NAME)
{
struct pupa_fat_long_name_entry *long_name
= (struct pupa_fat_long_name_entry *) &dir;
pupa_uint8_t id = long_name->id;
struct grub_fat_long_name_entry *long_name
= (struct grub_fat_long_name_entry *) &dir;
grub_uint8_t id = long_name->id;
if (id & 0x40)
{
@ -587,14 +587,14 @@ pupa_fat_find_dir (pupa_disk_t disk, struct pupa_fat_data *data,
}
slot--;
pupa_memcpy (unibuf + slot * 13, long_name->name1, 5 * 2);
pupa_memcpy (unibuf + slot * 13 + 5, long_name->name2, 6 * 2);
pupa_memcpy (unibuf + slot * 13 + 11, long_name->name3, 2 * 2);
grub_memcpy (unibuf + slot * 13, long_name->name1, 5 * 2);
grub_memcpy (unibuf + slot * 13 + 5, long_name->name2, 6 * 2);
grub_memcpy (unibuf + slot * 13 + 11, long_name->name3, 2 * 2);
continue;
}
/* Check if this entry is valid. */
if (dir.name[0] == 0xe5 || (dir.attr & ~PUPA_FAT_ATTR_VALID))
if (dir.name[0] == 0xe5 || (dir.attr & ~GRUB_FAT_ATTR_VALID))
continue;
/* This is a workaround for Japanese. */
@ -603,28 +603,28 @@ pupa_fat_find_dir (pupa_disk_t disk, struct pupa_fat_data *data,
if (checksum != -1 && slot == 0)
{
pupa_uint8_t sum;
grub_uint8_t sum;
for (sum = 0, i = 0; i < sizeof (dir.name); i++)
sum = ((sum >> 1) | (sum << 7)) + dir.name[i];
if (sum == checksum)
{
*pupa_fat_utf16_to_utf8 (filename, unibuf, slots * 13) = '\0';
*grub_fat_utf16_to_utf8 (filename, unibuf, slots * 13) = '\0';
if (*dirname == '\0' && call_hook)
{
if (hook (filename, dir.attr & PUPA_FAT_ATTR_DIRECTORY))
if (hook (filename, dir.attr & GRUB_FAT_ATTR_DIRECTORY))
break;
checksum = -1;
continue;
}
if (pupa_strcmp (dirname, filename) == 0)
if (grub_strcmp (dirname, filename) == 0)
{
if (call_hook)
hook (filename, dir.attr & PUPA_FAT_ATTR_DIRECTORY);
hook (filename, dir.attr & GRUB_FAT_ATTR_DIRECTORY);
break;
}
@ -636,13 +636,13 @@ pupa_fat_find_dir (pupa_disk_t disk, struct pupa_fat_data *data,
/* Convert the 8.3 file name. */
filep = filename;
for (i = 0; i < 8 && dir.name[i] && ! pupa_isspace (dir.name[i]); i++)
*filep++ = pupa_tolower (dir.name[i]);
for (i = 0; i < 8 && dir.name[i] && ! grub_isspace (dir.name[i]); i++)
*filep++ = grub_tolower (dir.name[i]);
*filep = '.';
for (i = 8; i < 11 && dir.name[i] && ! pupa_isspace (dir.name[i]); i++)
*++filep = pupa_tolower (dir.name[i]);
for (i = 8; i < 11 && dir.name[i] && ! grub_isspace (dir.name[i]); i++)
*++filep = grub_tolower (dir.name[i]);
if (*filep != '.')
filep++;
@ -651,174 +651,174 @@ pupa_fat_find_dir (pupa_disk_t disk, struct pupa_fat_data *data,
if (*dirname == '\0' && call_hook)
{
if (hook (filename, dir.attr & PUPA_FAT_ATTR_DIRECTORY))
if (hook (filename, dir.attr & GRUB_FAT_ATTR_DIRECTORY))
break;
}
else if (pupa_strcmp (dirname, filename) == 0)
else if (grub_strcmp (dirname, filename) == 0)
{
if (call_hook)
hook (filename, dir.attr & PUPA_FAT_ATTR_DIRECTORY);
hook (filename, dir.attr & GRUB_FAT_ATTR_DIRECTORY);
break;
}
}
pupa_free (filename);
pupa_free (dirname);
grub_free (filename);
grub_free (dirname);
data->attr = dir.attr;
data->file_size = pupa_le_to_cpu32 (dir.file_size);
data->file_cluster = ((pupa_le_to_cpu16 (dir.first_cluster_high) << 16)
| pupa_le_to_cpu16 (dir.first_cluster_low));
data->file_size = grub_le_to_cpu32 (dir.file_size);
data->file_cluster = ((grub_le_to_cpu16 (dir.first_cluster_high) << 16)
| grub_le_to_cpu16 (dir.first_cluster_low));
data->cur_cluster_num = ~0UL;
return dirp;
}
static pupa_err_t
pupa_fat_dir (pupa_device_t device, const char *path,
static grub_err_t
grub_fat_dir (grub_device_t device, const char *path,
int (*hook) (const char *filename, int dir))
{
struct pupa_fat_data *data = 0;
pupa_disk_t disk = device->disk;
struct grub_fat_data *data = 0;
grub_disk_t disk = device->disk;
char *p = (char *) path;
#ifndef PUPA_UTIL
pupa_dl_ref (my_mod);
#ifndef GRUB_UTIL
grub_dl_ref (my_mod);
#endif
data = pupa_fat_mount (disk);
data = grub_fat_mount (disk);
if (! data)
goto fail;
do
{
p = pupa_fat_find_dir (disk, data, p, hook);
p = grub_fat_find_dir (disk, data, p, hook);
}
while (p && pupa_errno == PUPA_ERR_NONE);
while (p && grub_errno == GRUB_ERR_NONE);
fail:
pupa_free (data);
grub_free (data);
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
return pupa_errno;
return grub_errno;
}
static pupa_err_t
pupa_fat_open (pupa_file_t file, const char *name)
static grub_err_t
grub_fat_open (grub_file_t file, const char *name)
{
struct pupa_fat_data *data = 0;
struct grub_fat_data *data = 0;
char *p = (char *) name;
#ifndef PUPA_UTIL
pupa_dl_ref (my_mod);
#ifndef GRUB_UTIL
grub_dl_ref (my_mod);
#endif
data = pupa_fat_mount (file->device->disk);
data = grub_fat_mount (file->device->disk);
if (! data)
goto fail;
do
{
p = pupa_fat_find_dir (file->device->disk, data, p, 0);
if (pupa_errno != PUPA_ERR_NONE)
p = grub_fat_find_dir (file->device->disk, data, p, 0);
if (grub_errno != GRUB_ERR_NONE)
goto fail;
}
while (p);
if (data->attr & PUPA_FAT_ATTR_DIRECTORY)
if (data->attr & GRUB_FAT_ATTR_DIRECTORY)
{
pupa_error (PUPA_ERR_BAD_FILE_TYPE, "not a file");
grub_error (GRUB_ERR_BAD_FILE_TYPE, "not a file");
goto fail;
}
file->data = data;
file->size = data->file_size;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
fail:
pupa_free (data);
grub_free (data);
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
return pupa_errno;
return grub_errno;
}
static pupa_ssize_t
pupa_fat_read (pupa_file_t file, char *buf, pupa_ssize_t len)
static grub_ssize_t
grub_fat_read (grub_file_t file, char *buf, grub_ssize_t len)
{
return pupa_fat_read_data (file->device->disk, file->data, file->read_hook,
return grub_fat_read_data (file->device->disk, file->data, file->read_hook,
file->offset, len, buf);
}
static pupa_err_t
pupa_fat_close (pupa_file_t file)
static grub_err_t
grub_fat_close (grub_file_t file)
{
pupa_free (file->data);
grub_free (file->data);
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
return pupa_errno;
return grub_errno;
}
static pupa_err_t
pupa_fat_label (pupa_device_t device, char **label)
static grub_err_t
grub_fat_label (grub_device_t device, char **label)
{
struct pupa_fat_data *data;
pupa_disk_t disk = device->disk;
pupa_ssize_t offset = -sizeof(struct pupa_fat_dir_entry);
struct grub_fat_data *data;
grub_disk_t disk = device->disk;
grub_ssize_t offset = -sizeof(struct grub_fat_dir_entry);
#ifndef PUPA_UTIL
pupa_dl_ref (my_mod);
#ifndef GRUB_UTIL
grub_dl_ref (my_mod);
#endif
data = pupa_fat_mount (disk);
data = grub_fat_mount (disk);
if (! data)
goto fail;
if (! (data->attr & PUPA_FAT_ATTR_DIRECTORY))
if (! (data->attr & GRUB_FAT_ATTR_DIRECTORY))
{
pupa_error (PUPA_ERR_BAD_FILE_TYPE, "not a directory");
grub_error (GRUB_ERR_BAD_FILE_TYPE, "not a directory");
return 0;
}
while (1)
{
struct pupa_fat_dir_entry dir;
struct grub_fat_dir_entry dir;
/* Adjust the offset. */
offset += sizeof (dir);
/* Read a directory entry. */
if ((pupa_fat_read_data (disk, data, 0,
if ((grub_fat_read_data (disk, data, 0,
offset, sizeof (dir), (char *) &dir)
!= sizeof (dir))
|| dir.name[0] == 0)
{
if (pupa_errno != PUPA_ERR_NONE)
if (grub_errno != GRUB_ERR_NONE)
goto fail;
else
{
*label = 0;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
}
if (dir.attr == PUPA_FAT_ATTR_VOLUME_ID)
if (dir.attr == GRUB_FAT_ATTR_VOLUME_ID)
{
*label = pupa_strndup (dir.name, 11);
return PUPA_ERR_NONE;
*label = grub_strndup (dir.name, 11);
return GRUB_ERR_NONE;
}
}
@ -826,47 +826,47 @@ pupa_fat_label (pupa_device_t device, char **label)
fail:
#ifndef PUPA_UTIL
pupa_dl_unref (my_mod);
#ifndef GRUB_UTIL
grub_dl_unref (my_mod);
#endif
pupa_free (data);
grub_free (data);
return pupa_errno;
return grub_errno;
}
static struct pupa_fs pupa_fat_fs =
static struct grub_fs grub_fat_fs =
{
.name = "fat",
.dir = pupa_fat_dir,
.open = pupa_fat_open,
.read = pupa_fat_read,
.close = pupa_fat_close,
.label = pupa_fat_label,
.dir = grub_fat_dir,
.open = grub_fat_open,
.read = grub_fat_read,
.close = grub_fat_close,
.label = grub_fat_label,
.next = 0
};
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
void
pupa_fat_init (void)
grub_fat_init (void)
{
pupa_fs_register (&pupa_fat_fs);
grub_fs_register (&grub_fat_fs);
}
void
pupa_fat_fini (void)
grub_fat_fini (void)
{
pupa_fs_unregister (&pupa_fat_fs);
grub_fs_unregister (&grub_fat_fs);
}
#else /* ! PUPA_UTIL */
PUPA_MOD_INIT
#else /* ! GRUB_UTIL */
GRUB_MOD_INIT
{
pupa_fs_register (&pupa_fat_fs);
grub_fs_register (&grub_fat_fs);
my_mod = mod;
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_fs_unregister (&pupa_fat_fs);
grub_fs_unregister (&grub_fat_fs);
}
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */

View file

@ -118,7 +118,7 @@ UNDSYMFILES += #{undsym}
#{@name}: #{pre_obj} #{mod_obj}
-rm -f $@
$(LD) -r -o $@ $^
$(STRIP) --strip-unneeded -K pupa_mod_init -K pupa_mod_fini -R .note -R .comment $@
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
#{pre_obj}: #{objs_str}
-rm -f $@
@ -190,11 +190,11 @@ MOSTLYCLEANFILES += #{deps_str}
dir = File.dirname(src)
"#{obj}: #{src}
$(BUILD_CC) -I#{dir} -I$(srcdir)/#{dir} $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(#{prefix}_CFLAGS) -c -o $@ $<
$(BUILD_CC) -I#{dir} -I$(srcdir)/#{dir} $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(#{prefix}_CFLAGS) -c -o $@ $<
#{dep}: #{src}
set -e; \
$(BUILD_CC) -I#{dir} -I$(srcdir)/#{dir} $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DPUPA_UTIL=1 $(#{prefix}_CFLAGS) -M $< \
$(BUILD_CC) -I#{dir} -I$(srcdir)/#{dir} $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(#{prefix}_CFLAGS) -M $< \
| sed 's,#{Regexp.quote(fake_obj)}[ :]*,#{obj} $@ : ,g' > $@; \
[ -s $@ ] || rm -f $@

View file

@ -19,10 +19,10 @@ deps="$2"
cat <<EOF
/* This file is automatically generated by genmodsrc.sh. DO NOT EDIT! */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -33,16 +33,16 @@ cat <<EOF
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/dl.h>
#include <grub/dl.h>
EOF
echo "PUPA_MOD_NAME(${mod_name});"
echo "GRUB_MOD_NAME(${mod_name});"
for mod in `grep "^${mod_name}:" ${deps} | sed 's/^[^:]*://'`; do
echo "PUPA_MOD_DEP(${mod});"
echo "GRUB_MOD_DEP(${mod});"
done

View file

@ -14,10 +14,10 @@
cat <<EOF
/* This file is automatically generated by gensymlist.sh. DO NOT EDIT! */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -28,7 +28,7 @@ cat <<EOF
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
@ -41,7 +41,7 @@ done
cat <<EOF
void
pupa_register_exported_symbols (void)
grub_register_exported_symbols (void)
{
EOF
@ -60,6 +60,6 @@ cat <<EOF
};
for (p = tab; p->name; p++)
pupa_dl_register_symbol (p->name, p->addr, 0);
grub_dl_register_symbol (p->name, p->addr, 0);
}
EOF

View file

@ -1,6 +1,6 @@
/* hello.c - test module for dynamic loading */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
* Copyright (C) 2003 NIIBE Yutaka <gniibe@m17n.org>
*
@ -19,30 +19,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/types.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <pupa/err.h>
#include <pupa/dl.h>
#include <pupa/normal.h>
#include <grub/types.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/err.h>
#include <grub/dl.h>
#include <grub/normal.h>
static pupa_err_t
pupa_cmd_hello (struct pupa_arg_list *state __attribute__ ((unused)),
static grub_err_t
grub_cmd_hello (struct grub_arg_list *state __attribute__ ((unused)),
int argc __attribute__ ((unused)),
char **args __attribute__ ((unused)))
{
pupa_printf ("Hello World\n");
grub_printf ("Hello World\n");
return 0;
}
PUPA_MOD_INIT
GRUB_MOD_INIT
{
(void)mod; /* To stop warning. */
pupa_register_command ("hello", pupa_cmd_hello, PUPA_COMMAND_FLAG_BOTH,
grub_register_command ("hello", grub_cmd_hello, GRUB_COMMAND_FLAG_BOTH,
"hello", "Say hello", 0);
}
PUPA_MOD_FINI
GRUB_MOD_FINI
{
pupa_unregister_command ("hello");
grub_unregister_command ("hello");
}

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,18 +13,18 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_ARG_HEADER
#define PUPA_ARG_HEADER 1
#ifndef GRUB_ARG_HEADER
#define GRUB_ARG_HEADER 1
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <grub/symbol.h>
#include <grub/err.h>
#include <grub/types.h>
enum pupa_arg_type
enum grub_arg_type
{
ARG_TYPE_NONE,
ARG_TYPE_STRING,
@ -35,32 +35,32 @@ enum pupa_arg_type
ARG_TYPE_PATHNAME
};
typedef enum pupa_arg_type pupa_arg_type_t;
typedef enum grub_arg_type grub_arg_type_t;
/* Flags for the option field op pupa_arg_option. */
#define PUPA_ARG_OPTION_OPTIONAL 1 << 1
/* Flags for the option field op grub_arg_option. */
#define GRUB_ARG_OPTION_OPTIONAL 1 << 1
enum pupa_key_type
enum grub_key_type
{
PUPA_KEY_ARG = -1,
PUPA_KEY_END = -2
GRUB_KEY_ARG = -1,
GRUB_KEY_END = -2
};
typedef enum pupa_key_type pupa_arg_key_type_t;
typedef enum grub_key_type grub_arg_key_type_t;
struct pupa_arg_option
struct grub_arg_option
{
char *longarg;
char shortarg;
int flags;
char *doc;
char *arg;
pupa_arg_type_t type;
grub_arg_type_t type;
};
struct pupa_arg_list
struct grub_arg_list
{
int set;
char *arg;
};
#endif /* ! PUPA_ARG_HEADER */
#endif /* ! GRUB_ARG_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,12 +17,12 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_BOOT_HEADER
#define PUPA_BOOT_HEADER 1
#ifndef GRUB_BOOT_HEADER
#define GRUB_BOOT_HEADER 1
#define PUPA_BOOT_VERSION_MAJOR 4
#define PUPA_BOOT_VERSION_MINOR 0
#define PUPA_BOOT_VERSION ((PUPA_BOOT_VERSION_MINOR << 8) \
| PUPA_BOOT_VERSION_MAJOR)
#define GRUB_BOOT_VERSION_MAJOR 4
#define GRUB_BOOT_VERSION_MINOR 0
#define GRUB_BOOT_VERSION ((GRUB_BOOT_VERSION_MINOR << 8) \
| GRUB_BOOT_VERSION_MAJOR)
#endif /* ! PUPA_BOOT_HEADER */
#endif /* ! GRUB_BOOT_HEADER */

View file

@ -1,9 +1,9 @@
/* device.h - device manager */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,31 +14,31 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_DEVICE_HEADER
#define PUPA_DEVICE_HEADER 1
#ifndef GRUB_DEVICE_HEADER
#define GRUB_DEVICE_HEADER 1
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <grub/symbol.h>
#include <grub/err.h>
struct pupa_disk;
struct pupa_net;
struct pupa_fs;
struct grub_disk;
struct grub_net;
struct grub_fs;
struct pupa_device
struct grub_device
{
struct pupa_disk *disk;
struct pupa_net *net;
struct grub_disk *disk;
struct grub_net *net;
};
typedef struct pupa_device *pupa_device_t;
typedef struct grub_device *grub_device_t;
pupa_device_t EXPORT_FUNC(pupa_device_open) (const char *name);
pupa_err_t EXPORT_FUNC(pupa_device_close) (pupa_device_t device);
grub_device_t EXPORT_FUNC(grub_device_open) (const char *name);
grub_err_t EXPORT_FUNC(grub_device_close) (grub_device_t device);
pupa_err_t EXPORT_FUNC(pupa_device_set_root) (const char *name);
const char *EXPORT_FUNC(pupa_device_get_root) (void);
grub_err_t EXPORT_FUNC(grub_device_set_root) (const char *name);
const char *EXPORT_FUNC(grub_device_get_root) (void);
#endif /* ! PUPA_DEVICE_HEADER */
#endif /* ! GRUB_DEVICE_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,22 +13,22 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_DISK_HEADER
#define PUPA_DISK_HEADER 1
#ifndef GRUB_DISK_HEADER
#define GRUB_DISK_HEADER 1
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <pupa/device.h>
#include <grub/symbol.h>
#include <grub/err.h>
#include <grub/types.h>
#include <grub/device.h>
struct pupa_disk;
struct grub_disk;
/* Disk device. */
struct pupa_disk_dev
struct grub_disk_dev
{
/* The device name. */
const char *name;
@ -37,34 +37,34 @@ struct pupa_disk_dev
int (*iterate) (int (*hook) (const char *name));
/* Open the device named NAME, and set up DISK. */
pupa_err_t (*open) (const char *name, struct pupa_disk *disk);
grub_err_t (*open) (const char *name, struct grub_disk *disk);
/* Close the disk DISK. */
void (*close) (struct pupa_disk *disk);
void (*close) (struct grub_disk *disk);
/* Read SIZE sectors from the sector SECTOR of the disk DISK into BUF. */
pupa_err_t (*read) (struct pupa_disk *disk, unsigned long sector,
grub_err_t (*read) (struct grub_disk *disk, unsigned long sector,
unsigned long size, char *buf);
/* Write SIZE sectors from BUF into the sector SECTOR of the disk DISK. */
pupa_err_t (*write) (struct pupa_disk *disk, unsigned long sector,
grub_err_t (*write) (struct grub_disk *disk, unsigned long sector,
unsigned long size, const char *buf);
/* The next disk device. */
struct pupa_disk_dev *next;
struct grub_disk_dev *next;
};
typedef struct pupa_disk_dev *pupa_disk_dev_t;
typedef struct grub_disk_dev *grub_disk_dev_t;
struct pupa_partition;
struct grub_partition;
/* Disk. */
struct pupa_disk
struct grub_disk
{
/* The disk name. */
const char *name;
/* The underlying disk device. */
pupa_disk_dev_t dev;
grub_disk_dev_t dev;
/* The total number of sectors. */
unsigned long total_sectors;
@ -76,7 +76,7 @@ struct pupa_disk
unsigned long id;
/* The partition information. This is machine-specific. */
struct pupa_partition *partition;
struct grub_partition *partition;
/* Called when a sector was read. */
void (*read_hook) (unsigned long sector, unsigned offset, unsigned length);
@ -84,40 +84,40 @@ struct pupa_disk
/* Device-specific data. */
void *data;
};
typedef struct pupa_disk *pupa_disk_t;
typedef struct grub_disk *grub_disk_t;
/* The sector size. */
#define PUPA_DISK_SECTOR_SIZE 0x200
#define PUPA_DISK_SECTOR_BITS 9
#define GRUB_DISK_SECTOR_SIZE 0x200
#define GRUB_DISK_SECTOR_BITS 9
/* The maximum number of disk caches. */
#define PUPA_DISK_CACHE_NUM 1021
#define GRUB_DISK_CACHE_NUM 1021
/* The size of a disk cache in sector units. */
#define PUPA_DISK_CACHE_SIZE 8
#define PUPA_DISK_CACHE_BITS 3
#define GRUB_DISK_CACHE_SIZE 8
#define GRUB_DISK_CACHE_BITS 3
/* This is called from the memory manager. */
void pupa_disk_cache_invalidate_all (void);
void grub_disk_cache_invalidate_all (void);
void EXPORT_FUNC(pupa_disk_dev_register) (pupa_disk_dev_t dev);
void EXPORT_FUNC(pupa_disk_dev_unregister) (pupa_disk_dev_t dev);
void EXPORT_FUNC(pupa_disk_dev_iterate) (int (*hook) (const char *name));
void EXPORT_FUNC(grub_disk_dev_register) (grub_disk_dev_t dev);
void EXPORT_FUNC(grub_disk_dev_unregister) (grub_disk_dev_t dev);
void EXPORT_FUNC(grub_disk_dev_iterate) (int (*hook) (const char *name));
pupa_disk_t EXPORT_FUNC(pupa_disk_open) (const char *name);
void EXPORT_FUNC(pupa_disk_close) (pupa_disk_t disk);
pupa_err_t EXPORT_FUNC(pupa_disk_read) (pupa_disk_t disk,
grub_disk_t EXPORT_FUNC(grub_disk_open) (const char *name);
void EXPORT_FUNC(grub_disk_close) (grub_disk_t disk);
grub_err_t EXPORT_FUNC(grub_disk_read) (grub_disk_t disk,
unsigned long sector,
unsigned long offset,
unsigned long size,
char *buf);
pupa_err_t EXPORT_FUNC(pupa_disk_write) (pupa_disk_t disk,
grub_err_t EXPORT_FUNC(grub_disk_write) (grub_disk_t disk,
unsigned long sector,
unsigned long offset,
unsigned long size,
const char *buf);
pupa_err_t EXPORT_FUNC(pupa_print_partinfo) (pupa_device_t disk,
grub_err_t EXPORT_FUNC(grub_print_partinfo) (grub_device_t disk,
char *partname);
#endif /* ! PUPA_DISK_HEADER */
#endif /* ! GRUB_DISK_HEADER */

View file

@ -1,9 +1,9 @@
/* dl.h - types and prototypes for loadable module support */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,77 +14,77 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_DL_H
#define PUPA_DL_H 1
#ifndef GRUB_DL_H
#define GRUB_DL_H 1
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <grub/symbol.h>
#include <grub/err.h>
#include <grub/types.h>
#define PUPA_MOD_INIT \
static void pupa_mod_init (pupa_dl_t mod) __attribute__ ((unused)); \
#define GRUB_MOD_INIT \
static void grub_mod_init (grub_dl_t mod) __attribute__ ((unused)); \
static void \
pupa_mod_init (pupa_dl_t mod)
grub_mod_init (grub_dl_t mod)
#define PUPA_MOD_FINI \
static void pupa_mod_fini (void) __attribute__ ((unused)); \
#define GRUB_MOD_FINI \
static void grub_mod_fini (void) __attribute__ ((unused)); \
static void \
pupa_mod_fini (void)
grub_mod_fini (void)
#define PUPA_MOD_NAME(name) \
#define GRUB_MOD_NAME(name) \
__asm__ (".section .modname,\"S\"\n.string \"" #name "\"\n.previous")
#define PUPA_MOD_DEP(name) \
#define GRUB_MOD_DEP(name) \
__asm__ (".section .moddeps,\"S\"\n.string \"" #name "\"\n.previous")
struct pupa_dl_segment
struct grub_dl_segment
{
struct pupa_dl_segment *next;
struct grub_dl_segment *next;
void *addr;
pupa_size_t size;
grub_size_t size;
unsigned section;
};
typedef struct pupa_dl_segment *pupa_dl_segment_t;
typedef struct grub_dl_segment *grub_dl_segment_t;
struct pupa_dl;
struct grub_dl;
struct pupa_dl_dep
struct grub_dl_dep
{
struct pupa_dl_dep *next;
struct pupa_dl *mod;
struct grub_dl_dep *next;
struct grub_dl *mod;
};
typedef struct pupa_dl_dep *pupa_dl_dep_t;
typedef struct grub_dl_dep *grub_dl_dep_t;
struct pupa_dl
struct grub_dl
{
char *name;
int ref_count;
pupa_dl_dep_t dep;
pupa_dl_segment_t segment;
void (*init) (struct pupa_dl *mod);
grub_dl_dep_t dep;
grub_dl_segment_t segment;
void (*init) (struct grub_dl *mod);
void (*fini) (void);
};
typedef struct pupa_dl *pupa_dl_t;
typedef struct grub_dl *grub_dl_t;
pupa_dl_t EXPORT_FUNC(pupa_dl_load_file) (const char *filename);
pupa_dl_t EXPORT_FUNC(pupa_dl_load) (const char *name);
pupa_dl_t pupa_dl_load_core (void *addr, pupa_size_t size);
int EXPORT_FUNC(pupa_dl_unload) (pupa_dl_t mod);
void pupa_dl_unload_unneeded (void);
void pupa_dl_unload_all (void);
int EXPORT_FUNC(pupa_dl_ref) (pupa_dl_t mod);
int EXPORT_FUNC(pupa_dl_unref) (pupa_dl_t mod);
void EXPORT_FUNC(pupa_dl_iterate) (int (*hook) (pupa_dl_t mod));
pupa_dl_t EXPORT_FUNC(pupa_dl_get) (const char *name);
pupa_err_t EXPORT_FUNC(pupa_dl_register_symbol) (const char *name, void *addr,
pupa_dl_t mod);
void *EXPORT_FUNC(pupa_dl_resolve_symbol) (const char *name);
grub_dl_t EXPORT_FUNC(grub_dl_load_file) (const char *filename);
grub_dl_t EXPORT_FUNC(grub_dl_load) (const char *name);
grub_dl_t grub_dl_load_core (void *addr, grub_size_t size);
int EXPORT_FUNC(grub_dl_unload) (grub_dl_t mod);
void grub_dl_unload_unneeded (void);
void grub_dl_unload_all (void);
int EXPORT_FUNC(grub_dl_ref) (grub_dl_t mod);
int EXPORT_FUNC(grub_dl_unref) (grub_dl_t mod);
void EXPORT_FUNC(grub_dl_iterate) (int (*hook) (grub_dl_t mod));
grub_dl_t EXPORT_FUNC(grub_dl_get) (const char *name);
grub_err_t EXPORT_FUNC(grub_dl_register_symbol) (const char *name, void *addr,
grub_dl_t mod);
void *EXPORT_FUNC(grub_dl_resolve_symbol) (const char *name);
int pupa_arch_dl_check_header (void *ehdr, pupa_size_t size);
pupa_err_t pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr);
int grub_arch_dl_check_header (void *ehdr, grub_size_t size);
grub_err_t grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr);
#endif /* ! PUPA_DL_H */
#endif /* ! GRUB_DL_H */

View file

@ -17,40 +17,40 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#ifndef PUPA_ELF_H
#define PUPA_ELF_H 1
#ifndef GRUB_ELF_H
#define GRUB_ELF_H 1
/* Standard ELF types. */
#include <pupa/types.h>
#include <grub/types.h>
/* Type for a 16-bit quantity. */
typedef pupa_uint16_t Elf32_Half;
typedef pupa_uint16_t Elf64_Half;
typedef grub_uint16_t Elf32_Half;
typedef grub_uint16_t Elf64_Half;
/* Types for signed and unsigned 32-bit quantities. */
typedef pupa_uint32_t Elf32_Word;
typedef pupa_int32_t Elf32_Sword;
typedef pupa_uint32_t Elf64_Word;
typedef pupa_int32_t Elf64_Sword;
typedef grub_uint32_t Elf32_Word;
typedef grub_int32_t Elf32_Sword;
typedef grub_uint32_t Elf64_Word;
typedef grub_int32_t Elf64_Sword;
/* Types for signed and unsigned 64-bit quantities. */
typedef pupa_uint64_t Elf32_Xword;
typedef pupa_int64_t Elf32_Sxword;
typedef pupa_uint64_t Elf64_Xword;
typedef pupa_int64_t Elf64_Sxword;
typedef grub_uint64_t Elf32_Xword;
typedef grub_int64_t Elf32_Sxword;
typedef grub_uint64_t Elf64_Xword;
typedef grub_int64_t Elf64_Sxword;
/* Type of addresses. */
typedef pupa_uint32_t Elf32_Addr;
typedef pupa_uint64_t Elf64_Addr;
typedef grub_uint32_t Elf32_Addr;
typedef grub_uint64_t Elf64_Addr;
/* Type of file offsets. */
typedef pupa_uint32_t Elf32_Off;
typedef pupa_uint64_t Elf64_Off;
typedef grub_uint32_t Elf32_Off;
typedef grub_uint64_t Elf64_Off;
/* Type for section indices, which are 16-bit quantities. */
typedef pupa_uint16_t Elf32_Section;
typedef pupa_uint16_t Elf64_Section;
typedef grub_uint16_t Elf32_Section;
typedef grub_uint16_t Elf64_Section;
/* Type for version symbol information. */
typedef Elf32_Half Elf32_Versym;
@ -2310,4 +2310,4 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_X86_64_NUM 24
#endif /* ! PUPA_ELF_H */
#endif /* ! GRUB_ELF_H */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,37 +13,37 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_ENV_HEADER
#define PUPA_ENV_HEADER 1
#ifndef GRUB_ENV_HEADER
#define GRUB_ENV_HEADER 1
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <grub/symbol.h>
#include <grub/err.h>
#include <grub/types.h>
struct pupa_env_var
struct grub_env_var
{
char *name;
char *value;
pupa_err_t (*read_hook) (struct pupa_env_var *var, char **val);
pupa_err_t (*write_hook) (struct pupa_env_var *var);
struct pupa_env_var *next;
struct pupa_env_var **prevp;
struct pupa_env_var *sort_next;
struct pupa_env_var **sort_prevp;
grub_err_t (*read_hook) (struct grub_env_var *var, char **val);
grub_err_t (*write_hook) (struct grub_env_var *var);
struct grub_env_var *next;
struct grub_env_var **prevp;
struct grub_env_var *sort_next;
struct grub_env_var **sort_prevp;
};
pupa_err_t EXPORT_FUNC(pupa_env_set) (const char *var, const char *val);
char *EXPORT_FUNC(pupa_env_get) (const char *name);
void EXPORT_FUNC(pupa_env_unset) (const char *name);
void EXPORT_FUNC(pupa_env_iterate) (int (* func) (struct pupa_env_var *var));
pupa_err_t EXPORT_FUNC(pupa_register_variable_hook) (const char *var,
pupa_err_t (*read_hook)
(struct pupa_env_var *var, char **val),
pupa_err_t (*write_hook)
(struct pupa_env_var *var));
grub_err_t EXPORT_FUNC(grub_env_set) (const char *var, const char *val);
char *EXPORT_FUNC(grub_env_get) (const char *name);
void EXPORT_FUNC(grub_env_unset) (const char *name);
void EXPORT_FUNC(grub_env_iterate) (int (* func) (struct grub_env_var *var));
grub_err_t EXPORT_FUNC(grub_register_variable_hook) (const char *var,
grub_err_t (*read_hook)
(struct grub_env_var *var, char **val),
grub_err_t (*write_hook)
(struct grub_env_var *var));
#endif /* ! PUPA_ENV_HEADER */
#endif /* ! GRUB_ENV_HEADER */

View file

@ -1,9 +1,9 @@
/* err.h - error numbers and prototypes */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,49 +14,49 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_ERR_HEADER
#define PUPA_ERR_HEADER 1
#ifndef GRUB_ERR_HEADER
#define GRUB_ERR_HEADER 1
#include <pupa/symbol.h>
#include <grub/symbol.h>
typedef enum
{
PUPA_ERR_NONE = 0,
PUPA_ERR_BAD_MODULE,
PUPA_ERR_OUT_OF_MEMORY,
PUPA_ERR_BAD_FILE_TYPE,
PUPA_ERR_FILE_NOT_FOUND,
PUPA_ERR_FILE_READ_ERROR,
PUPA_ERR_BAD_FILENAME,
PUPA_ERR_UNKNOWN_FS,
PUPA_ERR_BAD_FS,
PUPA_ERR_BAD_NUMBER,
PUPA_ERR_OUT_OF_RANGE,
PUPA_ERR_UNKNOWN_DEVICE,
PUPA_ERR_BAD_DEVICE,
PUPA_ERR_READ_ERROR,
PUPA_ERR_WRITE_ERROR,
PUPA_ERR_UNKNOWN_COMMAND,
PUPA_ERR_BAD_ARGUMENT,
PUPA_ERR_BAD_PART_TABLE,
PUPA_ERR_UNKNOWN_OS,
PUPA_ERR_BAD_OS,
PUPA_ERR_NO_KERNEL,
PUPA_ERR_BAD_FONT,
PUPA_ERR_NOT_IMPLEMENTED_YET,
PUPA_ERR_SYMLINK_LOOP
GRUB_ERR_NONE = 0,
GRUB_ERR_BAD_MODULE,
GRUB_ERR_OUT_OF_MEMORY,
GRUB_ERR_BAD_FILE_TYPE,
GRUB_ERR_FILE_NOT_FOUND,
GRUB_ERR_FILE_READ_ERROR,
GRUB_ERR_BAD_FILENAME,
GRUB_ERR_UNKNOWN_FS,
GRUB_ERR_BAD_FS,
GRUB_ERR_BAD_NUMBER,
GRUB_ERR_OUT_OF_RANGE,
GRUB_ERR_UNKNOWN_DEVICE,
GRUB_ERR_BAD_DEVICE,
GRUB_ERR_READ_ERROR,
GRUB_ERR_WRITE_ERROR,
GRUB_ERR_UNKNOWN_COMMAND,
GRUB_ERR_BAD_ARGUMENT,
GRUB_ERR_BAD_PART_TABLE,
GRUB_ERR_UNKNOWN_OS,
GRUB_ERR_BAD_OS,
GRUB_ERR_NO_KERNEL,
GRUB_ERR_BAD_FONT,
GRUB_ERR_NOT_IMPLEMENTED_YET,
GRUB_ERR_SYMLINK_LOOP
}
pupa_err_t;
grub_err_t;
extern pupa_err_t EXPORT_VAR(pupa_errno);
extern char EXPORT_VAR(pupa_errmsg)[];
extern grub_err_t EXPORT_VAR(grub_errno);
extern char EXPORT_VAR(grub_errmsg)[];
pupa_err_t EXPORT_FUNC(pupa_error) (pupa_err_t n, const char *fmt, ...);
void EXPORT_FUNC(pupa_fatal) (const char *fmt, ...) __attribute__ ((noreturn));
void EXPORT_FUNC(pupa_print_error) (void);
grub_err_t EXPORT_FUNC(grub_error) (grub_err_t n, const char *fmt, ...);
void EXPORT_FUNC(grub_fatal) (const char *fmt, ...) __attribute__ ((noreturn));
void EXPORT_FUNC(grub_print_error) (void);
#endif /* ! PUPA_ERR_HEADER */
#endif /* ! GRUB_ERR_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,32 +13,32 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_FILE_HEADER
#define PUPA_FILE_HEADER 1
#ifndef GRUB_FILE_HEADER
#define GRUB_FILE_HEADER 1
#include <pupa/types.h>
#include <pupa/err.h>
#include <pupa/device.h>
#include <pupa/fs.h>
#include <grub/types.h>
#include <grub/err.h>
#include <grub/device.h>
#include <grub/fs.h>
/* File description. */
struct pupa_file
struct grub_file
{
/* The underlying device. */
pupa_device_t device;
grub_device_t device;
/* The underlying filesystem. */
pupa_fs_t fs;
grub_fs_t fs;
/* The current offset. */
pupa_ssize_t offset;
grub_ssize_t offset;
/* The file size. */
pupa_ssize_t size;
grub_ssize_t size;
/* Filesystem-specific data. */
void *data;
@ -46,28 +46,28 @@ struct pupa_file
/* This is called when a sector is read. Used only for a disk device. */
void (*read_hook) (unsigned long sector, unsigned offset, unsigned length);
};
typedef struct pupa_file *pupa_file_t;
typedef struct grub_file *grub_file_t;
/* Get a device name from NAME. */
char *EXPORT_FUNC(pupa_file_get_device_name) (const char *name);
char *EXPORT_FUNC(grub_file_get_device_name) (const char *name);
pupa_file_t EXPORT_FUNC(pupa_file_open) (const char *name);
pupa_ssize_t EXPORT_FUNC(pupa_file_read) (pupa_file_t file, char *buf,
pupa_ssize_t len);
pupa_ssize_t EXPORT_FUNC(pupa_file_seek) (pupa_file_t file,
pupa_ssize_t offset);
pupa_err_t EXPORT_FUNC(pupa_file_close) (pupa_file_t file);
grub_file_t EXPORT_FUNC(grub_file_open) (const char *name);
grub_ssize_t EXPORT_FUNC(grub_file_read) (grub_file_t file, char *buf,
grub_ssize_t len);
grub_ssize_t EXPORT_FUNC(grub_file_seek) (grub_file_t file,
grub_ssize_t offset);
grub_err_t EXPORT_FUNC(grub_file_close) (grub_file_t file);
static inline pupa_ssize_t
pupa_file_size (const pupa_file_t file)
static inline grub_ssize_t
grub_file_size (const grub_file_t file)
{
return file->size;
}
static inline pupa_ssize_t
pupa_file_tell (const pupa_file_t file)
static inline grub_ssize_t
grub_file_tell (const grub_file_t file)
{
return file->offset;
}
#endif /* ! PUPA_FILE_HEADER */
#endif /* ! GRUB_FILE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,14 +17,14 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_FONT_HEADER
#define PUPA_FONT_HEADER 1
#ifndef GRUB_FONT_HEADER
#define GRUB_FONT_HEADER 1
#include <pupa/types.h>
#include <grub/types.h>
#define PUPA_FONT_MAGIC "PPF\x7f"
#define GRUB_FONT_MAGIC "PPF\x7f"
int pupa_font_get_glyph (pupa_uint32_t code,
int grub_font_get_glyph (grub_uint32_t code,
unsigned char bitmap[32], unsigned *width);
#endif /* ! PUPA_FONT_HEADER */
#endif /* ! GRUB_FONT_HEADER */

View file

@ -1,9 +1,9 @@
/* fs.h - filesystem manager */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,62 +14,62 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_FS_HEADER
#define PUPA_FS_HEADER 1
#ifndef GRUB_FS_HEADER
#define GRUB_FS_HEADER 1
#include <pupa/device.h>
#include <pupa/symbol.h>
#include <pupa/types.h>
#include <grub/device.h>
#include <grub/symbol.h>
#include <grub/types.h>
/* Forward declaration is required, because of mutual reference. */
struct pupa_file;
struct grub_file;
/* Filesystem descriptor. */
struct pupa_fs
struct grub_fs
{
/* My name. */
const char *name;
/* Call HOOK with each file under DIR. */
pupa_err_t (*dir) (pupa_device_t device, const char *path,
grub_err_t (*dir) (grub_device_t device, const char *path,
int (*hook) (const char *filename, int dir));
/* Open a file named NAME and initialize FILE. */
pupa_err_t (*open) (struct pupa_file *file, const char *name);
grub_err_t (*open) (struct grub_file *file, const char *name);
/* Read LEN bytes data from FILE into BUF. */
pupa_ssize_t (*read) (struct pupa_file *file, char *buf, pupa_ssize_t len);
grub_ssize_t (*read) (struct grub_file *file, char *buf, grub_ssize_t len);
/* Close the file FILE. */
pupa_err_t (*close) (struct pupa_file *file);
grub_err_t (*close) (struct grub_file *file);
/* Return the label of the device DEVICE in LABEL. The label is
returned in a pupa_malloc'ed buffer and should be freed by the
returned in a grub_malloc'ed buffer and should be freed by the
caller. */
pupa_err_t (*label) (pupa_device_t device, char **label);
grub_err_t (*label) (grub_device_t device, char **label);
/* The next filesystem. */
struct pupa_fs *next;
struct grub_fs *next;
};
typedef struct pupa_fs *pupa_fs_t;
typedef struct grub_fs *grub_fs_t;
/* This is special, because block lists are not files in usual sense. */
extern struct pupa_fs pupa_fs_blocklist;
extern struct grub_fs grub_fs_blocklist;
void EXPORT_FUNC(pupa_fs_register) (pupa_fs_t fs);
void EXPORT_FUNC(pupa_fs_unregister) (pupa_fs_t fs);
void EXPORT_FUNC(pupa_fs_iterate) (int (*hook) (const pupa_fs_t fs));
pupa_fs_t EXPORT_FUNC(pupa_fs_probe) (pupa_device_t device);
void EXPORT_FUNC(grub_fs_register) (grub_fs_t fs);
void EXPORT_FUNC(grub_fs_unregister) (grub_fs_t fs);
void EXPORT_FUNC(grub_fs_iterate) (int (*hook) (const grub_fs_t fs));
grub_fs_t EXPORT_FUNC(grub_fs_probe) (grub_device_t device);
#ifdef PUPA_UTIL
void pupa_fat_init (void);
void pupa_fat_fini (void);
void pupa_ext2_init (void);
void pupa_ext2_fini (void);
#endif /* PUPA_UTIL */
#ifdef GRUB_UTIL
void grub_fat_init (void);
void grub_fat_fini (void);
void grub_ext2_init (void);
void grub_ext2_fini (void);
#endif /* GRUB_UTIL */
#endif /* ! PUPA_FS_HEADER */
#endif /* ! GRUB_FS_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,16 +13,16 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_BIOSDISK_MACHINE_HEADER
#define PUPA_BIOSDISK_MACHINE_HEADER 1
#ifndef GRUB_BIOSDISK_MACHINE_HEADER
#define GRUB_BIOSDISK_MACHINE_HEADER 1
#define PUPA_BIOSDISK_FLAG_LBA 1
#define GRUB_BIOSDISK_FLAG_LBA 1
struct pupa_biosdisk_data
struct grub_biosdisk_data
{
int drive;
unsigned long cylinders;
@ -31,17 +31,17 @@ struct pupa_biosdisk_data
unsigned long flags;
};
int pupa_biosdisk_rw_int13_extensions (int ah, int drive, void *dap);
int pupa_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
int grub_biosdisk_rw_int13_extensions (int ah, int drive, void *dap);
int grub_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
int soff, int nsec, int segment);
int pupa_biosdisk_check_int13_extensions (int drive);
int pupa_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp);
int pupa_biosdisk_get_diskinfo_standard (int drive,
int grub_biosdisk_check_int13_extensions (int drive);
int grub_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp);
int grub_biosdisk_get_diskinfo_standard (int drive,
unsigned long *cylinders,
unsigned long *heads,
unsigned long *sectors);
int pupa_biosdisk_get_num_floppies (void);
int grub_biosdisk_get_num_floppies (void);
void pupa_biosdisk_init (void);
void grub_biosdisk_init (void);
#endif /* ! PUPA_BIOSDISK_MACHINE_HEADER */
#endif /* ! GRUB_BIOSDISK_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,69 +17,69 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_BOOT_MACHINE_HEADER
#define PUPA_BOOT_MACHINE_HEADER 1
#ifndef GRUB_BOOT_MACHINE_HEADER
#define GRUB_BOOT_MACHINE_HEADER 1
/* The signature for bootloader. */
#define PUPA_BOOT_MACHINE_SIGNATURE 0xaa55
#define GRUB_BOOT_MACHINE_SIGNATURE 0xaa55
/* The offset of the start of BPB (BIOS Parameter Block). */
#define PUPA_BOOT_MACHINE_BPB_START 0x3
#define GRUB_BOOT_MACHINE_BPB_START 0x3
/* The offset of the end of BPB (BIOS Parameter Block). */
#define PUPA_BOOT_MACHINE_BPB_END 0x3e
#define GRUB_BOOT_MACHINE_BPB_END 0x3e
/* The offset of the major version. */
#define PUPA_BOOT_MACHINE_VER_MAJ 0x3e
#define GRUB_BOOT_MACHINE_VER_MAJ 0x3e
/* The offset of BOOT_DRIVE. */
#define PUPA_BOOT_MACHINE_BOOT_DRIVE 0x40
#define GRUB_BOOT_MACHINE_BOOT_DRIVE 0x40
/* The offset of FORCE_LBA. */
#define PUPA_BOOT_MACHINE_FORCE_LBA 0x41
#define GRUB_BOOT_MACHINE_FORCE_LBA 0x41
/* The offset of KERNEL_ADDRESS. */
#define PUPA_BOOT_MACHINE_KERNEL_ADDRESS 0x42
#define GRUB_BOOT_MACHINE_KERNEL_ADDRESS 0x42
/* The offset of KERNEL_SECTOR. */
#define PUPA_BOOT_MACHINE_KERNEL_SECTOR 0x44
#define GRUB_BOOT_MACHINE_KERNEL_SECTOR 0x44
/* The offset of KERNEL_SEGMENT. */
#define PUPA_BOOT_MACHINE_KERNEL_SEGMENT 0x48
#define GRUB_BOOT_MACHINE_KERNEL_SEGMENT 0x48
/* The offset of a magic number used by Windows NT. */
#define PUPA_BOOT_MACHINE_WINDOWS_NT_MAGIC 0x1b8
#define GRUB_BOOT_MACHINE_WINDOWS_NT_MAGIC 0x1b8
/* The offset of the start of the partition table. */
#define PUPA_BOOT_MACHINE_PART_START 0x1be
#define GRUB_BOOT_MACHINE_PART_START 0x1be
/* The offset of the end of the partition table. */
#define PUPA_BOOT_MACHINE_PART_END 0x1fe
#define GRUB_BOOT_MACHINE_PART_END 0x1fe
/* The stack segment. */
#define PUPA_BOOT_MACHINE_STACK_SEG 0x2000
#define GRUB_BOOT_MACHINE_STACK_SEG 0x2000
/* The segment of disk buffer. The disk buffer MUST be 32K long and
cannot straddle a 64K boundary. */
#define PUPA_BOOT_MACHINE_BUFFER_SEG 0x7000
#define GRUB_BOOT_MACHINE_BUFFER_SEG 0x7000
/* The address of drive parameters. */
#define PUPA_BOOT_MACHINE_DRP_ADDR 0x7f00
#define GRUB_BOOT_MACHINE_DRP_ADDR 0x7f00
/* The size of drive parameters. */
#define PUPA_BOOT_MACHINE_DRP_SIZE 0x42
#define GRUB_BOOT_MACHINE_DRP_SIZE 0x42
/* The flag for BIOS drive number to designate a hard disk vs. a
floppy. */
#define PUPA_BOOT_MACHINE_BIOS_HD_FLAG 0x80
#define GRUB_BOOT_MACHINE_BIOS_HD_FLAG 0x80
/* The segment where the kernel is loaded. */
#define PUPA_BOOT_MACHINE_KERNEL_SEG 0x800
#define GRUB_BOOT_MACHINE_KERNEL_SEG 0x800
/* The address where the kernel is loaded. */
#define PUPA_BOOT_MACHINE_KERNEL_ADDR (PUPA_BOOT_MACHINE_KERNEL_SEG << 4)
#define GRUB_BOOT_MACHINE_KERNEL_ADDR (GRUB_BOOT_MACHINE_KERNEL_SEG << 4)
/* The size of a block list used in the kernel startup code. */
#define PUPA_BOOT_MACHINE_LIST_SIZE 8
#define GRUB_BOOT_MACHINE_LIST_SIZE 8
#endif /* ! BOOT_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,40 +17,40 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_CONSOLE_MACHINE_HEADER
#define PUPA_CONSOLE_MACHINE_HEADER 1
#ifndef GRUB_CONSOLE_MACHINE_HEADER
#define GRUB_CONSOLE_MACHINE_HEADER 1
/* Define scan codes. */
#define PUPA_CONSOLE_KEY_LEFT 0x4B00
#define PUPA_CONSOLE_KEY_RIGHT 0x4D00
#define PUPA_CONSOLE_KEY_UP 0x4800
#define PUPA_CONSOLE_KEY_DOWN 0x5000
#define PUPA_CONSOLE_KEY_IC 0x5200
#define PUPA_CONSOLE_KEY_DC 0x5300
#define PUPA_CONSOLE_KEY_BACKSPACE 0x0008
#define PUPA_CONSOLE_KEY_HOME 0x4700
#define PUPA_CONSOLE_KEY_END 0x4F00
#define PUPA_CONSOLE_KEY_NPAGE 0x4900
#define PUPA_CONSOLE_KEY_PPAGE 0x5100
#define GRUB_CONSOLE_KEY_LEFT 0x4B00
#define GRUB_CONSOLE_KEY_RIGHT 0x4D00
#define GRUB_CONSOLE_KEY_UP 0x4800
#define GRUB_CONSOLE_KEY_DOWN 0x5000
#define GRUB_CONSOLE_KEY_IC 0x5200
#define GRUB_CONSOLE_KEY_DC 0x5300
#define GRUB_CONSOLE_KEY_BACKSPACE 0x0008
#define GRUB_CONSOLE_KEY_HOME 0x4700
#define GRUB_CONSOLE_KEY_END 0x4F00
#define GRUB_CONSOLE_KEY_NPAGE 0x4900
#define GRUB_CONSOLE_KEY_PPAGE 0x5100
#ifndef ASM_FILE
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <grub/types.h>
#include <grub/symbol.h>
/* These are global to share code between C and asm. */
extern pupa_uint8_t pupa_console_cur_color;
void pupa_console_real_putchar (int c);
int EXPORT_FUNC(pupa_console_checkkey) (void);
int EXPORT_FUNC(pupa_console_getkey) (void);
pupa_uint16_t pupa_console_getxy (void);
void pupa_console_gotoxy (pupa_uint8_t x, pupa_uint8_t y);
void pupa_console_cls (void);
void pupa_console_setcursor (int on);
extern grub_uint8_t grub_console_cur_color;
void grub_console_real_putchar (int c);
int EXPORT_FUNC(grub_console_checkkey) (void);
int EXPORT_FUNC(grub_console_getkey) (void);
grub_uint16_t grub_console_getxy (void);
void grub_console_gotoxy (grub_uint8_t x, grub_uint8_t y);
void grub_console_cls (void);
void grub_console_setcursor (int on);
/* Initialize the console system. */
void pupa_console_init (void);
void grub_console_init (void);
#endif
#endif /* ! PUPA_CONSOLE_MACHINE_HEADER */
#endif /* ! GRUB_CONSOLE_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,38 +17,38 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_INIT_MACHINE_HEADER
#define PUPA_INIT_MACHINE_HEADER 1
#ifndef GRUB_INIT_MACHINE_HEADER
#define GRUB_INIT_MACHINE_HEADER 1
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <grub/types.h>
#include <grub/symbol.h>
/* FIXME: Should these be declared in memory.h? */
extern pupa_size_t EXPORT_VAR(pupa_lower_mem);
extern pupa_size_t EXPORT_VAR(pupa_upper_mem);
extern grub_size_t EXPORT_VAR(grub_lower_mem);
extern grub_size_t EXPORT_VAR(grub_upper_mem);
/* Get the memory size in KB. If EXTENDED is zero, return conventional
memory, otherwise return extended memory. */
pupa_uint16_t pupa_get_memsize (int extended);
grub_uint16_t grub_get_memsize (int extended);
/* Get a packed EISA memory map. Lower 16 bits are between 1MB and 16MB
in 1KB parts, and upper 16 bits are above 16MB in 64KB parts. */
pupa_uint32_t pupa_get_eisa_mmap (void);
grub_uint32_t grub_get_eisa_mmap (void);
struct pupa_machine_mmap_entry
struct grub_machine_mmap_entry
{
pupa_uint32_t size;
pupa_uint64_t addr;
pupa_uint64_t len;
pupa_uint32_t type;
grub_uint32_t size;
grub_uint64_t addr;
grub_uint64_t len;
grub_uint32_t type;
};
/* Get a memory map entry. Return next continuation value. Zero means
the end. */
pupa_uint32_t pupa_get_mmap_entry (struct pupa_machine_mmap_entry *entry,
pupa_uint32_t cont);
grub_uint32_t grub_get_mmap_entry (struct grub_machine_mmap_entry *entry,
grub_uint32_t cont);
/* Turn on/off Gate A20. */
void pupa_gate_a20 (int on);
void grub_gate_a20 (int on);
#endif /* ! PUPA_INIT_MACHINE_HEADER */
#endif /* ! GRUB_INIT_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -20,43 +20,43 @@
#ifndef KERNEL_MACHINE_HEADER
#define KERNEL_MACHINE_HEADER 1
/* The offset of PUPA_TOTAL_MODULE_SIZE. */
#define PUPA_KERNEL_MACHINE_TOTAL_MODULE_SIZE 0x8
/* The offset of GRUB_TOTAL_MODULE_SIZE. */
#define GRUB_KERNEL_MACHINE_TOTAL_MODULE_SIZE 0x8
/* The offset of PUPA_KERNEL_IMAGE_SIZE. */
#define PUPA_KERNEL_MACHINE_KERNEL_IMAGE_SIZE 0xc
/* The offset of GRUB_KERNEL_IMAGE_SIZE. */
#define GRUB_KERNEL_MACHINE_KERNEL_IMAGE_SIZE 0xc
/* The offset of PUPA_COMPRESSED_SIZE. */
#define PUPA_KERNEL_MACHINE_COMPRESSED_SIZE 0x10
/* The offset of GRUB_COMPRESSED_SIZE. */
#define GRUB_KERNEL_MACHINE_COMPRESSED_SIZE 0x10
/* The offset of PUPA_INSTALL_DOS_PART. */
#define PUPA_KERNEL_MACHINE_INSTALL_DOS_PART 0x14
/* The offset of GRUB_INSTALL_DOS_PART. */
#define GRUB_KERNEL_MACHINE_INSTALL_DOS_PART 0x14
/* The offset of PUPA_INSTALL_BSD_PART. */
#define PUPA_KERNEL_MACHINE_INSTALL_BSD_PART 0x18
/* The offset of GRUB_INSTALL_BSD_PART. */
#define GRUB_KERNEL_MACHINE_INSTALL_BSD_PART 0x18
/* The offset of PUPA_PREFIX. */
#define PUPA_KERNEL_MACHINE_PREFIX 0x1c
/* The offset of GRUB_PREFIX. */
#define GRUB_KERNEL_MACHINE_PREFIX 0x1c
/* The size of the first region which won't be compressed. */
#define PUPA_KERNEL_MACHINE_RAW_SIZE 0x400
#define GRUB_KERNEL_MACHINE_RAW_SIZE 0x400
#ifndef ASM_FILE
#include <pupa/types.h>
#include <grub/types.h>
/* The DOS partition number of the installed partition. */
extern pupa_int32_t pupa_install_dos_part;
extern grub_int32_t grub_install_dos_part;
/* The BSD partition number of the installed partition. */
extern pupa_int32_t pupa_install_bsd_part;
extern grub_int32_t grub_install_bsd_part;
/* The prefix which points to the directory where PUPA modules and its
/* The prefix which points to the directory where GRUB modules and its
configuration file are located. */
extern char pupa_prefix[];
extern char grub_prefix[];
/* The boot BIOS drive number. */
extern pupa_int32_t pupa_boot_drive;
extern grub_int32_t grub_boot_drive;
#endif /* ! ASM_FILE */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,70 +17,70 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_LINUX_MACHINE_HEADER
#define PUPA_LINUX_MACHINE_HEADER 1
#ifndef GRUB_LINUX_MACHINE_HEADER
#define GRUB_LINUX_MACHINE_HEADER 1
#define PUPA_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */
#define PUPA_LINUX_DEFAULT_SETUP_SECTS 4
#define PUPA_LINUX_FLAG_CAN_USE_HEAP 0x80
#define PUPA_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF
#define PUPA_LINUX_MAX_SETUP_SECTS 64
#define PUPA_LINUX_BOOT_LOADER_TYPE 0x72
#define PUPA_LINUX_HEAP_END_OFFSET (0x9000 - 0x200)
#define GRUB_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */
#define GRUB_LINUX_DEFAULT_SETUP_SECTS 4
#define GRUB_LINUX_FLAG_CAN_USE_HEAP 0x80
#define GRUB_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF
#define GRUB_LINUX_MAX_SETUP_SECTS 64
#define GRUB_LINUX_BOOT_LOADER_TYPE 0x72
#define GRUB_LINUX_HEAP_END_OFFSET (0x9000 - 0x200)
#define PUPA_LINUX_BZIMAGE_ADDR 0x100000
#define PUPA_LINUX_ZIMAGE_ADDR 0x10000
#define PUPA_LINUX_OLD_REAL_MODE_ADDR 0x90000
#define PUPA_LINUX_SETUP_STACK 0x9000
#define GRUB_LINUX_BZIMAGE_ADDR 0x100000
#define GRUB_LINUX_ZIMAGE_ADDR 0x10000
#define GRUB_LINUX_OLD_REAL_MODE_ADDR 0x90000
#define GRUB_LINUX_SETUP_STACK 0x9000
#define PUPA_LINUX_FLAG_BIG_KERNEL 0x1
#define GRUB_LINUX_FLAG_BIG_KERNEL 0x1
/* Linux's video mode selection support. Actually I hate it! */
#define PUPA_LINUX_VID_MODE_NORMAL 0xFFFF
#define PUPA_LINUX_VID_MODE_EXTENDED 0xFFFE
#define PUPA_LINUX_VID_MODE_ASK 0xFFFD
#define GRUB_LINUX_VID_MODE_NORMAL 0xFFFF
#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE
#define GRUB_LINUX_VID_MODE_ASK 0xFFFD
#define PUPA_LINUX_CL_OFFSET 0x9000
#define PUPA_LINUX_CL_END_OFFSET 0x90FF
#define PUPA_LINUX_SETUP_MOVE_SIZE 0x9100
#define PUPA_LINUX_CL_MAGIC 0xA33F
#define GRUB_LINUX_CL_OFFSET 0x9000
#define GRUB_LINUX_CL_END_OFFSET 0x90FF
#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100
#define GRUB_LINUX_CL_MAGIC 0xA33F
#ifndef ASM_FILE
/* For the Linux/i386 boot protocol version 2.03. */
struct linux_kernel_header
{
pupa_uint8_t code1[0x0020];
pupa_uint16_t cl_magic; /* Magic number 0xA33F */
pupa_uint16_t cl_offset; /* The offset of command line */
pupa_uint8_t code2[0x01F1 - 0x0020 - 2 - 2];
pupa_uint8_t setup_sects; /* The size of the setup in sectors */
pupa_uint16_t root_flags; /* If the root is mounted readonly */
pupa_uint16_t syssize; /* obsolete */
pupa_uint16_t swap_dev; /* obsolete */
pupa_uint16_t ram_size; /* obsolete */
pupa_uint16_t vid_mode; /* Video mode control */
pupa_uint16_t root_dev; /* Default root device number */
pupa_uint16_t boot_flag; /* 0xAA55 magic number */
pupa_uint16_t jump; /* Jump instruction */
pupa_uint32_t header; /* Magic signature "HdrS" */
pupa_uint16_t version; /* Boot protocol version supported */
pupa_uint32_t realmode_swtch; /* Boot loader hook */
pupa_uint16_t start_sys; /* The load-low segment (obsolete) */
pupa_uint16_t kernel_version; /* Points to kernel version string */
pupa_uint8_t type_of_loader; /* Boot loader identifier */
pupa_uint8_t loadflags; /* Boot protocol option flags */
pupa_uint16_t setup_move_size; /* Move to high memory size */
pupa_uint32_t code32_start; /* Boot loader hook */
pupa_uint32_t ramdisk_image; /* initrd load address */
pupa_uint32_t ramdisk_size; /* initrd size */
pupa_uint32_t bootsect_kludge; /* obsolete */
pupa_uint16_t heap_end_ptr; /* Free memory after setup end */
pupa_uint16_t pad1; /* Unused */
grub_uint8_t code1[0x0020];
grub_uint16_t cl_magic; /* Magic number 0xA33F */
grub_uint16_t cl_offset; /* The offset of command line */
grub_uint8_t code2[0x01F1 - 0x0020 - 2 - 2];
grub_uint8_t setup_sects; /* The size of the setup in sectors */
grub_uint16_t root_flags; /* If the root is mounted readonly */
grub_uint16_t syssize; /* obsolete */
grub_uint16_t swap_dev; /* obsolete */
grub_uint16_t ram_size; /* obsolete */
grub_uint16_t vid_mode; /* Video mode control */
grub_uint16_t root_dev; /* Default root device number */
grub_uint16_t boot_flag; /* 0xAA55 magic number */
grub_uint16_t jump; /* Jump instruction */
grub_uint32_t header; /* Magic signature "HdrS" */
grub_uint16_t version; /* Boot protocol version supported */
grub_uint32_t realmode_swtch; /* Boot loader hook */
grub_uint16_t start_sys; /* The load-low segment (obsolete) */
grub_uint16_t kernel_version; /* Points to kernel version string */
grub_uint8_t type_of_loader; /* Boot loader identifier */
grub_uint8_t loadflags; /* Boot protocol option flags */
grub_uint16_t setup_move_size; /* Move to high memory size */
grub_uint32_t code32_start; /* Boot loader hook */
grub_uint32_t ramdisk_image; /* initrd load address */
grub_uint32_t ramdisk_size; /* initrd size */
grub_uint32_t bootsect_kludge; /* obsolete */
grub_uint16_t heap_end_ptr; /* Free memory after setup end */
grub_uint16_t pad1; /* Unused */
char *cmd_line_ptr; /* Points to the kernel command line */
pupa_uint32_t initrd_addr_max; /* Highest address for initrd */
grub_uint32_t initrd_addr_max; /* Highest address for initrd */
} __attribute__ ((packed));
#endif /* ! ASM_FILE */
#endif /* ! PUPA_LINUX_MACHINE_HEADER */
#endif /* ! GRUB_LINUX_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,34 +17,34 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_LOADER_MACHINE_HEADER
#define PUPA_LOADER_MACHINE_HEADER 1
#ifndef GRUB_LOADER_MACHINE_HEADER
#define GRUB_LOADER_MACHINE_HEADER 1
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <pupa/machine/multiboot.h>
#include <grub/types.h>
#include <grub/symbol.h>
#include <grub/machine/multiboot.h>
extern pupa_uint32_t EXPORT_VAR(pupa_linux_prot_size);
extern char *EXPORT_VAR(pupa_linux_tmp_addr);
extern char *EXPORT_VAR(pupa_linux_real_addr);
extern grub_uint32_t EXPORT_VAR(grub_linux_prot_size);
extern char *EXPORT_VAR(grub_linux_tmp_addr);
extern char *EXPORT_VAR(grub_linux_real_addr);
void EXPORT_FUNC(pupa_linux_boot_zimage) (void) __attribute__ ((noreturn));
void EXPORT_FUNC(pupa_linux_boot_bzimage) (void) __attribute__ ((noreturn));
void EXPORT_FUNC(grub_linux_boot_zimage) (void) __attribute__ ((noreturn));
void EXPORT_FUNC(grub_linux_boot_bzimage) (void) __attribute__ ((noreturn));
/* This is an asm part of the chainloader. */
void EXPORT_FUNC(pupa_chainloader_real_boot) (int drive, void *part_addr) __attribute__ ((noreturn));
void EXPORT_FUNC(grub_chainloader_real_boot) (int drive, void *part_addr) __attribute__ ((noreturn));
/* The asm part of the multiboot loader. */
void EXPORT_FUNC(pupa_multiboot_real_boot) (pupa_addr_t entry,
struct pupa_multiboot_info *mbi)
void EXPORT_FUNC(grub_multiboot_real_boot) (grub_addr_t entry,
struct grub_multiboot_info *mbi)
__attribute__ ((noreturn));
/* It is necessary to export these functions, because normal mode commands
reuse rescue mode commands. */
void pupa_rescue_cmd_chainloader (int argc, char *argv[]);
void pupa_rescue_cmd_linux (int argc, char *argv[]);
void pupa_rescue_cmd_initrd (int argc, char *argv[]);
void pupa_rescue_cmd_multiboot (int argc, char *argv[]);
void pupa_rescue_cmd_module (int argc, char *argv[]);
void grub_rescue_cmd_chainloader (int argc, char *argv[]);
void grub_rescue_cmd_linux (int argc, char *argv[]);
void grub_rescue_cmd_initrd (int argc, char *argv[]);
void grub_rescue_cmd_multiboot (int argc, char *argv[]);
void grub_rescue_cmd_module (int argc, char *argv[]);
#endif /* ! PUPA_LOADER_MACHINE_HEADER */
#endif /* ! GRUB_LOADER_MACHINE_HEADER */

View file

@ -1,6 +1,6 @@
/* memory.h - describe the memory map */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,50 +18,50 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_MEMORY_MACHINE_HEADER
#define PUPA_MEMORY_MACHINE_HEADER 1
#ifndef GRUB_MEMORY_MACHINE_HEADER
#define GRUB_MEMORY_MACHINE_HEADER 1
/* The scratch buffer used in real mode code. */
#define PUPA_MEMORY_MACHINE_SCRATCH_ADDR 0x68000
#define PUPA_MEMORY_MACHINE_SCRATCH_SEG (PUPA_MEMORY_MACHINE_SCRATCH_ADDR >> 4)
#define PUPA_MEMORY_MACHINE_SCRATCH_SIZE 0x10000
#define GRUB_MEMORY_MACHINE_SCRATCH_ADDR 0x68000
#define GRUB_MEMORY_MACHINE_SCRATCH_SEG (GRUB_MEMORY_MACHINE_SCRATCH_ADDR >> 4)
#define GRUB_MEMORY_MACHINE_SCRATCH_SIZE 0x10000
/* The real mode stack. */
#define PUPA_MEMORY_MACHINE_REAL_STACK (0x2000 - 0x10)
#define GRUB_MEMORY_MACHINE_REAL_STACK (0x2000 - 0x10)
/* The size of the protect mode stack. */
#define PUPA_MEMORY_MACHINE_PROT_STACK_SIZE 0x8000
#define GRUB_MEMORY_MACHINE_PROT_STACK_SIZE 0x8000
/* The protected mode stack. */
#define PUPA_MEMORY_MACHINE_PROT_STACK \
(PUPA_MEMORY_MACHINE_SCRATCH_ADDR + PUPA_MEMORY_MACHINE_SCRATCH_SIZE \
+ PUPA_MEMORY_MACHINE_PROT_STACK_SIZE - 0x10)
#define GRUB_MEMORY_MACHINE_PROT_STACK \
(GRUB_MEMORY_MACHINE_SCRATCH_ADDR + GRUB_MEMORY_MACHINE_SCRATCH_SIZE \
+ GRUB_MEMORY_MACHINE_PROT_STACK_SIZE - 0x10)
/* The memory area where PUPA uses its own purpose. */
#define PUPA_MEMORY_MACHINE_RESERVED_START \
PUPA_MEMORY_MACHINE_SCRATCH_ADDR
#define PUPA_MEMORY_MACHINE_RESERVED_END \
(PUPA_MEMORY_MACHINE_PROT_STACK + 0x10)
/* The memory area where GRUB uses its own purpose. */
#define GRUB_MEMORY_MACHINE_RESERVED_START \
GRUB_MEMORY_MACHINE_SCRATCH_ADDR
#define GRUB_MEMORY_MACHINE_RESERVED_END \
(GRUB_MEMORY_MACHINE_PROT_STACK + 0x10)
/* The address of a partition table passed to another boot loader. */
#define PUPA_MEMORY_MACHINE_PART_TABLE_ADDR 0x7be
#define GRUB_MEMORY_MACHINE_PART_TABLE_ADDR 0x7be
/* The address where another boot loader is loaded. */
#define PUPA_MEMORY_MACHINE_BOOT_LOADER_ADDR 0x7c00
#define GRUB_MEMORY_MACHINE_BOOT_LOADER_ADDR 0x7c00
/* The flag for protected mode. */
#define PUPA_MEMORY_MACHINE_CR0_PE_ON 0x1
#define GRUB_MEMORY_MACHINE_CR0_PE_ON 0x1
/* The code segment of the protected mode. */
#define PUPA_MEMORY_MACHINE_PROT_MODE_CSEG 0x8
#define GRUB_MEMORY_MACHINE_PROT_MODE_CSEG 0x8
/* The data segment of the protected mode. */
#define PUPA_MEMORY_MACHINE_PROT_MODE_DSEG 0x10
#define GRUB_MEMORY_MACHINE_PROT_MODE_DSEG 0x10
/* The code segment of the pseudo real mode. */
#define PUPA_MEMORY_MACHINE_PSEUDO_REAL_CSEG 0x18
#define GRUB_MEMORY_MACHINE_PSEUDO_REAL_CSEG 0x18
/* The data segment of the pseudo real mode. */
#define PUPA_MEMORY_MACHINE_PSEUDO_REAL_DSEG 0x20
#define GRUB_MEMORY_MACHINE_PSEUDO_REAL_DSEG 0x20
#endif /* ! PUPA_MEMORY_MACHINE_HEADER */
#endif /* ! GRUB_MEMORY_MACHINE_HEADER */

View file

@ -1,6 +1,6 @@
/* multiboot.h - multiboot header file. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,167 +18,167 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_MULTIBOOT_MACHINE_HEADER
#define PUPA_MULTIBOOT_MACHINE_HEADER 1
#ifndef GRUB_MULTIBOOT_MACHINE_HEADER
#define GRUB_MULTIBOOT_MACHINE_HEADER 1
/* How many bytes from the start of the file we search for the header. */
#define PUPA_MB_SEARCH 8192
#define GRUB_MB_SEARCH 8192
/* The magic field should contain this. */
#define PUPA_MB_MAGIC 0x1BADB002
#define GRUB_MB_MAGIC 0x1BADB002
/* This should be in %eax. */
#define PUPA_MB_MAGIC2 0x2BADB002
#define GRUB_MB_MAGIC2 0x2BADB002
/* The bits in the required part of flags field we don't support. */
#define PUPA_MB_UNSUPPORTED 0x0000fffc
#define GRUB_MB_UNSUPPORTED 0x0000fffc
/* Alignment of multiboot modules. */
#define PUPA_MB_MOD_ALIGN 0x00001000
#define GRUB_MB_MOD_ALIGN 0x00001000
/*
* Flags set in the 'flags' member of the multiboot header.
*/
/* Align all boot modules on i386 page (4KB) boundaries. */
#define PUPA_MB_PAGE_ALIGN 0x00000001
#define GRUB_MB_PAGE_ALIGN 0x00000001
/* Must pass memory information to OS. */
#define PUPA_MB_MEMORY_INFO 0x00000002
#define GRUB_MB_MEMORY_INFO 0x00000002
/* Must pass video information to OS. */
#define PUPA_MB_VIDEO_MODE 0x00000004
#define GRUB_MB_VIDEO_MODE 0x00000004
/* This flag indicates the use of the address fields in the header. */
#define PUPA_MB_AOUT_KLUDGE 0x00010000
#define GRUB_MB_AOUT_KLUDGE 0x00010000
/*
* Flags to be set in the 'flags' member of the multiboot info structure.
*/
/* is there basic lower/upper memory information? */
#define PUPA_MB_INFO_MEMORY 0x00000001
#define GRUB_MB_INFO_MEMORY 0x00000001
/* is there a boot device set? */
#define PUPA_MB_INFO_BOOTDEV 0x00000002
#define GRUB_MB_INFO_BOOTDEV 0x00000002
/* is the command-line defined? */
#define PUPA_MB_INFO_CMDLINE 0x00000004
#define GRUB_MB_INFO_CMDLINE 0x00000004
/* are there modules to do something with? */
#define PUPA_MB_INFO_MODS 0x00000008
#define GRUB_MB_INFO_MODS 0x00000008
/* These next two are mutually exclusive */
/* is there a symbol table loaded? */
#define PUPA_MB_INFO_AOUT_SYMS 0x00000010
#define GRUB_MB_INFO_AOUT_SYMS 0x00000010
/* is there an ELF section header table? */
#define PUPA_MB_INFO_ELF_SHDR 0x00000020
#define GRUB_MB_INFO_ELF_SHDR 0x00000020
/* is there a full memory map? */
#define PUPA_MB_INFO_MEM_MAP 0x00000040
#define GRUB_MB_INFO_MEM_MAP 0x00000040
/* Is there drive info? */
#define PUPA_MB_INFO_DRIVE_INFO 0x00000080
#define GRUB_MB_INFO_DRIVE_INFO 0x00000080
/* Is there a config table? */
#define PUPA_MB_INFO_CONFIG_TABLE 0x00000100
#define GRUB_MB_INFO_CONFIG_TABLE 0x00000100
/* Is there a boot loader name? */
#define PUPA_MB_INFO_BOOT_LOADER_NAME 0x00000200
#define GRUB_MB_INFO_BOOT_LOADER_NAME 0x00000200
/* Is there a APM table? */
#define PUPA_MB_INFO_APM_TABLE 0x00000400
#define GRUB_MB_INFO_APM_TABLE 0x00000400
/* Is there video information? */
#define PUPA_MB_INFO_VIDEO_INFO 0x00000800
#define GRUB_MB_INFO_VIDEO_INFO 0x00000800
#ifndef ASM_FILE
#include <pupa/types.h>
#include <grub/types.h>
struct pupa_multiboot_header
struct grub_multiboot_header
{
/* Must be PUPA_MB_MAGIC - see above. */
pupa_uint32_t magic;
/* Must be GRUB_MB_MAGIC - see above. */
grub_uint32_t magic;
/* Feature flags. */
pupa_uint32_t flags;
grub_uint32_t flags;
/* The above fields plus this one must equal 0 mod 2^32. */
pupa_uint32_t checksum;
grub_uint32_t checksum;
/* These are only valid if PUPA_MB_AOUT_KLUDGE is set. */
pupa_uint32_t header_addr;
pupa_uint32_t load_addr;
pupa_uint32_t load_end_addr;
pupa_uint32_t bss_end_addr;
pupa_uint32_t entry_addr;
/* These are only valid if GRUB_MB_AOUT_KLUDGE is set. */
grub_uint32_t header_addr;
grub_uint32_t load_addr;
grub_uint32_t load_end_addr;
grub_uint32_t bss_end_addr;
grub_uint32_t entry_addr;
/* These are only valid if PUPA_MB_VIDEO_MODE is set. */
pupa_uint32_t mode_type;
pupa_uint32_t width;
pupa_uint32_t height;
pupa_uint32_t depth;
/* These are only valid if GRUB_MB_VIDEO_MODE is set. */
grub_uint32_t mode_type;
grub_uint32_t width;
grub_uint32_t height;
grub_uint32_t depth;
};
struct pupa_multiboot_info
struct grub_multiboot_info
{
/* MultiBoot info version number */
pupa_uint32_t flags;
grub_uint32_t flags;
/* Available memory from BIOS */
pupa_uint32_t mem_lower;
pupa_uint32_t mem_upper;
grub_uint32_t mem_lower;
grub_uint32_t mem_upper;
/* "root" partition */
pupa_uint32_t boot_device;
grub_uint32_t boot_device;
/* Kernel command line */
pupa_uint32_t cmdline;
grub_uint32_t cmdline;
/* Boot-Module list */
pupa_uint32_t mods_count;
pupa_uint32_t mods_addr;
grub_uint32_t mods_count;
grub_uint32_t mods_addr;
pupa_uint32_t syms[4];
grub_uint32_t syms[4];
/* Memory Mapping buffer */
pupa_uint32_t mmap_length;
pupa_uint32_t mmap_addr;
grub_uint32_t mmap_length;
grub_uint32_t mmap_addr;
/* Drive Info buffer */
pupa_uint32_t drives_length;
pupa_uint32_t drives_addr;
grub_uint32_t drives_length;
grub_uint32_t drives_addr;
/* ROM configuration table */
pupa_uint32_t config_table;
grub_uint32_t config_table;
/* Boot Loader Name */
pupa_uint32_t boot_loader_name;
grub_uint32_t boot_loader_name;
/* APM table */
pupa_uint32_t apm_table;
grub_uint32_t apm_table;
/* Video */
pupa_uint32_t vbe_control_info;
pupa_uint32_t vbe_mode_info;
pupa_uint16_t vbe_mode;
pupa_uint16_t vbe_interface_seg;
pupa_uint16_t vbe_interface_off;
pupa_uint16_t vbe_interface_len;
grub_uint32_t vbe_control_info;
grub_uint32_t vbe_mode_info;
grub_uint16_t vbe_mode;
grub_uint16_t vbe_interface_seg;
grub_uint16_t vbe_interface_off;
grub_uint16_t vbe_interface_len;
};
struct pupa_mod_list
struct grub_mod_list
{
/* the memory used goes from bytes 'mod_start' to 'mod_end-1' inclusive */
pupa_uint32_t mod_start;
pupa_uint32_t mod_end;
grub_uint32_t mod_start;
grub_uint32_t mod_end;
/* Module command line */
pupa_uint32_t cmdline;
grub_uint32_t cmdline;
/* padding to take it to 16 bytes (must be zero) */
pupa_uint32_t pad;
grub_uint32_t pad;
};
#endif /* ! ASM_FILE */
#endif /* ! PUPA_MULTIBOOT_MACHINE_HEADER */
#endif /* ! GRUB_MULTIBOOT_MACHINE_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,160 +13,160 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_PARTITION_HEADER
#define PUPA_PARTITION_HEADER 1
#ifndef GRUB_PARTITION_HEADER
#define GRUB_PARTITION_HEADER 1
#include <pupa/symbol.h>
#include <pupa/types.h>
#include <pupa/err.h>
#include <grub/symbol.h>
#include <grub/types.h>
#include <grub/err.h>
/* The signature. */
#define PUPA_PARTITION_SIGNATURE 0xaa55
#define GRUB_PARTITION_SIGNATURE 0xaa55
/* This is not a flag actually, but used as if it were a flag. */
#define PUPA_PARTITION_TYPE_HIDDEN_FLAG 0x10
#define GRUB_PARTITION_TYPE_HIDDEN_FLAG 0x10
/* DOS partition types. */
#define PUPA_PARTITION_TYPE_NONE 0
#define PUPA_PARTITION_TYPE_FAT12 1
#define PUPA_PARTITION_TYPE_FAT16_LT32M 4
#define PUPA_PARTITION_TYPE_EXTENDED 5
#define PUPA_PARTITION_TYPE_FAT16_GT32M 6
#define PUPA_PARTITION_TYPE_FAT32 0xb
#define PUPA_PARTITION_TYPE_FAT32_LBA 0xc
#define PUPA_PARTITION_TYPE_FAT16_LBA 0xe
#define PUPA_PARTITION_TYPE_WIN95_EXTENDED 0xf
#define PUPA_PARTITION_TYPE_EZD 0x55
#define PUPA_PARTITION_TYPE_MINIX 0x80
#define PUPA_PARTITION_TYPE_LINUX_MINIX 0x81
#define PUPA_PARTITION_TYPE_EXT2FS 0x83
#define PUPA_PARTITION_TYPE_LINUX_EXTENDED 0x85
#define PUPA_PARTITION_TYPE_VSTAFS 0x9e
#define PUPA_PARTITION_TYPE_FREEBSD 0xa5
#define PUPA_PARTITION_TYPE_OPENBSD 0xa6
#define PUPA_PARTITION_TYPE_NETBSD 0xa9
#define PUPA_PARTITION_TYPE_LINUX_RAID 0xfd
#define GRUB_PARTITION_TYPE_NONE 0
#define GRUB_PARTITION_TYPE_FAT12 1
#define GRUB_PARTITION_TYPE_FAT16_LT32M 4
#define GRUB_PARTITION_TYPE_EXTENDED 5
#define GRUB_PARTITION_TYPE_FAT16_GT32M 6
#define GRUB_PARTITION_TYPE_FAT32 0xb
#define GRUB_PARTITION_TYPE_FAT32_LBA 0xc
#define GRUB_PARTITION_TYPE_FAT16_LBA 0xe
#define GRUB_PARTITION_TYPE_WIN95_EXTENDED 0xf
#define GRUB_PARTITION_TYPE_EZD 0x55
#define GRUB_PARTITION_TYPE_MINIX 0x80
#define GRUB_PARTITION_TYPE_LINUX_MINIX 0x81
#define GRUB_PARTITION_TYPE_EXT2FS 0x83
#define GRUB_PARTITION_TYPE_LINUX_EXTENDED 0x85
#define GRUB_PARTITION_TYPE_VSTAFS 0x9e
#define GRUB_PARTITION_TYPE_FREEBSD 0xa5
#define GRUB_PARTITION_TYPE_OPENBSD 0xa6
#define GRUB_PARTITION_TYPE_NETBSD 0xa9
#define GRUB_PARTITION_TYPE_LINUX_RAID 0xfd
/* Constants for BSD disk label. */
#define PUPA_PARTITION_BSD_LABEL_SECTOR 1
#define PUPA_PARTITION_BSD_LABEL_MAGIC 0x82564557
#define PUPA_PARTITION_BSD_MAX_ENTRIES 8
#define GRUB_PARTITION_BSD_LABEL_SECTOR 1
#define GRUB_PARTITION_BSD_LABEL_MAGIC 0x82564557
#define GRUB_PARTITION_BSD_MAX_ENTRIES 8
/* BSD partition types. */
#define PUPA_PARTITION_BSD_TYPE_UNUSED 0
#define PUPA_PARTITION_BSD_TYPE_SWAP 1
#define PUPA_PARTITION_BSD_TYPE_V6 2
#define PUPA_PARTITION_BSD_TYPE_V7 3
#define PUPA_PARTITION_BSD_TYPE_SYSV 4
#define PUPA_PARTITION_BSD_TYPE_V71K 5
#define PUPA_PARTITION_BSD_TYPE_V8 6
#define PUPA_PARTITION_BSD_TYPE_BSDFFS 7
#define PUPA_PARTITION_BSD_TYPE_MSDOS 8
#define PUPA_PARTITION_BSD_TYPE_BSDLFS 9
#define PUPA_PARTITION_BSD_TYPE_OTHER 10
#define PUPA_PARTITION_BSD_TYPE_HPFS 11
#define PUPA_PARTITION_BSD_TYPE_ISO9660 12
#define PUPA_PARTITION_BSD_TYPE_BOOT 13
#define GRUB_PARTITION_BSD_TYPE_UNUSED 0
#define GRUB_PARTITION_BSD_TYPE_SWAP 1
#define GRUB_PARTITION_BSD_TYPE_V6 2
#define GRUB_PARTITION_BSD_TYPE_V7 3
#define GRUB_PARTITION_BSD_TYPE_SYSV 4
#define GRUB_PARTITION_BSD_TYPE_V71K 5
#define GRUB_PARTITION_BSD_TYPE_V8 6
#define GRUB_PARTITION_BSD_TYPE_BSDFFS 7
#define GRUB_PARTITION_BSD_TYPE_MSDOS 8
#define GRUB_PARTITION_BSD_TYPE_BSDLFS 9
#define GRUB_PARTITION_BSD_TYPE_OTHER 10
#define GRUB_PARTITION_BSD_TYPE_HPFS 11
#define GRUB_PARTITION_BSD_TYPE_ISO9660 12
#define GRUB_PARTITION_BSD_TYPE_BOOT 13
/* FreeBSD-specific types. */
#define PUPA_PARTITION_FREEBSD_TYPE_VINUM 14
#define PUPA_PARTITION_FREEBSD_TYPE_RAID 15
#define PUPA_PARTITION_FREEBSD_TYPE_JFS2 21
#define GRUB_PARTITION_FREEBSD_TYPE_VINUM 14
#define GRUB_PARTITION_FREEBSD_TYPE_RAID 15
#define GRUB_PARTITION_FREEBSD_TYPE_JFS2 21
/* NetBSD-specific types. */
#define PUPA_PARTITION_NETBSD_TYPE_ADOS 14
#define PUPA_PARTITION_NETBSD_TYPE_HFS 15
#define PUPA_PARTITION_NETBSD_TYPE_FILECORE 16
#define PUPA_PARTITION_NETBSD_TYPE_EXT2FS 17
#define PUPA_PARTITION_NETBSD_TYPE_NTFS 18
#define PUPA_PARTITION_NETBSD_TYPE_RAID 19
#define PUPA_PARTITION_NETBSD_TYPE_CCD 20
#define PUPA_PARTITION_NETBSD_TYPE_JFS2 21
#define PUPA_PARTITION_NETBSD_TYPE_APPLEUFS 22
#define GRUB_PARTITION_NETBSD_TYPE_ADOS 14
#define GRUB_PARTITION_NETBSD_TYPE_HFS 15
#define GRUB_PARTITION_NETBSD_TYPE_FILECORE 16
#define GRUB_PARTITION_NETBSD_TYPE_EXT2FS 17
#define GRUB_PARTITION_NETBSD_TYPE_NTFS 18
#define GRUB_PARTITION_NETBSD_TYPE_RAID 19
#define GRUB_PARTITION_NETBSD_TYPE_CCD 20
#define GRUB_PARTITION_NETBSD_TYPE_JFS2 21
#define GRUB_PARTITION_NETBSD_TYPE_APPLEUFS 22
/* OpenBSD-specific types. */
#define PUPA_PARTITION_OPENBSD_TYPE_ADOS 14
#define PUPA_PARTITION_OPENBSD_TYPE_HFS 15
#define PUPA_PARTITION_OPENBSD_TYPE_FILECORE 16
#define PUPA_PARTITION_OPENBSD_TYPE_EXT2FS 17
#define PUPA_PARTITION_OPENBSD_TYPE_NTFS 18
#define PUPA_PARTITION_OPENBSD_TYPE_RAID 19
#define GRUB_PARTITION_OPENBSD_TYPE_ADOS 14
#define GRUB_PARTITION_OPENBSD_TYPE_HFS 15
#define GRUB_PARTITION_OPENBSD_TYPE_FILECORE 16
#define GRUB_PARTITION_OPENBSD_TYPE_EXT2FS 17
#define GRUB_PARTITION_OPENBSD_TYPE_NTFS 18
#define GRUB_PARTITION_OPENBSD_TYPE_RAID 19
/* The BSD partition entry. */
struct pupa_partition_bsd_entry
struct grub_partition_bsd_entry
{
pupa_uint32_t size;
pupa_uint32_t offset;
pupa_uint32_t fragment_size;
pupa_uint8_t fs_type;
pupa_uint8_t fs_fragments;
pupa_uint16_t fs_cylinders;
grub_uint32_t size;
grub_uint32_t offset;
grub_uint32_t fragment_size;
grub_uint8_t fs_type;
grub_uint8_t fs_fragments;
grub_uint16_t fs_cylinders;
} __attribute__ ((packed));
/* The BSD disk label. Only define members useful for PUPA. */
struct pupa_partition_disk_label
/* The BSD disk label. Only define members useful for GRUB. */
struct grub_partition_disk_label
{
pupa_uint32_t magic;
pupa_uint8_t padding[128];
pupa_uint32_t magic2;
pupa_uint16_t checksum;
pupa_uint16_t num_partitions;
pupa_uint32_t boot_size;
pupa_uint32_t superblock_size;
struct pupa_partition_bsd_entry entries[PUPA_PARTITION_BSD_MAX_ENTRIES];
grub_uint32_t magic;
grub_uint8_t padding[128];
grub_uint32_t magic2;
grub_uint16_t checksum;
grub_uint16_t num_partitions;
grub_uint32_t boot_size;
grub_uint32_t superblock_size;
struct grub_partition_bsd_entry entries[GRUB_PARTITION_BSD_MAX_ENTRIES];
} __attribute__ ((packed));
/* The partition entry. */
struct pupa_partition_entry
struct grub_partition_entry
{
/* If active, 0x80, otherwise, 0x00. */
pupa_uint8_t flag;
grub_uint8_t flag;
/* The head of the start. */
pupa_uint8_t start_head;
grub_uint8_t start_head;
/* (S | ((C >> 2) & 0xC0)) where S is the sector of the start and C
is the cylinder of the start. Note that S is counted from one. */
pupa_uint8_t start_sector;
grub_uint8_t start_sector;
/* (C & 0xFF) where C is the cylinder of the start. */
pupa_uint8_t start_cylinder;
grub_uint8_t start_cylinder;
/* The partition type. */
pupa_uint8_t type;
grub_uint8_t type;
/* The end versions of start_head, start_sector and start_cylinder,
respectively. */
pupa_uint8_t end_head;
pupa_uint8_t end_sector;
pupa_uint8_t end_cylinder;
grub_uint8_t end_head;
grub_uint8_t end_sector;
grub_uint8_t end_cylinder;
/* The start sector. Note that this is counted from zero. */
pupa_uint32_t start;
grub_uint32_t start;
/* The length in sector units. */
pupa_uint32_t length;
grub_uint32_t length;
} __attribute__ ((packed));
/* The structure of MBR. */
struct pupa_partition_mbr
struct grub_partition_mbr
{
/* The code area (actually, including BPB). */
pupa_uint8_t code[446];
grub_uint8_t code[446];
/* Four partition entries. */
struct pupa_partition_entry entries[4];
struct grub_partition_entry entries[4];
/* The signature 0xaa55. */
pupa_uint16_t signature;
grub_uint16_t signature;
} __attribute__ ((packed));
/* Partition description. */
struct pupa_partition
struct grub_partition
{
/* The start sector. */
unsigned long start;
@ -195,48 +195,48 @@ struct pupa_partition
/* The BSD partition type. */
int bsd_type;
};
typedef struct pupa_partition *pupa_partition_t;
typedef struct grub_partition *grub_partition_t;
struct pupa_disk;
struct grub_disk;
pupa_partition_t EXPORT_FUNC(pupa_partition_probe) (struct pupa_disk *disk,
grub_partition_t EXPORT_FUNC(grub_partition_probe) (struct grub_disk *disk,
const char *str);
pupa_err_t EXPORT_FUNC(pupa_partition_iterate) (struct pupa_disk *disk,
int (*hook) (const pupa_partition_t partition));
char *EXPORT_FUNC(pupa_partition_get_name) (const pupa_partition_t partition);
grub_err_t EXPORT_FUNC(grub_partition_iterate) (struct grub_disk *disk,
int (*hook) (const grub_partition_t partition));
char *EXPORT_FUNC(grub_partition_get_name) (const grub_partition_t partition);
static inline unsigned long
pupa_partition_get_start (const pupa_partition_t p)
grub_partition_get_start (const grub_partition_t p)
{
return p->start;
}
static inline unsigned long
pupa_partition_get_len (const pupa_partition_t p)
grub_partition_get_len (const grub_partition_t p)
{
return p->len;
}
static inline int
pupa_partition_is_empty (int type)
grub_partition_is_empty (int type)
{
return (type == PUPA_PARTITION_TYPE_NONE);
return (type == GRUB_PARTITION_TYPE_NONE);
}
static inline int
pupa_partition_is_extended (int type)
grub_partition_is_extended (int type)
{
return (type == PUPA_PARTITION_TYPE_EXTENDED
|| type == PUPA_PARTITION_TYPE_WIN95_EXTENDED
|| type == PUPA_PARTITION_TYPE_LINUX_EXTENDED);
return (type == GRUB_PARTITION_TYPE_EXTENDED
|| type == GRUB_PARTITION_TYPE_WIN95_EXTENDED
|| type == GRUB_PARTITION_TYPE_LINUX_EXTENDED);
}
static inline int
pupa_partition_is_bsd (int type)
grub_partition_is_bsd (int type)
{
return (type == PUPA_PARTITION_TYPE_FREEBSD
|| type == PUPA_PARTITION_TYPE_OPENBSD
|| type == PUPA_PARTITION_TYPE_NETBSD);
return (type == GRUB_PARTITION_TYPE_FREEBSD
|| type == GRUB_PARTITION_TYPE_OPENBSD
|| type == GRUB_PARTITION_TYPE_NETBSD);
}
#endif /* ! PUPA_PARTITION_HEADER */
#endif /* ! GRUB_PARTITION_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -20,14 +20,14 @@
#ifndef KERNEL_TIME_HEADER
#define KERNEL_TIME_HEADER 1
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
# include <time.h>
# define PUPA_TICKS_PER_SECOND CLOCKS_PER_SEC
# define GRUB_TICKS_PER_SECOND CLOCKS_PER_SEC
#else
# define PUPA_TICKS_PER_SECOND 18
# define GRUB_TICKS_PER_SECOND 18
#endif
/* Return the real time in ticks. */
pupa_uint32_t pupa_get_rtc (void);
grub_uint32_t grub_get_rtc (void);
#endif /* ! KERNEL_TIME_HEADER */

View file

@ -1,9 +1,9 @@
/* biosdisk.h - emulate biosdisk */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,15 +14,15 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_BIOSDISK_MACHINE_UTIL_HEADER
#define PUPA_BIOSDISK_MACHINE_UTIL_HEADER 1
#ifndef GRUB_BIOSDISK_MACHINE_UTIL_HEADER
#define GRUB_BIOSDISK_MACHINE_UTIL_HEADER 1
void pupa_util_biosdisk_init (const char *dev_map);
void pupa_util_biosdisk_fini (void);
char *pupa_util_biosdisk_get_pupa_dev (const char *os_dev);
void grub_util_biosdisk_init (const char *dev_map);
void grub_util_biosdisk_fini (void);
char *grub_util_biosdisk_get_grub_dev (const char *os_dev);
#endif /* ! PUPA_BIOSDISK_MACHINE_UTIL_HEADER */
#endif /* ! GRUB_BIOSDISK_MACHINE_UTIL_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,15 +17,15 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_VGA_MACHINE_HEADER
#define PUPA_VGA_MACHINE_HEADER 1
#ifndef GRUB_VGA_MACHINE_HEADER
#define GRUB_VGA_MACHINE_HEADER 1
#include <pupa/symbol.h>
#include <grub/symbol.h>
/* Set the video mode to MODE and return the previous mode. */
unsigned char EXPORT_FUNC(pupa_vga_set_mode) (unsigned char mode);
unsigned char EXPORT_FUNC(grub_vga_set_mode) (unsigned char mode);
/* Return a pointer to the ROM font table. */
unsigned char *EXPORT_FUNC(pupa_vga_get_font) (void);
unsigned char *EXPORT_FUNC(grub_vga_get_font) (void);
#endif /* ! PUPA_VGA_MACHINE_HEADER */
#endif /* ! GRUB_VGA_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,9 +17,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_SETJMP_CPU_HEADER
#define PUPA_SETJMP_CPU_HEADER 1
#ifndef GRUB_SETJMP_CPU_HEADER
#define GRUB_SETJMP_CPU_HEADER 1
typedef unsigned long pupa_jmp_buf[6];
typedef unsigned long grub_jmp_buf[6];
#endif /* ! PUPA_SETJMP_CPU_HEADER */
#endif /* ! GRUB_SETJMP_CPU_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,20 +13,20 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_TYPES_CPU_HEADER
#define PUPA_TYPES_CPU_HEADER 1
#ifndef GRUB_TYPES_CPU_HEADER
#define GRUB_TYPES_CPU_HEADER 1
/* The size of void *. */
#define PUPA_HOST_SIZEOF_VOID_P 4
#define GRUB_HOST_SIZEOF_VOID_P 4
/* The size of long. */
#define PUPA_HOST_SIZEOF_LONG 4
#define GRUB_HOST_SIZEOF_LONG 4
/* i386 is little-endian. */
#undef PUPA_HOST_WORDS_BIGENDIAN
#undef GRUB_HOST_WORDS_BIGENDIAN
#endif /* ! PUPA_TYPES_CPU_HEADER */
#endif /* ! GRUB_TYPES_CPU_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,42 +17,42 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_KERNEL_HEADER
#define PUPA_KERNEL_HEADER 1
#ifndef GRUB_KERNEL_HEADER
#define GRUB_KERNEL_HEADER 1
#include <pupa/types.h>
#include <grub/types.h>
/* The module header. */
struct pupa_module_header
struct grub_module_header
{
/* The offset of object code. */
pupa_off_t offset;
grub_off_t offset;
/* The size of object code plus this header. */
pupa_size_t size;
grub_size_t size;
};
/* The start address of the kernel. */
extern pupa_addr_t pupa_start_addr;
extern grub_addr_t grub_start_addr;
/* The end address of the kernel. */
extern pupa_addr_t pupa_end_addr;
extern grub_addr_t grub_end_addr;
/* The total size of modules including their headers. */
extern pupa_size_t pupa_total_module_size;
extern grub_size_t grub_total_module_size;
/* The size of the kernel image. */
extern pupa_size_t pupa_kernel_image_size;
extern grub_size_t grub_kernel_image_size;
/* The start point of the C code. */
void pupa_main (void);
void grub_main (void);
/* The machine-specific initialization. This must initialize memory. */
void pupa_machine_init (void);
void grub_machine_init (void);
/* Return the end address of the core image. */
pupa_addr_t pupa_get_end_addr (void);
grub_addr_t grub_get_end_addr (void);
/* Register all the exported symbols. This is automatically generated. */
void pupa_register_exported_symbols (void);
void grub_register_exported_symbols (void);
#endif /* ! PUPA_KERNEL_HEADER */
#endif /* ! GRUB_KERNEL_HEADER */

View file

@ -1,6 +1,6 @@
/* loader.h - OS loaders */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,21 +18,21 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_LOADER_HEADER
#define PUPA_LOADER_HEADER 1
#ifndef GRUB_LOADER_HEADER
#define GRUB_LOADER_HEADER 1
#include <pupa/file.h>
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <grub/file.h>
#include <grub/symbol.h>
#include <grub/err.h>
#include <grub/types.h>
extern pupa_addr_t EXPORT_VAR(pupa_os_area_addr);
extern pupa_size_t EXPORT_VAR(pupa_os_area_size);
extern grub_addr_t EXPORT_VAR(grub_os_area_addr);
extern grub_size_t EXPORT_VAR(grub_os_area_size);
void EXPORT_FUNC(pupa_loader_set) (pupa_err_t (*boot) (void),
pupa_err_t (*unload) (void));
void EXPORT_FUNC(pupa_loader_unset) (void);
void EXPORT_FUNC(grub_loader_set) (grub_err_t (*boot) (void),
grub_err_t (*unload) (void));
void EXPORT_FUNC(grub_loader_unset) (void);
pupa_err_t EXPORT_FUNC(pupa_loader_boot) (void);
grub_err_t EXPORT_FUNC(grub_loader_boot) (void);
#endif /* ! PUPA_LOADER_HEADER */
#endif /* ! GRUB_LOADER_HEADER */

View file

@ -1,9 +1,9 @@
/* misc.h - prototypes for misc functions */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,51 +14,51 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_MISC_HEADER
#define PUPA_MISC_HEADER 1
#ifndef GRUB_MISC_HEADER
#define GRUB_MISC_HEADER 1
#include <stdarg.h>
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <grub/types.h>
#include <grub/symbol.h>
#include <grub/err.h>
/* XXX: If pupa_memmove is too slow, we must implement pupa_memcpy. */
#define pupa_memcpy(d,s,n) pupa_memmove ((d), (s), (n))
/* XXX: If grub_memmove is too slow, we must implement grub_memcpy. */
#define grub_memcpy(d,s,n) grub_memmove ((d), (s), (n))
void *EXPORT_FUNC(pupa_memmove) (void *dest, const void *src, pupa_size_t n);
char *EXPORT_FUNC(pupa_strcpy) (char *dest, const char *src);
char *EXPORT_FUNC(pupa_strncpy) (char *dest, const char *src, int c);
char *EXPORT_FUNC(pupa_stpcpy) (char *dest, const char *src);
char *EXPORT_FUNC(pupa_strcat) (char *dest, const char *src);
void *EXPORT_FUNC(grub_memmove) (void *dest, const void *src, grub_size_t n);
char *EXPORT_FUNC(grub_strcpy) (char *dest, const char *src);
char *EXPORT_FUNC(grub_strncpy) (char *dest, const char *src, int c);
char *EXPORT_FUNC(grub_stpcpy) (char *dest, const char *src);
char *EXPORT_FUNC(grub_strcat) (char *dest, const char *src);
int EXPORT_FUNC(pupa_memcmp) (const void *s1, const void *s2, pupa_size_t n);
int EXPORT_FUNC(pupa_strcmp) (const char *s1, const char *s2);
int EXPORT_FUNC(pupa_strncmp) (const char *s1, const char *s2, int c);
char *EXPORT_FUNC(pupa_strchr) (const char *s, int c);
char *EXPORT_FUNC(pupa_strrchr) (const char *s, int c);
int EXPORT_FUNC(pupa_isspace) (int c);
int EXPORT_FUNC(pupa_isprint) (int c);
int EXPORT_FUNC(pupa_isalpha) (int c);
int EXPORT_FUNC(pupa_isgraph) (int c);
int EXPORT_FUNC(pupa_isdigit) (int c);
int EXPORT_FUNC(pupa_tolower) (int c);
unsigned long EXPORT_FUNC(pupa_strtoul) (const char *str, char **end, int base);
char *EXPORT_FUNC(pupa_strdup) (const char *s);
char *EXPORT_FUNC(pupa_strndup) (const char *s, pupa_size_t n);
void *EXPORT_FUNC(pupa_memset) (void *s, int c, pupa_size_t n);
pupa_size_t EXPORT_FUNC(pupa_strlen) (const char *s);
int EXPORT_FUNC(pupa_printf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
int EXPORT_FUNC(pupa_vprintf) (const char *fmt, va_list args);
int EXPORT_FUNC(pupa_sprintf) (char *str, const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
int EXPORT_FUNC(pupa_vsprintf) (char *str, const char *fmt, va_list args);
void EXPORT_FUNC(pupa_stop) (void) __attribute__ ((noreturn));
pupa_err_t EXPORT_FUNC(pupa_split_cmdline) (const char *str,
pupa_err_t (* getline) (char **),
int EXPORT_FUNC(grub_memcmp) (const void *s1, const void *s2, grub_size_t n);
int EXPORT_FUNC(grub_strcmp) (const char *s1, const char *s2);
int EXPORT_FUNC(grub_strncmp) (const char *s1, const char *s2, int c);
char *EXPORT_FUNC(grub_strchr) (const char *s, int c);
char *EXPORT_FUNC(grub_strrchr) (const char *s, int c);
int EXPORT_FUNC(grub_isspace) (int c);
int EXPORT_FUNC(grub_isprint) (int c);
int EXPORT_FUNC(grub_isalpha) (int c);
int EXPORT_FUNC(grub_isgraph) (int c);
int EXPORT_FUNC(grub_isdigit) (int c);
int EXPORT_FUNC(grub_tolower) (int c);
unsigned long EXPORT_FUNC(grub_strtoul) (const char *str, char **end, int base);
char *EXPORT_FUNC(grub_strdup) (const char *s);
char *EXPORT_FUNC(grub_strndup) (const char *s, grub_size_t n);
void *EXPORT_FUNC(grub_memset) (void *s, int c, grub_size_t n);
grub_size_t EXPORT_FUNC(grub_strlen) (const char *s);
int EXPORT_FUNC(grub_printf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
int EXPORT_FUNC(grub_vprintf) (const char *fmt, va_list args);
int EXPORT_FUNC(grub_sprintf) (char *str, const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
int EXPORT_FUNC(grub_vsprintf) (char *str, const char *fmt, va_list args);
void EXPORT_FUNC(grub_stop) (void) __attribute__ ((noreturn));
grub_err_t EXPORT_FUNC(grub_split_cmdline) (const char *str,
grub_err_t (* getline) (char **),
int *argc, char ***argv);
#endif /* ! PUPA_MISC_HEADER */
#endif /* ! GRUB_MISC_HEADER */

View file

@ -1,9 +1,9 @@
/* mm.h - prototypes and declarations for memory manager */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,26 +14,26 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_MM_H
#define PUPA_MM_H 1
#ifndef GRUB_MM_H
#define GRUB_MM_H 1
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <grub/types.h>
#include <grub/symbol.h>
void pupa_mm_init_region (void *addr, unsigned size);
void *EXPORT_FUNC(pupa_malloc) (unsigned size);
void EXPORT_FUNC(pupa_free) (void *ptr);
void *EXPORT_FUNC(pupa_realloc) (void *ptr, unsigned size);
void *EXPORT_FUNC(pupa_memalign) (unsigned align, unsigned size);
void grub_mm_init_region (void *addr, unsigned size);
void *EXPORT_FUNC(grub_malloc) (unsigned size);
void EXPORT_FUNC(grub_free) (void *ptr);
void *EXPORT_FUNC(grub_realloc) (void *ptr, unsigned size);
void *EXPORT_FUNC(grub_memalign) (unsigned align, unsigned size);
/* For debugging. */
#define MM_DEBUG 1
#if MM_DEBUG
void pupa_mm_dump (unsigned lineno);
void grub_mm_dump (unsigned lineno);
#endif
#endif /* ! PUPA_MM_H */
#endif /* ! GRUB_MM_H */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,49 +13,49 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_NET_HEADER
#define PUPA_NET_HEADER 1
#ifndef GRUB_NET_HEADER
#define GRUB_NET_HEADER 1
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <grub/symbol.h>
#include <grub/err.h>
#include <grub/types.h>
struct pupa_net;
struct grub_net;
struct pupa_net_dev
struct grub_net_dev
{
/* The device name. */
const char *name;
/* FIXME: Just a template. */
int (*probe) (struct pupa_net *net, const void *addr);
void (*reset) (struct pupa_net *net);
int (*poll) (struct pupa_net *net);
void (*transmit) (struct pupa_net *net, const void *destip,
int (*probe) (struct grub_net *net, const void *addr);
void (*reset) (struct grub_net *net);
int (*poll) (struct grub_net *net);
void (*transmit) (struct grub_net *net, const void *destip,
unsigned srcsock, unsigned destsock, const void *packet);
void (*disable) (struct pupa_net *net);
void (*disable) (struct grub_net *net);
/* The next net device. */
struct pupa_net_dev *next;
struct grub_net_dev *next;
};
typedef struct pupa_net_dev *pupa_net_dev_t;
typedef struct grub_net_dev *grub_net_dev_t;
struct pupa_fs;
struct grub_fs;
struct pupa_net
struct grub_net
{
/* The net name. */
const char *name;
/* The underlying disk device. */
pupa_net_dev_t dev;
grub_net_dev_t dev;
/* The binding filesystem. */
struct pupa_fs *fs;
struct grub_fs *fs;
/* FIXME: More data would be required, such as an IP address, a mask,
a gateway, etc. */
@ -63,11 +63,11 @@ struct pupa_net
/* Device-specific data. */
void *data;
};
typedef struct pupa_net *pupa_net_t;
typedef struct grub_net *grub_net_t;
/* FIXME: How to abstract networks? More consideration is necessary. */
/* Note: Networks are very different from disks, because networks must
be initialized before used, and the status is persistent. */
#endif /* ! PUPA_NET_HEADER */
#endif /* ! GRUB_NET_HEADER */

View file

@ -1,6 +1,6 @@
/* normal.h - prototypes for the normal mode */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,36 +18,36 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_NORMAL_HEADER
#define PUPA_NORMAL_HEADER 1
#ifndef GRUB_NORMAL_HEADER
#define GRUB_NORMAL_HEADER 1
#include <pupa/setjmp.h>
#include <pupa/symbol.h>
#include <pupa/err.h>
#include <pupa/arg.h>
#include <grub/setjmp.h>
#include <grub/symbol.h>
#include <grub/err.h>
#include <grub/arg.h>
/* The maximum size of a command-line. */
#define PUPA_MAX_CMDLINE 1600
#define GRUB_MAX_CMDLINE 1600
/* Can be run in the command-line. */
#define PUPA_COMMAND_FLAG_CMDLINE 0x1
#define GRUB_COMMAND_FLAG_CMDLINE 0x1
/* Can be run in the menu. */
#define PUPA_COMMAND_FLAG_MENU 0x2
#define GRUB_COMMAND_FLAG_MENU 0x2
/* Can be run in both interfaces. */
#define PUPA_COMMAND_FLAG_BOTH 0x3
#define GRUB_COMMAND_FLAG_BOTH 0x3
/* Only for the command title. */
#define PUPA_COMMAND_FLAG_TITLE 0x4
#define GRUB_COMMAND_FLAG_TITLE 0x4
/* Don't print the command on booting. */
#define PUPA_COMMAND_FLAG_NO_ECHO 0x8
#define GRUB_COMMAND_FLAG_NO_ECHO 0x8
/* The command description. */
struct pupa_command
struct grub_command
{
/* The name. */
const char *name;
/* The callback function. */
pupa_err_t (*func) (struct pupa_arg_list *state, int argc, char **args);
grub_err_t (*func) (struct grub_arg_list *state, int argc, char **args);
/* The flags. */
unsigned flags;
@ -59,26 +59,26 @@ struct pupa_command
const char *description;
/* The argument parser optionlist. */
const struct pupa_arg_option *options;
const struct grub_arg_option *options;
/* The next element. */
struct pupa_command *next;
struct grub_command *next;
};
typedef struct pupa_command *pupa_command_t;
typedef struct grub_command *grub_command_t;
/* The command list. */
struct pupa_command_list
struct grub_command_list
{
/* The string of a command. */
const char *command;
/* The next element. */
struct pupa_command_list *next;
struct grub_command_list *next;
};
typedef struct pupa_command_list *pupa_command_list_t;
typedef struct grub_command_list *grub_command_list_t;
/* The menu entry. */
struct pupa_menu_entry
struct grub_menu_entry
{
/* The title name. */
const char *title;
@ -87,15 +87,15 @@ struct pupa_menu_entry
int num;
/* The list of commands. */
pupa_command_list_t command_list;
grub_command_list_t command_list;
/* The next element. */
struct pupa_menu_entry *next;
struct grub_menu_entry *next;
};
typedef struct pupa_menu_entry *pupa_menu_entry_t;
typedef struct grub_menu_entry *grub_menu_entry_t;
/* The menu. */
struct pupa_menu
struct grub_menu
{
/* The default entry number. */
int default_entry;
@ -110,52 +110,52 @@ struct pupa_menu
int size;
/* The list of menu entries. */
pupa_menu_entry_t entry_list;
grub_menu_entry_t entry_list;
};
typedef struct pupa_menu *pupa_menu_t;
typedef struct grub_menu *grub_menu_t;
/* To exit from the normal mode. */
extern pupa_jmp_buf pupa_exit_env;
extern grub_jmp_buf grub_exit_env;
void pupa_enter_normal_mode (const char *config);
void pupa_normal_execute (const char *config, int nested);
void pupa_menu_run (pupa_menu_t menu, int nested);
void pupa_cmdline_run (int nested);
int pupa_cmdline_get (const char *prompt, char cmdline[], unsigned max_len,
void grub_enter_normal_mode (const char *config);
void grub_normal_execute (const char *config, int nested);
void grub_menu_run (grub_menu_t menu, int nested);
void grub_cmdline_run (int nested);
int grub_cmdline_get (const char *prompt, char cmdline[], unsigned max_len,
int echo_char, int readline);
void EXPORT_FUNC(pupa_register_command) (const char *name,
pupa_err_t (*func) (struct pupa_arg_list *state,
void EXPORT_FUNC(grub_register_command) (const char *name,
grub_err_t (*func) (struct grub_arg_list *state,
int argc, char **args),
unsigned flags,
const char *summary,
const char *description,
const struct pupa_arg_option *parser);
void EXPORT_FUNC(pupa_unregister_command) (const char *name);
pupa_command_t pupa_command_find (char *cmdline);
pupa_err_t pupa_set_history (int newsize);
int pupa_iterate_commands (int (*iterate) (pupa_command_t));
int pupa_command_execute (char *cmdline);
void pupa_command_init (void);
void pupa_normal_init_page (void);
int pupa_arg_parse (pupa_command_t parser, int argc, char **argv,
struct pupa_arg_list *usr, char ***args, int *argnum);
const struct grub_arg_option *parser);
void EXPORT_FUNC(grub_unregister_command) (const char *name);
grub_command_t grub_command_find (char *cmdline);
grub_err_t grub_set_history (int newsize);
int grub_iterate_commands (int (*iterate) (grub_command_t));
int grub_command_execute (char *cmdline);
void grub_command_init (void);
void grub_normal_init_page (void);
int grub_arg_parse (grub_command_t parser, int argc, char **argv,
struct grub_arg_list *usr, char ***args, int *argnum);
#ifdef PUPA_UTIL
void pupa_normal_init (void);
void pupa_normal_fini (void);
void pupa_hello_init (void);
void pupa_hello_fini (void);
void pupa_ls_init (void);
void pupa_ls_fini (void);
void pupa_cat_init (void);
void pupa_cat_fini (void);
void pupa_boot_init (void);
void pupa_boot_fini (void);
void pupa_cmp_init (void);
void pupa_cmp_fini (void);
void pupa_terminal_init (void);
void pupa_terminal_fini (void);
#ifdef GRUB_UTIL
void grub_normal_init (void);
void grub_normal_fini (void);
void grub_hello_init (void);
void grub_hello_fini (void);
void grub_ls_init (void);
void grub_ls_fini (void);
void grub_cat_init (void);
void grub_cat_fini (void);
void grub_boot_init (void);
void grub_boot_fini (void);
void grub_cmp_init (void);
void grub_cmp_fini (void);
void grub_terminal_init (void);
void grub_terminal_fini (void);
#endif
#endif /* ! PUPA_NORMAL_HEADER */
#endif /* ! GRUB_NORMAL_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2004 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,16 +13,16 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_BIOSDISK_MACHINE_HEADER
#define PUPA_BIOSDISK_MACHINE_HEADER 1
#ifndef GRUB_BIOSDISK_MACHINE_HEADER
#define GRUB_BIOSDISK_MACHINE_HEADER 1
#define PUPA_BIOSDISK_FLAG_LBA 1
#define GRUB_BIOSDISK_FLAG_LBA 1
struct pupa_biosdisk_data
struct grub_biosdisk_data
{
int drive;
unsigned long cylinders;
@ -31,17 +31,17 @@ struct pupa_biosdisk_data
unsigned long flags;
};
int pupa_biosdisk_rw_int13_extensions (int ah, int drive, void *dap);
int pupa_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
int grub_biosdisk_rw_int13_extensions (int ah, int drive, void *dap);
int grub_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
int soff, int nsec, int segment);
int pupa_biosdisk_check_int13_extensions (int drive);
int pupa_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp);
int pupa_biosdisk_get_diskinfo_standard (int drive,
int grub_biosdisk_check_int13_extensions (int drive);
int grub_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp);
int grub_biosdisk_get_diskinfo_standard (int drive,
unsigned long *cylinders,
unsigned long *heads,
unsigned long *sectors);
int pupa_biosdisk_get_num_floppies (void);
int grub_biosdisk_get_num_floppies (void);
void pupa_biosdisk_init (void);
void grub_biosdisk_init (void);
#endif /* ! PUPA_BIOSDISK_MACHINE_HEADER */
#endif /* ! GRUB_BIOSDISK_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,40 +17,40 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_CONSOLE_MACHINE_HEADER
#define PUPA_CONSOLE_MACHINE_HEADER 1
#ifndef GRUB_CONSOLE_MACHINE_HEADER
#define GRUB_CONSOLE_MACHINE_HEADER 1
/* Define scan codes. */
#define PUPA_CONSOLE_KEY_LEFT 0x4B00
#define PUPA_CONSOLE_KEY_RIGHT 0x4D00
#define PUPA_CONSOLE_KEY_UP 0x4800
#define PUPA_CONSOLE_KEY_DOWN 0x5000
#define PUPA_CONSOLE_KEY_IC 0x5200
#define PUPA_CONSOLE_KEY_DC 0x5300
#define PUPA_CONSOLE_KEY_BACKSPACE 0x0008
#define PUPA_CONSOLE_KEY_HOME 0x4700
#define PUPA_CONSOLE_KEY_END 0x4F00
#define PUPA_CONSOLE_KEY_NPAGE 0x4900
#define PUPA_CONSOLE_KEY_PPAGE 0x5100
#define GRUB_CONSOLE_KEY_LEFT 0x4B00
#define GRUB_CONSOLE_KEY_RIGHT 0x4D00
#define GRUB_CONSOLE_KEY_UP 0x4800
#define GRUB_CONSOLE_KEY_DOWN 0x5000
#define GRUB_CONSOLE_KEY_IC 0x5200
#define GRUB_CONSOLE_KEY_DC 0x5300
#define GRUB_CONSOLE_KEY_BACKSPACE 0x0008
#define GRUB_CONSOLE_KEY_HOME 0x4700
#define GRUB_CONSOLE_KEY_END 0x4F00
#define GRUB_CONSOLE_KEY_NPAGE 0x4900
#define GRUB_CONSOLE_KEY_PPAGE 0x5100
#ifndef ASM_FILE
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <grub/types.h>
#include <grub/symbol.h>
/* These are global to share code between C and asm. */
extern pupa_uint8_t pupa_console_cur_color;
void pupa_console_real_putchar (int c);
int EXPORT_FUNC(pupa_console_checkkey) (void);
int EXPORT_FUNC(pupa_console_getkey) (void);
pupa_uint16_t pupa_console_getxy (void);
void pupa_console_gotoxy (pupa_uint8_t x, pupa_uint8_t y);
void pupa_console_cls (void);
void pupa_console_setcursor (int on);
extern grub_uint8_t grub_console_cur_color;
void grub_console_real_putchar (int c);
int EXPORT_FUNC(grub_console_checkkey) (void);
int EXPORT_FUNC(grub_console_getkey) (void);
grub_uint16_t grub_console_getxy (void);
void grub_console_gotoxy (grub_uint8_t x, grub_uint8_t y);
void grub_console_cls (void);
void grub_console_setcursor (int on);
/* Initialize the console system. */
void pupa_console_init (void);
void grub_console_init (void);
#endif
#endif /* ! PUPA_CONSOLE_MACHINE_HEADER */
#endif /* ! GRUB_CONSOLE_MACHINE_HEADER */

View file

@ -1,6 +1,6 @@
/* ieee1275.h - Access the Open Firmware client interface. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,82 +18,82 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_IEEE1275_MACHINE_HEADER
#define PUPA_IEEE1275_MACHINE_HEADER 1
#ifndef GRUB_IEEE1275_MACHINE_HEADER
#define GRUB_IEEE1275_MACHINE_HEADER 1
#include <stdint.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <grub/err.h>
#include <grub/types.h>
/* Maps a device alias to a pathname. */
struct pupa_ieee1275_devalias
struct grub_ieee1275_devalias
{
char *name;
char *path;
char *type;
};
struct pupa_ieee1275_mem_region
struct grub_ieee1275_mem_region
{
unsigned int start;
unsigned int size;
};
/* FIXME jrydberg: is this correct cell types? */
typedef intptr_t pupa_ieee1275_ihandle_t;
typedef intptr_t pupa_ieee1275_phandle_t;
typedef intptr_t grub_ieee1275_ihandle_t;
typedef intptr_t grub_ieee1275_phandle_t;
extern intptr_t (*pupa_ieee1275_entry_fn) (void *);
extern intptr_t (*grub_ieee1275_entry_fn) (void *);
uint32_t EXPORT_FUNC(pupa_ieee1275_decode_int_4) (unsigned char *p);
int EXPORT_FUNC(pupa_ieee1275_finddevice) (char *name,
pupa_ieee1275_phandle_t *phandlep);
int EXPORT_FUNC(pupa_ieee1275_get_property) (int handle, const char *property,
void *buf, pupa_size_t size,
pupa_size_t *actual);
int EXPORT_FUNC(pupa_ieee1275_next_property) (int handle, char *prev_prop,
uint32_t EXPORT_FUNC(grub_ieee1275_decode_int_4) (unsigned char *p);
int EXPORT_FUNC(grub_ieee1275_finddevice) (char *name,
grub_ieee1275_phandle_t *phandlep);
int EXPORT_FUNC(grub_ieee1275_get_property) (int handle, const char *property,
void *buf, grub_size_t size,
grub_size_t *actual);
int EXPORT_FUNC(grub_ieee1275_next_property) (int handle, char *prev_prop,
char *prop, int *flags);
int EXPORT_FUNC(pupa_ieee1275_get_property_length)
(pupa_ieee1275_phandle_t handle, const char *prop, pupa_size_t *length);
int EXPORT_FUNC(pupa_ieee1275_instance_to_package)
(pupa_ieee1275_ihandle_t ihandle, pupa_ieee1275_phandle_t *phandlep);
int EXPORT_FUNC(pupa_ieee1275_package_to_path) (pupa_ieee1275_phandle_t phandle,
char *path, pupa_size_t len,
pupa_size_t *actual);
int EXPORT_FUNC(pupa_ieee1275_instance_to_path)
(pupa_ieee1275_ihandle_t ihandle, char *path, pupa_size_t len,
pupa_size_t *actual);
int EXPORT_FUNC(pupa_ieee1275_write) (pupa_ieee1275_ihandle_t ihandle,
void *buffer, pupa_size_t len,
pupa_size_t *actualp);
int EXPORT_FUNC(pupa_ieee1275_read) (pupa_ieee1275_ihandle_t ihandle,
void *buffer, pupa_size_t len,
pupa_size_t *actualp);
int EXPORT_FUNC(pupa_ieee1275_seek) (pupa_ieee1275_ihandle_t ihandle,
int EXPORT_FUNC(grub_ieee1275_get_property_length)
(grub_ieee1275_phandle_t handle, const char *prop, grub_size_t *length);
int EXPORT_FUNC(grub_ieee1275_instance_to_package)
(grub_ieee1275_ihandle_t ihandle, grub_ieee1275_phandle_t *phandlep);
int EXPORT_FUNC(grub_ieee1275_package_to_path) (grub_ieee1275_phandle_t phandle,
char *path, grub_size_t len,
grub_size_t *actual);
int EXPORT_FUNC(grub_ieee1275_instance_to_path)
(grub_ieee1275_ihandle_t ihandle, char *path, grub_size_t len,
grub_size_t *actual);
int EXPORT_FUNC(grub_ieee1275_write) (grub_ieee1275_ihandle_t ihandle,
void *buffer, grub_size_t len,
grub_size_t *actualp);
int EXPORT_FUNC(grub_ieee1275_read) (grub_ieee1275_ihandle_t ihandle,
void *buffer, grub_size_t len,
grub_size_t *actualp);
int EXPORT_FUNC(grub_ieee1275_seek) (grub_ieee1275_ihandle_t ihandle,
int pos_hi, int pos_lo, int *result);
int EXPORT_FUNC(pupa_ieee1275_peer) (pupa_ieee1275_phandle_t node,
pupa_ieee1275_phandle_t *result);
int EXPORT_FUNC(pupa_ieee1275_child) (pupa_ieee1275_phandle_t node,
pupa_ieee1275_phandle_t *result);
int EXPORT_FUNC(pupa_ieee1275_parent) (pupa_ieee1275_phandle_t node,
pupa_ieee1275_phandle_t *result);
int EXPORT_FUNC(pupa_ieee1275_exit) (void);
int EXPORT_FUNC(pupa_ieee1275_open) (char *node,
pupa_ieee1275_ihandle_t *result);
int EXPORT_FUNC(pupa_ieee1275_close) (pupa_ieee1275_ihandle_t ihandle);
int EXPORT_FUNC(pupa_ieee1275_claim) (void *p, pupa_size_t size, unsigned int align,
int EXPORT_FUNC(grub_ieee1275_peer) (grub_ieee1275_phandle_t node,
grub_ieee1275_phandle_t *result);
int EXPORT_FUNC(grub_ieee1275_child) (grub_ieee1275_phandle_t node,
grub_ieee1275_phandle_t *result);
int EXPORT_FUNC(grub_ieee1275_parent) (grub_ieee1275_phandle_t node,
grub_ieee1275_phandle_t *result);
int EXPORT_FUNC(grub_ieee1275_exit) (void);
int EXPORT_FUNC(grub_ieee1275_open) (char *node,
grub_ieee1275_ihandle_t *result);
int EXPORT_FUNC(grub_ieee1275_close) (grub_ieee1275_ihandle_t ihandle);
int EXPORT_FUNC(grub_ieee1275_claim) (void *p, grub_size_t size, unsigned int align,
void **result);
int EXPORT_FUNC(pupa_ieee1275_set_property) (pupa_ieee1275_phandle_t phandle,
int EXPORT_FUNC(grub_ieee1275_set_property) (grub_ieee1275_phandle_t phandle,
const char *propname, void *buf,
pupa_size_t size,
pupa_size_t *actual);
int EXPORT_FUNC(pupa_ieee1275_set_color) (pupa_ieee1275_ihandle_t ihandle,
grub_size_t size,
grub_size_t *actual);
int EXPORT_FUNC(grub_ieee1275_set_color) (grub_ieee1275_ihandle_t ihandle,
int index, int r, int g, int b);
pupa_err_t EXPORT_FUNC(pupa_devalias_iterate)
(int (*hook) (struct pupa_ieee1275_devalias *alias));
grub_err_t EXPORT_FUNC(grub_devalias_iterate)
(int (*hook) (struct grub_ieee1275_devalias *alias));
#endif /* ! PUPA_IEEE1275_MACHINE_HEADER */
#endif /* ! GRUB_IEEE1275_MACHINE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Yoshinori K. Okuji <okuji@enbug.org>
* Copyright (C) 2003 Jeroen Dekkers <jeroen@dekkers.cx>
*
@ -18,34 +18,34 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_LOADER_MACHINE_HEADER
#define PUPA_LOADER_MACHINE_HEADER 1
#ifndef GRUB_LOADER_MACHINE_HEADER
#define GRUB_LOADER_MACHINE_HEADER 1
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <pupa/machine/multiboot.h>
#include <grub/types.h>
#include <grub/symbol.h>
#include <grub/machine/multiboot.h>
extern pupa_uint32_t EXPORT_VAR(pupa_linux_prot_size);
extern char *EXPORT_VAR(pupa_linux_tmp_addr);
extern char *EXPORT_VAR(pupa_linux_real_addr);
extern grub_uint32_t EXPORT_VAR(grub_linux_prot_size);
extern char *EXPORT_VAR(grub_linux_tmp_addr);
extern char *EXPORT_VAR(grub_linux_real_addr);
void EXPORT_FUNC(pupa_linux_boot_zimage) (void) __attribute__ ((noreturn));
void EXPORT_FUNC(pupa_linux_boot_bzimage) (void) __attribute__ ((noreturn));
void EXPORT_FUNC(grub_linux_boot_zimage) (void) __attribute__ ((noreturn));
void EXPORT_FUNC(grub_linux_boot_bzimage) (void) __attribute__ ((noreturn));
/* This is an asm part of the chainloader. */
void EXPORT_FUNC(pupa_chainloader_real_boot) (int drive, void *part_addr) __attribute__ ((noreturn));
void EXPORT_FUNC(grub_chainloader_real_boot) (int drive, void *part_addr) __attribute__ ((noreturn));
/* The asm part of the multiboot loader. */
void EXPORT_FUNC(pupa_multiboot_real_boot) (pupa_addr_t entry,
struct pupa_multiboot_info *mbi)
void EXPORT_FUNC(grub_multiboot_real_boot) (grub_addr_t entry,
struct grub_multiboot_info *mbi)
__attribute__ ((noreturn));
/* It is necessary to export these functions, because normal mode commands
reuse rescue mode commands. */
void pupa_rescue_cmd_chainloader (int argc, char *argv[]);
void pupa_rescue_cmd_linux (int argc, char *argv[]);
void pupa_rescue_cmd_initrd (int argc, char *argv[]);
void pupa_rescue_cmd_multiboot (int argc, char *argv[]);
void pupa_rescue_cmd_module (int argc, char *argv[]);
void grub_rescue_cmd_chainloader (int argc, char *argv[]);
void grub_rescue_cmd_linux (int argc, char *argv[]);
void grub_rescue_cmd_initrd (int argc, char *argv[]);
void grub_rescue_cmd_multiboot (int argc, char *argv[]);
void grub_rescue_cmd_module (int argc, char *argv[]);
#endif /* ! PUPA_LOADER_MACHINE_HEADER */
#endif /* ! GRUB_LOADER_MACHINE_HEADER */

View file

@ -1,6 +1,6 @@
/* multiboot.h - multiboot header file. */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,167 +18,167 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_MULTIBOOT_MACHINE_HEADER
#define PUPA_MULTIBOOT_MACHINE_HEADER 1
#ifndef GRUB_MULTIBOOT_MACHINE_HEADER
#define GRUB_MULTIBOOT_MACHINE_HEADER 1
/* How many bytes from the start of the file we search for the header. */
#define PUPA_MB_SEARCH 8192
#define GRUB_MB_SEARCH 8192
/* The magic field should contain this. */
#define PUPA_MB_MAGIC 0x1BADB002
#define GRUB_MB_MAGIC 0x1BADB002
/* This should be in %eax. */
#define PUPA_MB_MAGIC2 0x2BADB002
#define GRUB_MB_MAGIC2 0x2BADB002
/* The bits in the required part of flags field we don't support. */
#define PUPA_MB_UNSUPPORTED 0x0000fffc
#define GRUB_MB_UNSUPPORTED 0x0000fffc
/* Alignment of multiboot modules. */
#define PUPA_MB_MOD_ALIGN 0x00001000
#define GRUB_MB_MOD_ALIGN 0x00001000
/*
* Flags set in the 'flags' member of the multiboot header.
*/
/* Align all boot modules on i386 page (4KB) boundaries. */
#define PUPA_MB_PAGE_ALIGN 0x00000001
#define GRUB_MB_PAGE_ALIGN 0x00000001
/* Must pass memory information to OS. */
#define PUPA_MB_MEMORY_INFO 0x00000002
#define GRUB_MB_MEMORY_INFO 0x00000002
/* Must pass video information to OS. */
#define PUPA_MB_VIDEO_MODE 0x00000004
#define GRUB_MB_VIDEO_MODE 0x00000004
/* This flag indicates the use of the address fields in the header. */
#define PUPA_MB_AOUT_KLUDGE 0x00010000
#define GRUB_MB_AOUT_KLUDGE 0x00010000
/*
* Flags to be set in the 'flags' member of the multiboot info structure.
*/
/* is there basic lower/upper memory information? */
#define PUPA_MB_INFO_MEMORY 0x00000001
#define GRUB_MB_INFO_MEMORY 0x00000001
/* is there a boot device set? */
#define PUPA_MB_INFO_BOOTDEV 0x00000002
#define GRUB_MB_INFO_BOOTDEV 0x00000002
/* is the command-line defined? */
#define PUPA_MB_INFO_CMDLINE 0x00000004
#define GRUB_MB_INFO_CMDLINE 0x00000004
/* are there modules to do something with? */
#define PUPA_MB_INFO_MODS 0x00000008
#define GRUB_MB_INFO_MODS 0x00000008
/* These next two are mutually exclusive */
/* is there a symbol table loaded? */
#define PUPA_MB_INFO_AOUT_SYMS 0x00000010
#define GRUB_MB_INFO_AOUT_SYMS 0x00000010
/* is there an ELF section header table? */
#define PUPA_MB_INFO_ELF_SHDR 0x00000020
#define GRUB_MB_INFO_ELF_SHDR 0x00000020
/* is there a full memory map? */
#define PUPA_MB_INFO_MEM_MAP 0x00000040
#define GRUB_MB_INFO_MEM_MAP 0x00000040
/* Is there drive info? */
#define PUPA_MB_INFO_DRIVE_INFO 0x00000080
#define GRUB_MB_INFO_DRIVE_INFO 0x00000080
/* Is there a config table? */
#define PUPA_MB_INFO_CONFIG_TABLE 0x00000100
#define GRUB_MB_INFO_CONFIG_TABLE 0x00000100
/* Is there a boot loader name? */
#define PUPA_MB_INFO_BOOT_LOADER_NAME 0x00000200
#define GRUB_MB_INFO_BOOT_LOADER_NAME 0x00000200
/* Is there a APM table? */
#define PUPA_MB_INFO_APM_TABLE 0x00000400
#define GRUB_MB_INFO_APM_TABLE 0x00000400
/* Is there video information? */
#define PUPA_MB_INFO_VIDEO_INFO 0x00000800
#define GRUB_MB_INFO_VIDEO_INFO 0x00000800
#ifndef ASM_FILE
#include <pupa/types.h>
#include <grub/types.h>
struct pupa_multiboot_header
struct grub_multiboot_header
{
/* Must be PUPA_MB_MAGIC - see above. */
pupa_uint32_t magic;
/* Must be GRUB_MB_MAGIC - see above. */
grub_uint32_t magic;
/* Feature flags. */
pupa_uint32_t flags;
grub_uint32_t flags;
/* The above fields plus this one must equal 0 mod 2^32. */
pupa_uint32_t checksum;
grub_uint32_t checksum;
/* These are only valid if PUPA_MB_AOUT_KLUDGE is set. */
pupa_uint32_t header_addr;
pupa_uint32_t load_addr;
pupa_uint32_t load_end_addr;
pupa_uint32_t bss_end_addr;
pupa_uint32_t entry_addr;
/* These are only valid if GRUB_MB_AOUT_KLUDGE is set. */
grub_uint32_t header_addr;
grub_uint32_t load_addr;
grub_uint32_t load_end_addr;
grub_uint32_t bss_end_addr;
grub_uint32_t entry_addr;
/* These are only valid if PUPA_MB_VIDEO_MODE is set. */
pupa_uint32_t mode_type;
pupa_uint32_t width;
pupa_uint32_t height;
pupa_uint32_t depth;
/* These are only valid if GRUB_MB_VIDEO_MODE is set. */
grub_uint32_t mode_type;
grub_uint32_t width;
grub_uint32_t height;
grub_uint32_t depth;
};
struct pupa_multiboot_info
struct grub_multiboot_info
{
/* MultiBoot info version number */
pupa_uint32_t flags;
grub_uint32_t flags;
/* Available memory from BIOS */
pupa_uint32_t mem_lower;
pupa_uint32_t mem_upper;
grub_uint32_t mem_lower;
grub_uint32_t mem_upper;
/* "root" partition */
pupa_uint32_t boot_device;
grub_uint32_t boot_device;
/* Kernel command line */
pupa_uint32_t cmdline;
grub_uint32_t cmdline;
/* Boot-Module list */
pupa_uint32_t mods_count;
pupa_uint32_t mods_addr;
grub_uint32_t mods_count;
grub_uint32_t mods_addr;
pupa_uint32_t syms[4];
grub_uint32_t syms[4];
/* Memory Mapping buffer */
pupa_uint32_t mmap_length;
pupa_uint32_t mmap_addr;
grub_uint32_t mmap_length;
grub_uint32_t mmap_addr;
/* Drive Info buffer */
pupa_uint32_t drives_length;
pupa_uint32_t drives_addr;
grub_uint32_t drives_length;
grub_uint32_t drives_addr;
/* ROM configuration table */
pupa_uint32_t config_table;
grub_uint32_t config_table;
/* Boot Loader Name */
pupa_uint32_t boot_loader_name;
grub_uint32_t boot_loader_name;
/* APM table */
pupa_uint32_t apm_table;
grub_uint32_t apm_table;
/* Video */
pupa_uint32_t vbe_control_info;
pupa_uint32_t vbe_mode_info;
pupa_uint16_t vbe_mode;
pupa_uint16_t vbe_interface_seg;
pupa_uint16_t vbe_interface_off;
pupa_uint16_t vbe_interface_len;
grub_uint32_t vbe_control_info;
grub_uint32_t vbe_mode_info;
grub_uint16_t vbe_mode;
grub_uint16_t vbe_interface_seg;
grub_uint16_t vbe_interface_off;
grub_uint16_t vbe_interface_len;
};
struct pupa_mod_list
struct grub_mod_list
{
/* the memory used goes from bytes 'mod_start' to 'mod_end-1' inclusive */
pupa_uint32_t mod_start;
pupa_uint32_t mod_end;
grub_uint32_t mod_start;
grub_uint32_t mod_end;
/* Module command line */
pupa_uint32_t cmdline;
grub_uint32_t cmdline;
/* padding to take it to 16 bytes (must be zero) */
pupa_uint32_t pad;
grub_uint32_t pad;
};
#endif /* ! ASM_FILE */
#endif /* ! PUPA_MULTIBOOT_MACHINE_HEADER */
#endif /* ! GRUB_MULTIBOOT_MACHINE_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2004 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,36 +13,36 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_PARTITION_HEADER
#define PUPA_PARTITION_HEADER 1
#ifndef GRUB_PARTITION_HEADER
#define GRUB_PARTITION_HEADER 1
#include <pupa/symbol.h>
#include <pupa/types.h>
#include <pupa/err.h>
#include <grub/symbol.h>
#include <grub/types.h>
#include <grub/err.h>
#define PUPA_APPLE_PART_MAGIC 0x504D
#define GRUB_APPLE_PART_MAGIC 0x504D
struct pupa_apple_part
struct grub_apple_part
{
/* The magic number to idenify this as a partition, it should have
the value `0x504D'. */
pupa_uint16_t magic;
grub_uint16_t magic;
/* Reserved. */
pupa_uint16_t reserved;
grub_uint16_t reserved;
/* The size of the partition map in blocks. */
pupa_uint32_t partmap_size;
grub_uint32_t partmap_size;
/* The first physical block of the partition. */
pupa_uint32_t first_phys_block;
grub_uint32_t first_phys_block;
/* The amount of blocks. */
pupa_uint32_t blockcnt;
grub_uint32_t blockcnt;
/* The partition name. */
char partname[32];
@ -51,44 +51,44 @@ struct pupa_apple_part
char parttype[32];
/* The first datablock of the partition. */
pupa_uint32_t datablocks_first;
grub_uint32_t datablocks_first;
/* The amount datablocks. */
pupa_uint32_t datablocks_count;
grub_uint32_t datablocks_count;
/* The status of the partition. (???) */
pupa_uint32_t status;
grub_uint32_t status;
/* The first block on which the bootcode can be found. */
pupa_uint32_t bootcode_pos;
grub_uint32_t bootcode_pos;
/* The size of the bootcode in bytes. */
pupa_uint32_t bootcode_size;
grub_uint32_t bootcode_size;
/* The load address of the bootcode. */
pupa_uint32_t bootcode_loadaddr;
grub_uint32_t bootcode_loadaddr;
/* Reserved. */
pupa_uint32_t reserved2;
grub_uint32_t reserved2;
/* The entrypoint of the bootcode. */
pupa_uint32_t bootcode_entrypoint;
grub_uint32_t bootcode_entrypoint;
/* Reserved. */
pupa_uint32_t reserved3;
grub_uint32_t reserved3;
/* A checksum of the bootcode. */
pupa_uint32_t bootcode_checksum;
grub_uint32_t bootcode_checksum;
/* The processor type. */
char processor[16];
/* Padding. */
pupa_uint16_t pad[187];
grub_uint16_t pad[187];
};
/* Partition description. */
struct pupa_partition
struct grub_partition
{
/* The start sector. */
unsigned long start;
@ -114,27 +114,27 @@ struct pupa_partition
/* The BSD partition type. */
int bsd_type;
};
typedef struct pupa_partition *pupa_partition_t;
typedef struct grub_partition *grub_partition_t;
struct pupa_disk;
struct grub_disk;
pupa_partition_t EXPORT_FUNC(pupa_partition_probe) (struct pupa_disk *disk,
grub_partition_t EXPORT_FUNC(grub_partition_probe) (struct grub_disk *disk,
const char *str);
pupa_err_t EXPORT_FUNC(pupa_partition_iterate) (struct pupa_disk *disk,
int (*hook) (const pupa_partition_t partition));
char *EXPORT_FUNC(pupa_partition_get_name) (const pupa_partition_t partition);
grub_err_t EXPORT_FUNC(grub_partition_iterate) (struct grub_disk *disk,
int (*hook) (const grub_partition_t partition));
char *EXPORT_FUNC(grub_partition_get_name) (const grub_partition_t partition);
static inline unsigned long
pupa_partition_get_start (const pupa_partition_t p)
grub_partition_get_start (const grub_partition_t p)
{
return p->start;
}
static inline unsigned long
pupa_partition_get_len (const pupa_partition_t p)
grub_partition_get_len (const grub_partition_t p)
{
return p->len;
}
#endif /* ! PUPA_PARTITION_HEADER */
#endif /* ! GRUB_PARTITION_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Marco Gerards <metgerards@student.han.nl>
*
* This program is free software; you can redistribute it and/or modify
@ -20,14 +20,14 @@
#ifndef KERNEL_TIME_HEADER
#define KERNEL_TIME_HEADER 1
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
# include <time.h>
# define PUPA_TICKS_PER_SECOND CLOCKS_PER_SEC
# define GRUB_TICKS_PER_SECOND CLOCKS_PER_SEC
#else
# define PUPA_TICKS_PER_SECOND 18
# define GRUB_TICKS_PER_SECOND 18
#endif
/* Return the real time in ticks. */
pupa_uint32_t pupa_get_rtc (void);
grub_uint32_t grub_get_rtc (void);
#endif /* ! KERNEL_TIME_HEADER */

View file

@ -1,9 +1,9 @@
/* biosdisk.h - emulate biosdisk */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2004 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,15 +14,15 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_BIOSDISK_MACHINE_UTIL_HEADER
#define PUPA_BIOSDISK_MACHINE_UTIL_HEADER 1
#ifndef GRUB_BIOSDISK_MACHINE_UTIL_HEADER
#define GRUB_BIOSDISK_MACHINE_UTIL_HEADER 1
void pupa_util_biosdisk_init (const char *dev_map);
void pupa_util_biosdisk_fini (void);
char *pupa_util_biosdisk_get_pupa_dev (const char *os_dev);
void grub_util_biosdisk_init (const char *dev_map);
void grub_util_biosdisk_fini (void);
char *grub_util_biosdisk_get_grub_dev (const char *os_dev);
#endif /* ! PUPA_BIOSDISK_MACHINE_UTIL_HEADER */
#endif /* ! GRUB_BIOSDISK_MACHINE_UTIL_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2004 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,9 +17,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_SETJMP_CPU_HEADER
#define PUPA_SETJMP_CPU_HEADER 1
#ifndef GRUB_SETJMP_CPU_HEADER
#define GRUB_SETJMP_CPU_HEADER 1
typedef unsigned long pupa_jmp_buf[6];
typedef unsigned long grub_jmp_buf[6];
#endif /* ! PUPA_SETJMP_CPU_HEADER */
#endif /* ! GRUB_SETJMP_CPU_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2004 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,20 +13,20 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_TYPES_CPU_HEADER
#define PUPA_TYPES_CPU_HEADER 1
#ifndef GRUB_TYPES_CPU_HEADER
#define GRUB_TYPES_CPU_HEADER 1
/* The size of void *. */
#define PUPA_HOST_SIZEOF_VOID_P 4
#define GRUB_HOST_SIZEOF_VOID_P 4
/* The size of long. */
#define PUPA_HOST_SIZEOF_LONG 4
#define GRUB_HOST_SIZEOF_LONG 4
/* powerpc is little-endian. */
#undef PUPA_HOST_WORDS_LITTLEENDIAN
#undef GRUB_HOST_WORDS_LITTLEENDIAN
#endif /* ! PUPA_TYPES_CPU_HEADER */
#endif /* ! GRUB_TYPES_CPU_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,21 +17,21 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_RESCUE_HEADER
#define PUPA_RESCUE_HEADER 1
#ifndef GRUB_RESCUE_HEADER
#define GRUB_RESCUE_HEADER 1
#include <pupa/symbol.h>
#include <grub/symbol.h>
/* Enter rescue mode. */
void pupa_enter_rescue_mode (void);
void grub_enter_rescue_mode (void);
/* Register a rescue mode command. */
void EXPORT_FUNC(pupa_rescue_register_command) (const char *name,
void EXPORT_FUNC(grub_rescue_register_command) (const char *name,
void (*func) (int argc,
char *argv[]),
const char *message);
/* Unregister a rescue mode command. */
void EXPORT_FUNC(pupa_rescue_unregister_command) (const char *name);
void EXPORT_FUNC(grub_rescue_unregister_command) (const char *name);
#endif /* ! PUPA_RESCUE_HEADER */
#endif /* ! GRUB_RESCUE_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,20 +17,20 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_SETJMP_HEADER
#define PUPA_SETJMP_HEADER 1
#ifndef GRUB_SETJMP_HEADER
#define GRUB_SETJMP_HEADER 1
#ifdef PUPA_UTIL
#ifdef GRUB_UTIL
#include <setjmp.h>
typedef jmp_buf pupa_jmp_buf;
#define pupa_setjmp setjmp
#define pupa_longjmp longjmp
typedef jmp_buf grub_jmp_buf;
#define grub_setjmp setjmp
#define grub_longjmp longjmp
#else
/* This must define pupa_jmp_buf. */
#include <pupa/cpu/setjmp.h>
/* This must define grub_jmp_buf. */
#include <grub/cpu/setjmp.h>
int pupa_setjmp (pupa_jmp_buf env);
void pupa_longjmp (pupa_jmp_buf env, int val) __attribute__ ((noreturn));
int grub_setjmp (grub_jmp_buf env);
void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));
#endif
#endif /* ! PUPA_SETJMP_HEADER */
#endif /* ! GRUB_SETJMP_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,12 +13,12 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_SYMBOL_HEADER
#define PUPA_SYMBOL_HEADER 1
#ifndef GRUB_SYMBOL_HEADER
#define GRUB_SYMBOL_HEADER 1
#include <config.h>
@ -36,4 +36,4 @@
#define EXPORT_FUNC(x) x
#define EXPORT_VAR(x) x
#endif /* ! PUPA_SYMBOL_HEADER */
#endif /* ! GRUB_SYMBOL_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,29 +13,29 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_TERM_HEADER
#define PUPA_TERM_HEADER 1
#ifndef GRUB_TERM_HEADER
#define GRUB_TERM_HEADER 1
#include <pupa/err.h>
#include <pupa/symbol.h>
#include <pupa/types.h>
#include <grub/err.h>
#include <grub/symbol.h>
#include <grub/types.h>
/* These are used to represent the various color states we use. */
typedef enum
{
/* The color used to display all text that does not use the
user defined colors below. */
PUPA_TERM_COLOR_STANDARD,
GRUB_TERM_COLOR_STANDARD,
/* The user defined colors for normal text. */
PUPA_TERM_COLOR_NORMAL,
GRUB_TERM_COLOR_NORMAL,
/* The user defined colors for highlighted text. */
PUPA_TERM_COLOR_HIGHLIGHT
GRUB_TERM_COLOR_HIGHLIGHT
}
pupa_term_color_state;
grub_term_color_state;
/* Flags for representing the capabilities of a terminal. */
/* Some notes about the flags:
@ -47,27 +47,27 @@ pupa_term_color_state;
to NULL. */
/* Set when input characters shouldn't be echoed back. */
#define PUPA_TERM_NO_ECHO (1 << 0)
#define GRUB_TERM_NO_ECHO (1 << 0)
/* Set when the editing feature should be disabled. */
#define PUPA_TERM_NO_EDIT (1 << 1)
#define GRUB_TERM_NO_EDIT (1 << 1)
/* Set when the terminal cannot do fancy things. */
#define PUPA_TERM_DUMB (1 << 2)
#define GRUB_TERM_DUMB (1 << 2)
/* Set when the terminal needs to be initialized. */
#define PUPA_TERM_NEED_INIT (1 << 16)
#define GRUB_TERM_NEED_INIT (1 << 16)
struct pupa_term
struct grub_term
{
/* The terminal name. */
const char *name;
/* Initialize the terminal. */
pupa_err_t (*init) (void);
grub_err_t (*init) (void);
/* Clean up the terminal. */
pupa_err_t (*fini) (void);
grub_err_t (*fini) (void);
/* Put a character. C is encoded in Unicode. */
void (*putchar) (pupa_uint32_t c);
void (*putchar) (grub_uint32_t c);
/* Check if any input character is available. */
int (*checkkey) (void);
@ -76,20 +76,20 @@ struct pupa_term
int (*getkey) (void);
/* Get the cursor position. The return value is ((X << 8) | Y). */
pupa_uint16_t (*getxy) (void);
grub_uint16_t (*getxy) (void);
/* Go to the position (X, Y). */
void (*gotoxy) (pupa_uint8_t x, pupa_uint8_t y);
void (*gotoxy) (grub_uint8_t x, grub_uint8_t y);
/* Clear the screen. */
void (*cls) (void);
/* Set the current color to be used */
void (*setcolorstate) (pupa_term_color_state state);
void (*setcolorstate) (grub_term_color_state state);
/* Set the normal color and the highlight color. The format of each
color is VGA's. */
void (*setcolor) (pupa_uint8_t normal_color, pupa_uint8_t highlight_color);
void (*setcolor) (grub_uint8_t normal_color, grub_uint8_t highlight_color);
/* Turn on/off the cursor. */
void (*setcursor) (int on);
@ -98,35 +98,35 @@ struct pupa_term
void (*refresh) (void);
/* The feature flags defined above. */
pupa_uint32_t flags;
grub_uint32_t flags;
/* The next terminal. */
struct pupa_term *next;
struct grub_term *next;
};
typedef struct pupa_term *pupa_term_t;
typedef struct grub_term *grub_term_t;
void EXPORT_FUNC(pupa_term_register) (pupa_term_t term);
void EXPORT_FUNC(pupa_term_unregister) (pupa_term_t term);
void EXPORT_FUNC(pupa_term_iterate) (int (*hook) (pupa_term_t term));
void EXPORT_FUNC(grub_term_register) (grub_term_t term);
void EXPORT_FUNC(grub_term_unregister) (grub_term_t term);
void EXPORT_FUNC(grub_term_iterate) (int (*hook) (grub_term_t term));
pupa_err_t EXPORT_FUNC(pupa_term_set_current) (pupa_term_t term);
pupa_term_t EXPORT_FUNC(pupa_term_get_current) (void);
grub_err_t EXPORT_FUNC(grub_term_set_current) (grub_term_t term);
grub_term_t EXPORT_FUNC(grub_term_get_current) (void);
void EXPORT_FUNC(pupa_putchar) (int c);
void EXPORT_FUNC(pupa_putcode) (pupa_uint32_t code);
int EXPORT_FUNC(pupa_getkey) (void);
int EXPORT_FUNC(pupa_checkkey) (void);
pupa_uint16_t EXPORT_FUNC(pupa_getxy) (void);
void EXPORT_FUNC(pupa_gotoxy) (pupa_uint8_t x, pupa_uint8_t y);
void EXPORT_FUNC(pupa_cls) (void);
void EXPORT_FUNC(pupa_setcolorstate) (pupa_term_color_state state);
void EXPORT_FUNC(pupa_setcolor) (pupa_uint8_t normal_color,
pupa_uint8_t highlight_color);
int EXPORT_FUNC(pupa_setcursor) (int on);
void EXPORT_FUNC(pupa_refresh) (void);
void EXPORT_FUNC(pupa_set_more) (int onoff);
void EXPORT_FUNC(grub_putchar) (int c);
void EXPORT_FUNC(grub_putcode) (grub_uint32_t code);
int EXPORT_FUNC(grub_getkey) (void);
int EXPORT_FUNC(grub_checkkey) (void);
grub_uint16_t EXPORT_FUNC(grub_getxy) (void);
void EXPORT_FUNC(grub_gotoxy) (grub_uint8_t x, grub_uint8_t y);
void EXPORT_FUNC(grub_cls) (void);
void EXPORT_FUNC(grub_setcolorstate) (grub_term_color_state state);
void EXPORT_FUNC(grub_setcolor) (grub_uint8_t normal_color,
grub_uint8_t highlight_color);
int EXPORT_FUNC(grub_setcursor) (int on);
void EXPORT_FUNC(grub_refresh) (void);
void EXPORT_FUNC(grub_set_more) (int onoff);
/* For convenience. */
#define PUPA_TERM_ASCII_CHAR(c) ((c) & 0xff)
#define GRUB_TERM_ASCII_CHAR(c) ((c) & 0xff)
#endif /* ! PUPA_TERM_HEADER */
#endif /* ! GRUB_TERM_HEADER */

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,125 +17,125 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_TYPES_HEADER
#define PUPA_TYPES_HEADER 1
#ifndef GRUB_TYPES_HEADER
#define GRUB_TYPES_HEADER 1
#include <config.h>
#include <pupa/cpu/types.h>
#include <grub/cpu/types.h>
#ifdef PUPA_UTIL
# define PUPA_CPU_SIZEOF_VOID_P SIZEOF_VOID_P
# define PUPA_CPU_SIZEOF_LONG SIZEOF_LONG
#ifdef GRUB_UTIL
# define GRUB_CPU_SIZEOF_VOID_P SIZEOF_VOID_P
# define GRUB_CPU_SIZEOF_LONG SIZEOF_LONG
# ifdef WORDS_BIGENDIAN
# define PUPA_CPU_WORDS_BIGENDIAN 1
# define GRUB_CPU_WORDS_BIGENDIAN 1
# else
# undef PUPA_CPU_WORDS_BIGENDIAN
# undef GRUB_CPU_WORDS_BIGENDIAN
# endif
#else /* ! PUPA_UTIL */
# define PUPA_CPU_SIZEOF_VOID_P PUPA_HOST_SIZEOF_VOID_P
# define PUPA_CPU_SIZEOF_LONG PUPA_HOST_SIZEOF_LONG
# ifdef PUPA_HOST_WORDS_BIGENDIAN
# define PUPA_CPU_WORDS_BIGENDIAN 1
#else /* ! GRUB_UTIL */
# define GRUB_CPU_SIZEOF_VOID_P GRUB_HOST_SIZEOF_VOID_P
# define GRUB_CPU_SIZEOF_LONG GRUB_HOST_SIZEOF_LONG
# ifdef GRUB_HOST_WORDS_BIGENDIAN
# define GRUB_CPU_WORDS_BIGENDIAN 1
# else
# undef PUPA_CPU_WORDS_BIGENDIAN
# undef GRUB_CPU_WORDS_BIGENDIAN
# endif
#endif /* ! PUPA_UTIL */
#endif /* ! GRUB_UTIL */
#if PUPA_CPU_SIZEOF_VOID_P != PUPA_CPU_SIZEOF_LONG
#if GRUB_CPU_SIZEOF_VOID_P != GRUB_CPU_SIZEOF_LONG
# error "This architecture is not supported because sizeof(void *) != sizeof(long)"
#endif
#if PUPA_CPU_SIZEOF_VOID_P != 4 && PUPA_CPU_SIZEOF_VOID_P != 8
#if GRUB_CPU_SIZEOF_VOID_P != 4 && GRUB_CPU_SIZEOF_VOID_P != 8
# error "This architecture is not supported because sizeof(void *) != 4 and sizeof(void *) != 8"
#endif
/* Define various wide integers. */
typedef signed char pupa_int8_t;
typedef short pupa_int16_t;
typedef int pupa_int32_t;
#if PUPA_CPU_SIZEOF_VOID_P == 8
typedef long pupa_int64_t;
typedef signed char grub_int8_t;
typedef short grub_int16_t;
typedef int grub_int32_t;
#if GRUB_CPU_SIZEOF_VOID_P == 8
typedef long grub_int64_t;
#else
typedef long long pupa_int64_t;
typedef long long grub_int64_t;
#endif
typedef unsigned char pupa_uint8_t;
typedef unsigned short pupa_uint16_t;
typedef unsigned pupa_uint32_t;
#if PUPA_CPU_SIZEOF_VOID_P == 8
typedef unsigned long pupa_uint64_t;
typedef unsigned char grub_uint8_t;
typedef unsigned short grub_uint16_t;
typedef unsigned grub_uint32_t;
#if GRUB_CPU_SIZEOF_VOID_P == 8
typedef unsigned long grub_uint64_t;
#else
typedef unsigned long long pupa_uint64_t;
typedef unsigned long long grub_uint64_t;
#endif
/* Misc types. */
#if PUPA_HOST_SIZEOF_VOID_P == 8
typedef pupa_uint64_t pupa_addr_t;
typedef pupa_uint64_t pupa_off_t;
typedef pupa_uint64_t pupa_size_t;
typedef pupa_int64_t pupa_ssize_t;
#if GRUB_HOST_SIZEOF_VOID_P == 8
typedef grub_uint64_t grub_addr_t;
typedef grub_uint64_t grub_off_t;
typedef grub_uint64_t grub_size_t;
typedef grub_int64_t grub_ssize_t;
#else
typedef pupa_uint32_t pupa_addr_t;
typedef pupa_uint32_t pupa_off_t;
typedef pupa_uint32_t pupa_size_t;
typedef pupa_int32_t pupa_ssize_t;
typedef grub_uint32_t grub_addr_t;
typedef grub_uint32_t grub_off_t;
typedef grub_uint32_t grub_size_t;
typedef grub_int32_t grub_ssize_t;
#endif
/* Byte-orders. */
#define pupa_swap_bytes16(x) \
#define grub_swap_bytes16(x) \
({ \
pupa_uint16_t _x = (x); \
(pupa_uint16_t) ((_x << 8) | (_x >> 8)); \
grub_uint16_t _x = (x); \
(grub_uint16_t) ((_x << 8) | (_x >> 8)); \
})
#define pupa_swap_bytes32(x) \
#define grub_swap_bytes32(x) \
({ \
pupa_uint32_t _x = (x); \
(pupa_uint32_t) ((_x << 24) \
| ((_x & (pupa_uint32_t) 0xFF00UL) << 8) \
| ((_x & (pupa_uint32_t) 0xFF0000UL) >> 8) \
grub_uint32_t _x = (x); \
(grub_uint32_t) ((_x << 24) \
| ((_x & (grub_uint32_t) 0xFF00UL) << 8) \
| ((_x & (grub_uint32_t) 0xFF0000UL) >> 8) \
| (_x >> 24)); \
})
#define pupa_swap_bytes64(x) \
#define grub_swap_bytes64(x) \
({ \
pupa_uint64_t _x = (x); \
(pupa_uint64_t) ((_x << 56) \
| ((_x & (pupa_uint64_t) 0xFF00ULL) << 40) \
| ((_x & (pupa_uint64_t) 0xFF0000ULL) << 24) \
| ((_x & (pupa_uint64_t) 0xFF000000ULL) << 8) \
| ((_x & (pupa_uint64_t) 0xFF00000000ULL) >> 8) \
| ((_x & (pupa_uint64_t) 0xFF0000000000ULL) >> 24) \
| ((_x & (pupa_uint64_t) 0xFF000000000000ULL) >> 40) \
grub_uint64_t _x = (x); \
(grub_uint64_t) ((_x << 56) \
| ((_x & (grub_uint64_t) 0xFF00ULL) << 40) \
| ((_x & (grub_uint64_t) 0xFF0000ULL) << 24) \
| ((_x & (grub_uint64_t) 0xFF000000ULL) << 8) \
| ((_x & (grub_uint64_t) 0xFF00000000ULL) >> 8) \
| ((_x & (grub_uint64_t) 0xFF0000000000ULL) >> 24) \
| ((_x & (grub_uint64_t) 0xFF000000000000ULL) >> 40) \
| (_x >> 56)); \
})
#ifdef PUPA_CPU_WORDS_BIGENDIAN
# define pupa_cpu_to_le16(x) pupa_swap_bytes16(x)
# define pupa_cpu_to_le32(x) pupa_swap_bytes32(x)
# define pupa_cpu_to_le64(x) pupa_swap_bytes64(x)
# define pupa_le_to_cpu16(x) pupa_swap_bytes16(x)
# define pupa_le_to_cpu32(x) pupa_swap_bytes32(x)
# define pupa_le_to_cpu64(x) pupa_swap_bytes64(x)
# define pupa_cpu_to_be16(x) ((pupa_uint16_t) (x))
# define pupa_cpu_to_be32(x) ((pupa_uint32_t) (x))
# define pupa_cpu_to_be64(x) ((pupa_uint64_t) (x))
# define pupa_be_to_cpu16(x) ((pupa_uint16_t) (x))
# define pupa_be_to_cpu32(x) ((pupa_uint32_t) (x))
# define pupa_be_to_cpu64(x) ((pupa_uint64_t) (x))
#ifdef GRUB_CPU_WORDS_BIGENDIAN
# define grub_cpu_to_le16(x) grub_swap_bytes16(x)
# define grub_cpu_to_le32(x) grub_swap_bytes32(x)
# define grub_cpu_to_le64(x) grub_swap_bytes64(x)
# define grub_le_to_cpu16(x) grub_swap_bytes16(x)
# define grub_le_to_cpu32(x) grub_swap_bytes32(x)
# define grub_le_to_cpu64(x) grub_swap_bytes64(x)
# define grub_cpu_to_be16(x) ((grub_uint16_t) (x))
# define grub_cpu_to_be32(x) ((grub_uint32_t) (x))
# define grub_cpu_to_be64(x) ((grub_uint64_t) (x))
# define grub_be_to_cpu16(x) ((grub_uint16_t) (x))
# define grub_be_to_cpu32(x) ((grub_uint32_t) (x))
# define grub_be_to_cpu64(x) ((grub_uint64_t) (x))
#else /* ! WORDS_BIGENDIAN */
# define pupa_cpu_to_le16(x) ((pupa_uint16_t) (x))
# define pupa_cpu_to_le32(x) ((pupa_uint32_t) (x))
# define pupa_cpu_to_le64(x) ((pupa_uint64_t) (x))
# define pupa_le_to_cpu16(x) ((pupa_uint16_t) (x))
# define pupa_le_to_cpu32(x) ((pupa_uint32_t) (x))
# define pupa_le_to_cpu64(x) ((pupa_uint64_t) (x))
# define pupa_cpu_to_be16(x) pupa_swap_bytes16(x)
# define pupa_cpu_to_be32(x) pupa_swap_bytes32(x)
# define pupa_cpu_to_be64(x) pupa_swap_bytes64(x)
# define pupa_be_to_cpu16(x) pupa_swap_bytes16(x)
# define pupa_be_to_cpu32(x) pupa_swap_bytes32(x)
# define pupa_be_to_cpu64(x) pupa_swap_bytes64(x)
# define grub_cpu_to_le16(x) ((grub_uint16_t) (x))
# define grub_cpu_to_le32(x) ((grub_uint32_t) (x))
# define grub_cpu_to_le64(x) ((grub_uint64_t) (x))
# define grub_le_to_cpu16(x) ((grub_uint16_t) (x))
# define grub_le_to_cpu32(x) ((grub_uint32_t) (x))
# define grub_le_to_cpu64(x) ((grub_uint64_t) (x))
# define grub_cpu_to_be16(x) grub_swap_bytes16(x)
# define grub_cpu_to_be32(x) grub_swap_bytes32(x)
# define grub_cpu_to_be64(x) grub_swap_bytes64(x)
# define grub_be_to_cpu16(x) grub_swap_bytes16(x)
# define grub_be_to_cpu32(x) grub_swap_bytes32(x)
# define grub_be_to_cpu64(x) grub_swap_bytes64(x)
#endif /* ! WORDS_BIGENDIAN */
#endif /* ! PUPA_TYPES_HEADER */
#endif /* ! GRUB_TYPES_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,14 +13,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_UTIL_GETROOT_HEADER
#define PUPA_UTIL_GETROOT_HEADER 1
#ifndef GRUB_UTIL_GETROOT_HEADER
#define GRUB_UTIL_GETROOT_HEADER 1
char *pupa_guess_root_device (const char *dir);
char *pupa_get_prefix (const char *dir);
char *grub_guess_root_device (const char *dir);
char *grub_get_prefix (const char *dir);
#endif /* ! PUPA_UTIL_GETROOT_HEADER */
#endif /* ! GRUB_UTIL_GETROOT_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,12 +13,12 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_UTIL_MISC_HEADER
#define PUPA_UTIL_MISC_HEADER 1
#ifndef GRUB_UTIL_MISC_HEADER
#define GRUB_UTIL_MISC_HEADER 1
#include <stdlib.h>
#include <stdio.h>
@ -26,17 +26,17 @@
extern char *progname;
extern int verbosity;
void pupa_util_info (const char *fmt, ...);
void pupa_util_error (const char *fmt, ...) __attribute__ ((noreturn));
void grub_util_info (const char *fmt, ...);
void grub_util_error (const char *fmt, ...) __attribute__ ((noreturn));
void *xmalloc (size_t size);
void *xrealloc (void *ptr, size_t size);
char *xstrdup (const char *str);
char *pupa_util_get_path (const char *dir, const char *file);
size_t pupa_util_get_image_size (const char *path);
char *pupa_util_read_image (const char *path);
void pupa_util_load_image (const char *path, char *buf);
void pupa_util_write_image (const char *img, size_t size, FILE *out);
char *grub_util_get_path (const char *dir, const char *file);
size_t grub_util_get_image_size (const char *path);
char *grub_util_read_image (const char *path);
void grub_util_load_image (const char *path, char *buf);
void grub_util_write_image (const char *img, size_t size, FILE *out);
#endif /* ! PUPA_UTIL_MISC_HEADER */
#endif /* ! GRUB_UTIL_MISC_HEADER */

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,24 +13,24 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PUPA_UTIL_RESOLVE_HEADER
#define PUPA_UTIL_RESOLVE_HEADER 1
#ifndef GRUB_UTIL_RESOLVE_HEADER
#define GRUB_UTIL_RESOLVE_HEADER 1
struct pupa_util_path_list
struct grub_util_path_list
{
const char *name;
struct pupa_util_path_list *next;
struct grub_util_path_list *next;
};
/* Resolve the dependencies of the modules MODULES using the information
in the file DEP_LIST_FILE. The directory PREFIX is used to find files. */
struct pupa_util_path_list *
pupa_util_resolve_dependencies (const char *prefix,
struct grub_util_path_list *
grub_util_resolve_dependencies (const char *prefix,
const char *dep_list_file,
char *modules[]);
#endif /* ! PUPA_UTIL_RESOLVE_HEADER */
#endif /* ! GRUB_UTIL_RESOLVE_HEADER */

View file

@ -1,9 +1,9 @@
/* device.c - device manager */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,62 +14,62 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/device.h>
#include <pupa/disk.h>
#include <pupa/net.h>
#include <pupa/fs.h>
#include <pupa/mm.h>
#include <pupa/misc.h>
#include <grub/device.h>
#include <grub/disk.h>
#include <grub/net.h>
#include <grub/fs.h>
#include <grub/mm.h>
#include <grub/misc.h>
static char *pupa_device_root;
static char *grub_device_root;
pupa_err_t
pupa_device_set_root (const char *name)
grub_err_t
grub_device_set_root (const char *name)
{
pupa_free (pupa_device_root);
pupa_device_root = pupa_strdup (name);
return pupa_errno;
grub_free (grub_device_root);
grub_device_root = grub_strdup (name);
return grub_errno;
}
const char *
pupa_device_get_root (void)
grub_device_get_root (void)
{
if (! pupa_device_root)
pupa_error (PUPA_ERR_BAD_DEVICE, "no root device");
if (! grub_device_root)
grub_error (GRUB_ERR_BAD_DEVICE, "no root device");
return pupa_device_root;
return grub_device_root;
}
pupa_device_t
pupa_device_open (const char *name)
grub_device_t
grub_device_open (const char *name)
{
pupa_disk_t disk = 0;
pupa_device_t dev = 0;
grub_disk_t disk = 0;
grub_device_t dev = 0;
if (! name)
{
if (! pupa_device_root)
if (! grub_device_root)
{
pupa_error (PUPA_ERR_BAD_DEVICE, "no device is set");
grub_error (GRUB_ERR_BAD_DEVICE, "no device is set");
goto fail;
}
name = pupa_device_root;
name = grub_device_root;
}
dev = pupa_malloc (sizeof (*dev));
dev = grub_malloc (sizeof (*dev));
if (! dev)
goto fail;
/* Try to open a disk. */
disk = pupa_disk_open (name);
disk = grub_disk_open (name);
if (! disk)
{
pupa_error (PUPA_ERR_BAD_DEVICE, "unknown device");
grub_error (GRUB_ERR_BAD_DEVICE, "unknown device");
goto fail;
}
@ -80,20 +80,20 @@ pupa_device_open (const char *name)
fail:
if (disk)
pupa_disk_close (disk);
grub_disk_close (disk);
pupa_free (dev);
grub_free (dev);
return 0;
}
pupa_err_t
pupa_device_close (pupa_device_t device)
grub_err_t
grub_device_close (grub_device_t device)
{
if (device->disk)
pupa_disk_close (device->disk);
grub_disk_close (device->disk);
pupa_free (device);
grub_free (device);
return pupa_errno;
return grub_errno;
}

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,27 +13,27 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/disk.h>
#include <pupa/err.h>
#include <pupa/mm.h>
#include <pupa/types.h>
#include <pupa/machine/partition.h>
#include <pupa/misc.h>
#include <pupa/machine/time.h>
#include <pupa/file.h>
#include <grub/disk.h>
#include <grub/err.h>
#include <grub/mm.h>
#include <grub/types.h>
#include <grub/machine/partition.h>
#include <grub/misc.h>
#include <grub/machine/time.h>
#include <grub/file.h>
#define PUPA_CACHE_TIMEOUT 2
#define GRUB_CACHE_TIMEOUT 2
/* The last time the disk was used. */
static unsigned long pupa_last_time = 0;
static unsigned long grub_last_time = 0;
/* Disk cache. */
struct pupa_disk_cache
struct grub_disk_cache
{
unsigned long id;
unsigned long sector;
@ -41,142 +41,142 @@ struct pupa_disk_cache
int lock;
};
static struct pupa_disk_cache pupa_disk_cache_table[PUPA_DISK_CACHE_NUM];
static struct grub_disk_cache grub_disk_cache_table[GRUB_DISK_CACHE_NUM];
#if 0
static unsigned long pupa_disk_cache_hits;
static unsigned long pupa_disk_cache_misses;
static unsigned long grub_disk_cache_hits;
static unsigned long grub_disk_cache_misses;
void
pupa_disk_cache_get_performance (unsigned long *hits, unsigned long *misses)
grub_disk_cache_get_performance (unsigned long *hits, unsigned long *misses)
{
*hits = pupa_disk_cache_hits;
*misses = pupa_disk_cache_misses;
*hits = grub_disk_cache_hits;
*misses = grub_disk_cache_misses;
}
#endif
static unsigned
pupa_disk_cache_get_index (unsigned long id, unsigned long sector)
grub_disk_cache_get_index (unsigned long id, unsigned long sector)
{
return ((id * 2606459 + (sector >> PUPA_DISK_CACHE_BITS))
% PUPA_DISK_CACHE_NUM);
return ((id * 2606459 + (sector >> GRUB_DISK_CACHE_BITS))
% GRUB_DISK_CACHE_NUM);
}
static void
pupa_disk_cache_invalidate (unsigned long id, unsigned long sector)
grub_disk_cache_invalidate (unsigned long id, unsigned long sector)
{
unsigned index;
struct pupa_disk_cache *cache;
struct grub_disk_cache *cache;
sector &= ~(PUPA_DISK_CACHE_SIZE - 1);
index = pupa_disk_cache_get_index (id, sector);
cache = pupa_disk_cache_table + index;
sector &= ~(GRUB_DISK_CACHE_SIZE - 1);
index = grub_disk_cache_get_index (id, sector);
cache = grub_disk_cache_table + index;
if (cache->id == id && cache->sector == sector && cache->data)
{
cache->lock = 1;
pupa_free (cache->data);
grub_free (cache->data);
cache->data = 0;
cache->lock = 0;
}
}
void
pupa_disk_cache_invalidate_all (void)
grub_disk_cache_invalidate_all (void)
{
unsigned i;
for (i = 0; i < PUPA_DISK_CACHE_NUM; i++)
for (i = 0; i < GRUB_DISK_CACHE_NUM; i++)
{
struct pupa_disk_cache *cache = pupa_disk_cache_table + i;
struct grub_disk_cache *cache = grub_disk_cache_table + i;
if (cache->data && ! cache->lock)
{
pupa_free (cache->data);
grub_free (cache->data);
cache->data = 0;
}
}
}
static char *
pupa_disk_cache_fetch (unsigned long id, unsigned long sector)
grub_disk_cache_fetch (unsigned long id, unsigned long sector)
{
struct pupa_disk_cache *cache;
struct grub_disk_cache *cache;
unsigned index;
index = pupa_disk_cache_get_index (id, sector);
cache = pupa_disk_cache_table + index;
index = grub_disk_cache_get_index (id, sector);
cache = grub_disk_cache_table + index;
if (cache->id == id && cache->sector == sector)
{
cache->lock = 1;
#if 0
pupa_disk_cache_hits++;
grub_disk_cache_hits++;
#endif
return cache->data;
}
#if 0
pupa_disk_cache_misses++;
grub_disk_cache_misses++;
#endif
return 0;
}
static void
pupa_disk_cache_unlock (unsigned long id, unsigned long sector)
grub_disk_cache_unlock (unsigned long id, unsigned long sector)
{
struct pupa_disk_cache *cache;
struct grub_disk_cache *cache;
unsigned index;
index = pupa_disk_cache_get_index (id, sector);
cache = pupa_disk_cache_table + index;
index = grub_disk_cache_get_index (id, sector);
cache = grub_disk_cache_table + index;
if (cache->id == id && cache->sector == sector)
cache->lock = 0;
}
static pupa_err_t
pupa_disk_cache_store (unsigned long id, unsigned long sector,
static grub_err_t
grub_disk_cache_store (unsigned long id, unsigned long sector,
const char *data)
{
unsigned index;
struct pupa_disk_cache *cache;
struct grub_disk_cache *cache;
pupa_disk_cache_invalidate (id, sector);
grub_disk_cache_invalidate (id, sector);
index = pupa_disk_cache_get_index (id, sector);
cache = pupa_disk_cache_table + index;
index = grub_disk_cache_get_index (id, sector);
cache = grub_disk_cache_table + index;
cache->data = pupa_malloc (PUPA_DISK_SECTOR_SIZE << PUPA_DISK_CACHE_BITS);
cache->data = grub_malloc (GRUB_DISK_SECTOR_SIZE << GRUB_DISK_CACHE_BITS);
if (! cache->data)
return pupa_errno;
return grub_errno;
pupa_memcpy (cache->data, data,
PUPA_DISK_SECTOR_SIZE << PUPA_DISK_CACHE_BITS);
grub_memcpy (cache->data, data,
GRUB_DISK_SECTOR_SIZE << GRUB_DISK_CACHE_BITS);
cache->id = id;
cache->sector = sector;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
static pupa_disk_dev_t pupa_disk_dev_list;
static grub_disk_dev_t grub_disk_dev_list;
void
pupa_disk_dev_register (pupa_disk_dev_t dev)
grub_disk_dev_register (grub_disk_dev_t dev)
{
dev->next = pupa_disk_dev_list;
pupa_disk_dev_list = dev;
dev->next = grub_disk_dev_list;
grub_disk_dev_list = dev;
}
void
pupa_disk_dev_unregister (pupa_disk_dev_t dev)
grub_disk_dev_unregister (grub_disk_dev_t dev)
{
pupa_disk_dev_t *p, q;
grub_disk_dev_t *p, q;
for (p = &pupa_disk_dev_list, q = *p; q; p = &(q->next), q = q->next)
for (p = &grub_disk_dev_list, q = *p; q; p = &(q->next), q = q->next)
if (q == dev)
{
*p = q->next;
@ -185,25 +185,25 @@ pupa_disk_dev_unregister (pupa_disk_dev_t dev)
}
void
pupa_disk_dev_iterate (int (*hook) (const char *name))
grub_disk_dev_iterate (int (*hook) (const char *name))
{
pupa_disk_dev_t p;
grub_disk_dev_t p;
for (p = pupa_disk_dev_list; p; p = p->next)
for (p = grub_disk_dev_list; p; p = p->next)
if ((p->iterate) (hook))
break;
}
pupa_disk_t
pupa_disk_open (const char *name)
grub_disk_t
grub_disk_open (const char *name)
{
char *p;
pupa_disk_t disk;
pupa_disk_dev_t dev;
grub_disk_t disk;
grub_disk_dev_t dev;
char *raw = (char *) name;
unsigned long current_time;
disk = (pupa_disk_t) pupa_malloc (sizeof (*disk));
disk = (grub_disk_t) grub_malloc (sizeof (*disk));
if (! disk)
return 0;
@ -211,67 +211,67 @@ pupa_disk_open (const char *name)
disk->read_hook = 0;
disk->partition = 0;
disk->data = 0;
disk->name = pupa_strdup (name);
disk->name = grub_strdup (name);
if (! disk->name)
goto fail;
p = pupa_strchr (name, ',');
p = grub_strchr (name, ',');
if (p)
{
pupa_size_t len = p - name;
grub_size_t len = p - name;
raw = pupa_malloc (len + 1);
raw = grub_malloc (len + 1);
if (! raw)
goto fail;
pupa_memcpy (raw, name, len);
grub_memcpy (raw, name, len);
raw[len] = '\0';
}
for (dev = pupa_disk_dev_list; dev; dev = dev->next)
for (dev = grub_disk_dev_list; dev; dev = dev->next)
{
if ((dev->open) (raw, disk) == PUPA_ERR_NONE)
if ((dev->open) (raw, disk) == GRUB_ERR_NONE)
break;
else if (pupa_errno == PUPA_ERR_UNKNOWN_DEVICE)
pupa_errno = PUPA_ERR_NONE;
else if (grub_errno == GRUB_ERR_UNKNOWN_DEVICE)
grub_errno = GRUB_ERR_NONE;
else
goto fail;
}
if (! dev)
{
pupa_error (PUPA_ERR_UNKNOWN_DEVICE, "no such disk");
grub_error (GRUB_ERR_UNKNOWN_DEVICE, "no such disk");
goto fail;
}
if (p && ! disk->has_partitions)
{
pupa_error (PUPA_ERR_BAD_DEVICE, "no partition on this disk");
grub_error (GRUB_ERR_BAD_DEVICE, "no partition on this disk");
goto fail;
}
disk->dev = dev;
if (p)
disk->partition = pupa_partition_probe (disk, p + 1);
disk->partition = grub_partition_probe (disk, p + 1);
/* The cache will be invalidated about 2 seconds after a device was
closed. */
current_time = pupa_get_rtc ();
current_time = grub_get_rtc ();
if (current_time > pupa_last_time + PUPA_CACHE_TIMEOUT * PUPA_TICKS_PER_SECOND)
pupa_disk_cache_invalidate_all ();
if (current_time > grub_last_time + GRUB_CACHE_TIMEOUT * GRUB_TICKS_PER_SECOND)
grub_disk_cache_invalidate_all ();
pupa_last_time = current_time;
grub_last_time = current_time;
fail:
if (raw && raw != name)
pupa_free (raw);
grub_free (raw);
if (pupa_errno != PUPA_ERR_NONE)
if (grub_errno != GRUB_ERR_NONE)
{
pupa_disk_close (disk);
grub_disk_close (disk);
return 0;
}
@ -279,64 +279,64 @@ pupa_disk_open (const char *name)
}
void
pupa_disk_close (pupa_disk_t disk)
grub_disk_close (grub_disk_t disk)
{
if (disk->dev && disk->dev->close)
(disk->dev->close) (disk);
/* Reset the timer. */
pupa_last_time = pupa_get_rtc ();
grub_last_time = grub_get_rtc ();
pupa_free (disk->partition);
pupa_free ((void *) disk->name);
pupa_free (disk);
grub_free (disk->partition);
grub_free ((void *) disk->name);
grub_free (disk);
}
static pupa_err_t
pupa_disk_check_range (pupa_disk_t disk, unsigned long *sector,
unsigned long *offset, pupa_ssize_t size)
static grub_err_t
grub_disk_check_range (grub_disk_t disk, unsigned long *sector,
unsigned long *offset, grub_ssize_t size)
{
*sector += *offset >> PUPA_DISK_SECTOR_BITS;
*offset &= PUPA_DISK_SECTOR_SIZE - 1;
*sector += *offset >> GRUB_DISK_SECTOR_BITS;
*offset &= GRUB_DISK_SECTOR_SIZE - 1;
if (disk->partition)
{
unsigned long start, len;
start = pupa_partition_get_start (disk->partition);
len = pupa_partition_get_len (disk->partition);
start = grub_partition_get_start (disk->partition);
len = grub_partition_get_len (disk->partition);
if (*sector >= len
|| len - *sector < ((*offset + size + PUPA_DISK_SECTOR_SIZE - 1)
>> PUPA_DISK_SECTOR_BITS))
return pupa_error (PUPA_ERR_OUT_OF_RANGE, "out of partition");
|| len - *sector < ((*offset + size + GRUB_DISK_SECTOR_SIZE - 1)
>> GRUB_DISK_SECTOR_BITS))
return grub_error (GRUB_ERR_OUT_OF_RANGE, "out of partition");
*sector += start;
}
if (disk->total_sectors <= *sector
|| ((*offset + size + PUPA_DISK_SECTOR_SIZE - 1)
>> PUPA_DISK_SECTOR_BITS) > disk->total_sectors - *sector)
return pupa_error (PUPA_ERR_OUT_OF_RANGE, "out of disk");
|| ((*offset + size + GRUB_DISK_SECTOR_SIZE - 1)
>> GRUB_DISK_SECTOR_BITS) > disk->total_sectors - *sector)
return grub_error (GRUB_ERR_OUT_OF_RANGE, "out of disk");
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
/* Read data from the disk. */
pupa_err_t
pupa_disk_read (pupa_disk_t disk, unsigned long sector,
grub_err_t
grub_disk_read (grub_disk_t disk, unsigned long sector,
unsigned long offset, unsigned long size, char *buf)
{
char *tmp_buf;
/* First of all, check if the region is within the disk. */
if (pupa_disk_check_range (disk, &sector, &offset, size) != PUPA_ERR_NONE)
return pupa_errno;
if (grub_disk_check_range (disk, &sector, &offset, size) != GRUB_ERR_NONE)
return grub_errno;
/* Allocate a temporary buffer. */
tmp_buf = pupa_malloc (PUPA_DISK_SECTOR_SIZE << PUPA_DISK_CACHE_BITS);
tmp_buf = grub_malloc (GRUB_DISK_SECTOR_SIZE << GRUB_DISK_CACHE_BITS);
if (! tmp_buf)
return pupa_errno;
return grub_errno;
/* Until SIZE is zero... */
while (size)
@ -347,54 +347,54 @@ pupa_disk_read (pupa_disk_t disk, unsigned long sector,
unsigned long pos;
/* For reading bulk data. */
start_sector = sector & ~(PUPA_DISK_CACHE_SIZE - 1);
pos = (sector - start_sector) << PUPA_DISK_SECTOR_BITS;
len = (PUPA_DISK_SECTOR_SIZE << PUPA_DISK_CACHE_BITS) - pos - offset;
start_sector = sector & ~(GRUB_DISK_CACHE_SIZE - 1);
pos = (sector - start_sector) << GRUB_DISK_SECTOR_BITS;
len = (GRUB_DISK_SECTOR_SIZE << GRUB_DISK_CACHE_BITS) - pos - offset;
if (len > size)
len = size;
/* Fetch the cache. */
data = pupa_disk_cache_fetch (disk->id, start_sector);
data = grub_disk_cache_fetch (disk->id, start_sector);
if (data)
{
/* Just copy it! */
pupa_memcpy (buf, data + pos + offset, len);
pupa_disk_cache_unlock (disk->id, start_sector);
grub_memcpy (buf, data + pos + offset, len);
grub_disk_cache_unlock (disk->id, start_sector);
}
else
{
/* Otherwise read data from the disk actually. */
if ((disk->dev->read) (disk, start_sector,
PUPA_DISK_CACHE_SIZE, tmp_buf)
!= PUPA_ERR_NONE)
GRUB_DISK_CACHE_SIZE, tmp_buf)
!= GRUB_ERR_NONE)
{
/* Uggh... Failed. Instead, just read necessary data. */
unsigned num;
pupa_errno = PUPA_ERR_NONE;
grub_errno = GRUB_ERR_NONE;
/* If more data is required, no way. */
if (pos + size
>= (PUPA_DISK_SECTOR_SIZE << PUPA_DISK_CACHE_BITS))
>= (GRUB_DISK_SECTOR_SIZE << GRUB_DISK_CACHE_BITS))
goto finish;
num = ((size + PUPA_DISK_SECTOR_SIZE - 1)
>> PUPA_DISK_SECTOR_BITS);
num = ((size + GRUB_DISK_SECTOR_SIZE - 1)
>> GRUB_DISK_SECTOR_BITS);
if ((disk->dev->read) (disk, sector, num, tmp_buf))
goto finish;
pupa_memcpy (buf, tmp_buf + offset, size);
grub_memcpy (buf, tmp_buf + offset, size);
/* Call the read hook, if any. */
if (disk->read_hook)
while (size)
{
(disk->read_hook) (sector, offset,
((size > PUPA_DISK_SECTOR_SIZE)
? PUPA_DISK_SECTOR_SIZE
((size > GRUB_DISK_SECTOR_SIZE)
? GRUB_DISK_SECTOR_SIZE
: size));
sector++;
size -= PUPA_DISK_SECTOR_SIZE - offset;
size -= GRUB_DISK_SECTOR_SIZE - offset;
offset = 0;
}
@ -403,8 +403,8 @@ pupa_disk_read (pupa_disk_t disk, unsigned long sector,
}
/* Copy it and store it in the disk cache. */
pupa_memcpy (buf, tmp_buf + pos + offset, len);
pupa_disk_cache_store (disk->id, start_sector, tmp_buf);
grub_memcpy (buf, tmp_buf + pos + offset, len);
grub_disk_cache_store (disk->id, start_sector, tmp_buf);
}
/* Call the read hook, if any. */
@ -416,20 +416,20 @@ pupa_disk_read (pupa_disk_t disk, unsigned long sector,
while (l)
{
(disk->read_hook) (s, offset,
((l > PUPA_DISK_SECTOR_SIZE)
? PUPA_DISK_SECTOR_SIZE
((l > GRUB_DISK_SECTOR_SIZE)
? GRUB_DISK_SECTOR_SIZE
: l));
if (l < PUPA_DISK_SECTOR_SIZE - offset)
if (l < GRUB_DISK_SECTOR_SIZE - offset)
break;
s++;
l -= PUPA_DISK_SECTOR_SIZE - offset;
l -= GRUB_DISK_SECTOR_SIZE - offset;
offset = 0;
}
}
sector = start_sector + PUPA_DISK_CACHE_SIZE;
sector = start_sector + GRUB_DISK_CACHE_SIZE;
buf += len;
size -= len;
offset = 0;
@ -437,38 +437,38 @@ pupa_disk_read (pupa_disk_t disk, unsigned long sector,
finish:
pupa_free (tmp_buf);
grub_free (tmp_buf);
return pupa_errno;
return grub_errno;
}
pupa_err_t
pupa_disk_write (pupa_disk_t disk, unsigned long sector,
grub_err_t
grub_disk_write (grub_disk_t disk, unsigned long sector,
unsigned long offset, unsigned long size, const char *buf)
{
if (pupa_disk_check_range (disk, &sector, &offset, size) != PUPA_ERR_NONE)
if (grub_disk_check_range (disk, &sector, &offset, size) != GRUB_ERR_NONE)
return -1;
while (size)
{
if (offset != 0 || (size < PUPA_DISK_SECTOR_SIZE && size != 0))
if (offset != 0 || (size < GRUB_DISK_SECTOR_SIZE && size != 0))
{
char tmp_buf[PUPA_DISK_SECTOR_SIZE];
char tmp_buf[GRUB_DISK_SECTOR_SIZE];
unsigned long len;
if (pupa_disk_read (disk, sector, 0, PUPA_DISK_SECTOR_SIZE, tmp_buf)
!= PUPA_ERR_NONE)
if (grub_disk_read (disk, sector, 0, GRUB_DISK_SECTOR_SIZE, tmp_buf)
!= GRUB_ERR_NONE)
goto finish;
len = PUPA_DISK_SECTOR_SIZE - offset;
len = GRUB_DISK_SECTOR_SIZE - offset;
if (len > size)
len = size;
pupa_memcpy (tmp_buf + offset, buf, len);
grub_memcpy (tmp_buf + offset, buf, len);
pupa_disk_cache_invalidate (disk->id, sector);
grub_disk_cache_invalidate (disk->id, sector);
if ((disk->dev->write) (disk, sector, 1, tmp_buf) != PUPA_ERR_NONE)
if ((disk->dev->write) (disk, sector, 1, tmp_buf) != GRUB_ERR_NONE)
goto finish;
sector++;
@ -481,14 +481,14 @@ pupa_disk_write (pupa_disk_t disk, unsigned long sector,
unsigned long len;
unsigned long n;
len = size & ~(PUPA_DISK_SECTOR_SIZE - 1);
n = size >> PUPA_DISK_SECTOR_BITS;
len = size & ~(GRUB_DISK_SECTOR_SIZE - 1);
n = size >> GRUB_DISK_SECTOR_BITS;
if ((disk->dev->write) (disk, sector, n, buf) != PUPA_ERR_NONE)
if ((disk->dev->write) (disk, sector, n, buf) != GRUB_ERR_NONE)
goto finish;
while (n--)
pupa_disk_cache_invalidate (disk->id, sector++);
grub_disk_cache_invalidate (disk->id, sector++);
buf += len;
size -= len;
@ -497,46 +497,46 @@ pupa_disk_write (pupa_disk_t disk, unsigned long sector,
finish:
return pupa_errno;
return grub_errno;
}
pupa_err_t
pupa_print_partinfo (pupa_device_t disk, char *partname)
grub_err_t
grub_print_partinfo (grub_device_t disk, char *partname)
{
pupa_fs_t fs = 0;
pupa_device_t part;
grub_fs_t fs = 0;
grub_device_t part;
char devname[20];
pupa_sprintf (devname, "%s,%s", disk->disk->name, partname);
part = pupa_device_open (devname);
grub_sprintf (devname, "%s,%s", disk->disk->name, partname);
part = grub_device_open (devname);
if (!part)
pupa_printf ("\tPartition num:%s, Filesystem cannot be accessed",
grub_printf ("\tPartition num:%s, Filesystem cannot be accessed",
partname);
else
{
char *label;
fs = pupa_fs_probe (part);
fs = grub_fs_probe (part);
/* Ignore all errors. */
pupa_errno = 0;
grub_errno = 0;
pupa_printf ("\tPartition num:%s, Filesystem type %s",
grub_printf ("\tPartition num:%s, Filesystem type %s",
partname, fs ? fs->name : "Unknown");
if (fs)
{
(fs->label) (part, &label);
if (pupa_errno == PUPA_ERR_NONE)
if (grub_errno == GRUB_ERR_NONE)
{
if (label && pupa_strlen (label))
pupa_printf (", Label: %s", label);
pupa_free (label);
if (label && grub_strlen (label))
grub_printf (", Label: %s", label);
grub_free (label);
}
pupa_errno = PUPA_ERR_NONE;
grub_errno = GRUB_ERR_NONE;
}
pupa_device_close (part);
grub_device_close (part);
}
pupa_printf ("\n");
return pupa_errno;
grub_printf ("\n");
return grub_errno;
}

382
kern/dl.c
View file

@ -1,9 +1,9 @@
/* dl.c - loadable module support */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,22 +14,22 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <config.h>
#include <pupa/elf.h>
#include <pupa/dl.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <pupa/symbol.h>
#include <pupa/file.h>
#include <pupa/env.h>
#include <grub/elf.h>
#include <grub/dl.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/err.h>
#include <grub/types.h>
#include <grub/symbol.h>
#include <grub/file.h>
#include <grub/env.h>
#if PUPA_HOST_SIZEOF_VOID_P == 4
#if GRUB_HOST_SIZEOF_VOID_P == 4
typedef Elf32_Word Elf_Word;
typedef Elf32_Addr Elf_Addr;
@ -40,7 +40,7 @@ typedef Elf32_Sym Elf_Sym;
# define ELF_ST_BIND(val) ELF32_ST_BIND (val)
# define ELF_ST_TYPE(val) ELF32_ST_TYPE (val)
#elif PUPA_HOST_SIZEOF_VOID_P == 8
#elif GRUB_HOST_SIZEOF_VOID_P == 8
typedef Elf64_Word Elf_Word;
typedef Elf64_Addr Elf_Addr;
@ -55,132 +55,132 @@ typedef Elf64_Sym Elf_Sym;
struct pupa_dl_list
struct grub_dl_list
{
struct pupa_dl_list *next;
pupa_dl_t mod;
struct grub_dl_list *next;
grub_dl_t mod;
};
typedef struct pupa_dl_list *pupa_dl_list_t;
typedef struct grub_dl_list *grub_dl_list_t;
static pupa_dl_list_t pupa_dl_head;
static grub_dl_list_t grub_dl_head;
static pupa_err_t
pupa_dl_add (pupa_dl_t mod)
static grub_err_t
grub_dl_add (grub_dl_t mod)
{
pupa_dl_list_t l;
grub_dl_list_t l;
if (pupa_dl_get (mod->name))
return pupa_error (PUPA_ERR_BAD_MODULE,
if (grub_dl_get (mod->name))
return grub_error (GRUB_ERR_BAD_MODULE,
"`%s' is already loaded", mod->name);
l = (pupa_dl_list_t) pupa_malloc (sizeof (*l));
l = (grub_dl_list_t) grub_malloc (sizeof (*l));
if (! l)
return pupa_errno;
return grub_errno;
l->mod = mod;
l->next = pupa_dl_head;
pupa_dl_head = l;
l->next = grub_dl_head;
grub_dl_head = l;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
static void
pupa_dl_remove (pupa_dl_t mod)
grub_dl_remove (grub_dl_t mod)
{
pupa_dl_list_t *p, q;
grub_dl_list_t *p, q;
for (p = &pupa_dl_head, q = *p; q; p = &q->next, q = *p)
for (p = &grub_dl_head, q = *p; q; p = &q->next, q = *p)
if (q->mod == mod)
{
*p = q->next;
pupa_free (q);
grub_free (q);
return;
}
}
pupa_dl_t
pupa_dl_get (const char *name)
grub_dl_t
grub_dl_get (const char *name)
{
pupa_dl_list_t l;
grub_dl_list_t l;
for (l = pupa_dl_head; l; l = l->next)
if (pupa_strcmp (name, l->mod->name) == 0)
for (l = grub_dl_head; l; l = l->next)
if (grub_strcmp (name, l->mod->name) == 0)
return l->mod;
return 0;
}
void
pupa_dl_iterate (int (*hook) (pupa_dl_t mod))
grub_dl_iterate (int (*hook) (grub_dl_t mod))
{
pupa_dl_list_t l;
grub_dl_list_t l;
for (l = pupa_dl_head; l; l = l->next)
for (l = grub_dl_head; l; l = l->next)
if (hook (l->mod))
break;
}
struct pupa_symbol
struct grub_symbol
{
struct pupa_symbol *next;
struct grub_symbol *next;
const char *name;
void *addr;
pupa_dl_t mod; /* The module to which this symbol belongs. */
grub_dl_t mod; /* The module to which this symbol belongs. */
};
typedef struct pupa_symbol *pupa_symbol_t;
typedef struct grub_symbol *grub_symbol_t;
/* The size of the symbol table. */
#define PUPA_SYMTAB_SIZE 509
#define GRUB_SYMTAB_SIZE 509
/* The symbol table (using an open-hash). */
static struct pupa_symbol *pupa_symtab[PUPA_SYMTAB_SIZE];
static struct grub_symbol *grub_symtab[GRUB_SYMTAB_SIZE];
/* Simple hash function. */
static unsigned
pupa_symbol_hash (const char *s)
grub_symbol_hash (const char *s)
{
unsigned key = 0;
while (*s)
key = key * 65599 + *s++;
return (key + (key >> 5)) % PUPA_SYMTAB_SIZE;
return (key + (key >> 5)) % GRUB_SYMTAB_SIZE;
}
/* Resolve the symbol name NAME and return the address.
Return NULL, if not found. */
void *
pupa_dl_resolve_symbol (const char *name)
grub_dl_resolve_symbol (const char *name)
{
pupa_symbol_t sym;
grub_symbol_t sym;
for (sym = pupa_symtab[pupa_symbol_hash (name)]; sym; sym = sym->next)
if (pupa_strcmp (sym->name, name) == 0)
for (sym = grub_symtab[grub_symbol_hash (name)]; sym; sym = sym->next)
if (grub_strcmp (sym->name, name) == 0)
return sym->addr;
return 0;
}
/* Register a symbol with the name NAME and the address ADDR. */
pupa_err_t
pupa_dl_register_symbol (const char *name, void *addr, pupa_dl_t mod)
grub_err_t
grub_dl_register_symbol (const char *name, void *addr, grub_dl_t mod)
{
pupa_symbol_t sym;
grub_symbol_t sym;
unsigned k;
sym = (pupa_symbol_t) pupa_malloc (sizeof (*sym));
sym = (grub_symbol_t) grub_malloc (sizeof (*sym));
if (! sym)
return pupa_errno;
return grub_errno;
if (mod)
{
sym->name = pupa_strdup (name);
sym->name = grub_strdup (name);
if (! sym->name)
{
pupa_free (sym);
return pupa_errno;
grub_free (sym);
return grub_errno;
}
}
else
@ -189,34 +189,34 @@ pupa_dl_register_symbol (const char *name, void *addr, pupa_dl_t mod)
sym->addr = addr;
sym->mod = mod;
k = pupa_symbol_hash (name);
sym->next = pupa_symtab[k];
pupa_symtab[k] = sym;
k = grub_symbol_hash (name);
sym->next = grub_symtab[k];
grub_symtab[k] = sym;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
/* Unregister all the symbols defined in the module MOD. */
static void
pupa_dl_unregister_symbols (pupa_dl_t mod)
grub_dl_unregister_symbols (grub_dl_t mod)
{
unsigned i;
if (! mod)
pupa_fatal ("core symbols cannot be unregistered");
grub_fatal ("core symbols cannot be unregistered");
for (i = 0; i < PUPA_SYMTAB_SIZE; i++)
for (i = 0; i < GRUB_SYMTAB_SIZE; i++)
{
pupa_symbol_t sym, *p, q;
grub_symbol_t sym, *p, q;
for (p = &pupa_symtab[i], sym = *p; sym; sym = q)
for (p = &grub_symtab[i], sym = *p; sym; sym = q)
{
q = sym->next;
if (sym->mod == mod)
{
*p = q;
pupa_free ((void *) sym->name);
pupa_free (sym);
grub_free ((void *) sym->name);
grub_free (sym);
}
else
p = &sym->next;
@ -226,9 +226,9 @@ pupa_dl_unregister_symbols (pupa_dl_t mod)
/* Return the address of a section whose index is N. */
static void *
pupa_dl_get_section_addr (pupa_dl_t mod, unsigned n)
grub_dl_get_section_addr (grub_dl_t mod, unsigned n)
{
pupa_dl_segment_t seg;
grub_dl_segment_t seg;
for (seg = mod->segment; seg; seg = seg->next)
if (seg->section == n)
@ -238,8 +238,8 @@ pupa_dl_get_section_addr (pupa_dl_t mod, unsigned n)
}
/* Load all segments from memory specified by E. */
static pupa_err_t
pupa_dl_load_segments (pupa_dl_t mod, const Elf_Ehdr *e)
static grub_err_t
grub_dl_load_segments (grub_dl_t mod, const Elf_Ehdr *e)
{
unsigned i;
Elf_Shdr *s;
@ -250,30 +250,30 @@ pupa_dl_load_segments (pupa_dl_t mod, const Elf_Ehdr *e)
{
if (s->sh_flags & SHF_ALLOC)
{
pupa_dl_segment_t seg;
grub_dl_segment_t seg;
seg = (pupa_dl_segment_t) pupa_malloc (sizeof (*seg));
seg = (grub_dl_segment_t) grub_malloc (sizeof (*seg));
if (! seg)
return pupa_errno;
return grub_errno;
if (s->sh_size)
{
void *addr;
addr = pupa_memalign (s->sh_addralign, s->sh_size);
addr = grub_memalign (s->sh_addralign, s->sh_size);
if (! addr)
{
pupa_free (seg);
return pupa_errno;
grub_free (seg);
return grub_errno;
}
switch (s->sh_type)
{
case SHT_PROGBITS:
pupa_memcpy (addr, (char *) e + s->sh_offset, s->sh_size);
grub_memcpy (addr, (char *) e + s->sh_offset, s->sh_size);
break;
case SHT_NOBITS:
pupa_memset (addr, 0, s->sh_size);
grub_memset (addr, 0, s->sh_size);
break;
}
@ -289,11 +289,11 @@ pupa_dl_load_segments (pupa_dl_t mod, const Elf_Ehdr *e)
}
}
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
static pupa_err_t
pupa_dl_resolve_symbols (pupa_dl_t mod, Elf_Ehdr *e)
static grub_err_t
grub_dl_resolve_symbols (grub_dl_t mod, Elf_Ehdr *e)
{
unsigned i;
Elf_Shdr *s;
@ -308,7 +308,7 @@ pupa_dl_resolve_symbols (pupa_dl_t mod, Elf_Ehdr *e)
break;
if (i == e->e_shnum)
return pupa_error (PUPA_ERR_BAD_MODULE, "no symbol table");
return grub_error (GRUB_ERR_BAD_MODULE, "no symbol table");
sym = (Elf_Sym *) ((char *) e + s->sh_offset);
size = s->sh_size;
@ -331,9 +331,9 @@ pupa_dl_resolve_symbols (pupa_dl_t mod, Elf_Ehdr *e)
/* Resolve a global symbol. */
if (sym->st_name != 0 && sym->st_shndx == 0)
{
sym->st_value = (Elf_Addr) pupa_dl_resolve_symbol (name);
sym->st_value = (Elf_Addr) grub_dl_resolve_symbol (name);
if (! sym->st_value)
return pupa_error (PUPA_ERR_BAD_MODULE,
return grub_error (GRUB_ERR_BAD_MODULE,
"the symbol `%s' not found", name);
}
else
@ -341,28 +341,28 @@ pupa_dl_resolve_symbols (pupa_dl_t mod, Elf_Ehdr *e)
break;
case STT_OBJECT:
sym->st_value += (Elf_Addr) pupa_dl_get_section_addr (mod,
sym->st_value += (Elf_Addr) grub_dl_get_section_addr (mod,
sym->st_shndx);
if (bind != STB_LOCAL)
if (pupa_dl_register_symbol (name, (void *) sym->st_value, mod))
return pupa_errno;
if (grub_dl_register_symbol (name, (void *) sym->st_value, mod))
return grub_errno;
break;
case STT_FUNC:
sym->st_value += (Elf_Addr) pupa_dl_get_section_addr (mod,
sym->st_value += (Elf_Addr) grub_dl_get_section_addr (mod,
sym->st_shndx);
if (bind != STB_LOCAL)
if (pupa_dl_register_symbol (name, (void *) sym->st_value, mod))
return pupa_errno;
if (grub_dl_register_symbol (name, (void *) sym->st_value, mod))
return grub_errno;
if (pupa_strcmp (name, "pupa_mod_init") == 0)
mod->init = (void (*) (pupa_dl_t)) sym->st_value;
else if (pupa_strcmp (name, "pupa_mod_fini") == 0)
if (grub_strcmp (name, "grub_mod_init") == 0)
mod->init = (void (*) (grub_dl_t)) sym->st_value;
else if (grub_strcmp (name, "grub_mod_fini") == 0)
mod->fini = (void (*) (void)) sym->st_value;
break;
case STT_SECTION:
sym->st_value = (Elf_Addr) pupa_dl_get_section_addr (mod,
sym->st_value = (Elf_Addr) grub_dl_get_section_addr (mod,
sym->st_shndx);
break;
@ -371,23 +371,23 @@ pupa_dl_resolve_symbols (pupa_dl_t mod, Elf_Ehdr *e)
break;
default:
return pupa_error (PUPA_ERR_BAD_MODULE,
return grub_error (GRUB_ERR_BAD_MODULE,
"unknown symbol type `%d'", (int) type);
}
}
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
static void
pupa_dl_call_init (pupa_dl_t mod)
grub_dl_call_init (grub_dl_t mod)
{
if (mod->init)
(mod->init) (mod);
}
static pupa_err_t
pupa_dl_resolve_name (pupa_dl_t mod, Elf_Ehdr *e)
static grub_err_t
grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
{
Elf_Shdr *s;
const char *str;
@ -399,22 +399,22 @@ pupa_dl_resolve_name (pupa_dl_t mod, Elf_Ehdr *e)
for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
i < e->e_shnum;
i++, s = (Elf_Shdr *) ((char *) s + e->e_shentsize))
if (pupa_strcmp (str + s->sh_name, ".modname") == 0)
if (grub_strcmp (str + s->sh_name, ".modname") == 0)
{
mod->name = pupa_strdup ((char *) e + s->sh_offset);
mod->name = grub_strdup ((char *) e + s->sh_offset);
if (! mod->name)
return pupa_errno;
return grub_errno;
break;
}
if (i == e->e_shnum)
return pupa_error (PUPA_ERR_BAD_MODULE, "no module name found");
return grub_error (GRUB_ERR_BAD_MODULE, "no module name found");
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
static pupa_err_t
pupa_dl_resolve_dependencies (pupa_dl_t mod, Elf_Ehdr *e)
static grub_err_t
grub_dl_resolve_dependencies (grub_dl_t mod, Elf_Ehdr *e)
{
Elf_Shdr *s;
const char *str;
@ -426,74 +426,74 @@ pupa_dl_resolve_dependencies (pupa_dl_t mod, Elf_Ehdr *e)
for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
i < e->e_shnum;
i++, s = (Elf_Shdr *) ((char *) s + e->e_shentsize))
if (pupa_strcmp (str + s->sh_name, ".moddeps") == 0)
if (grub_strcmp (str + s->sh_name, ".moddeps") == 0)
{
const char *name = (char *) e + s->sh_offset;
const char *max = name + s->sh_size;
while (name < max)
{
pupa_dl_t m;
pupa_dl_dep_t dep;
grub_dl_t m;
grub_dl_dep_t dep;
m = pupa_dl_load (name);
m = grub_dl_load (name);
if (! m)
return pupa_errno;
return grub_errno;
pupa_dl_ref (m);
grub_dl_ref (m);
dep = (pupa_dl_dep_t) pupa_malloc (sizeof (*dep));
dep = (grub_dl_dep_t) grub_malloc (sizeof (*dep));
if (! dep)
return pupa_errno;
return grub_errno;
dep->mod = m;
dep->next = mod->dep;
mod->dep = dep;
name += pupa_strlen (name) + 1;
name += grub_strlen (name) + 1;
}
}
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}
int
pupa_dl_ref (pupa_dl_t mod)
grub_dl_ref (grub_dl_t mod)
{
pupa_dl_dep_t dep;
grub_dl_dep_t dep;
for (dep = mod->dep; dep; dep = dep->next)
pupa_dl_ref (dep->mod);
grub_dl_ref (dep->mod);
return ++mod->ref_count;
}
int
pupa_dl_unref (pupa_dl_t mod)
grub_dl_unref (grub_dl_t mod)
{
pupa_dl_dep_t dep;
grub_dl_dep_t dep;
for (dep = mod->dep; dep; dep = dep->next)
pupa_dl_unref (dep->mod);
grub_dl_unref (dep->mod);
return --mod->ref_count;
}
/* Load a module from core memory. */
pupa_dl_t
pupa_dl_load_core (void *addr, pupa_size_t size)
grub_dl_t
grub_dl_load_core (void *addr, grub_size_t size)
{
Elf_Ehdr *e;
pupa_dl_t mod;
grub_dl_t mod;
e = addr;
if (! pupa_arch_dl_check_header (e, size))
if (! grub_arch_dl_check_header (e, size))
{
pupa_error (PUPA_ERR_BAD_MODULE, "invalid ELF header");
grub_error (GRUB_ERR_BAD_MODULE, "invalid ELF header");
return 0;
}
mod = (pupa_dl_t) pupa_malloc (sizeof (*mod));
mod = (grub_dl_t) grub_malloc (sizeof (*mod));
if (! mod)
return 0;
@ -504,22 +504,22 @@ pupa_dl_load_core (void *addr, pupa_size_t size)
mod->init = 0;
mod->fini = 0;
if (pupa_dl_resolve_name (mod, e)
|| pupa_dl_resolve_dependencies (mod, e)
|| pupa_dl_load_segments (mod, e)
|| pupa_dl_resolve_symbols (mod, e)
|| pupa_arch_dl_relocate_symbols (mod, e))
if (grub_dl_resolve_name (mod, e)
|| grub_dl_resolve_dependencies (mod, e)
|| grub_dl_load_segments (mod, e)
|| grub_dl_resolve_symbols (mod, e)
|| grub_arch_dl_relocate_symbols (mod, e))
{
mod->fini = 0;
pupa_dl_unload (mod);
grub_dl_unload (mod);
return 0;
}
pupa_dl_call_init (mod);
grub_dl_call_init (mod);
if (pupa_dl_add (mod))
if (grub_dl_add (mod))
{
pupa_dl_unload (mod);
grub_dl_unload (mod);
return 0;
}
@ -527,75 +527,75 @@ pupa_dl_load_core (void *addr, pupa_size_t size)
}
/* Load a module from the file FILENAME. */
pupa_dl_t
pupa_dl_load_file (const char *filename)
grub_dl_t
grub_dl_load_file (const char *filename)
{
pupa_file_t file;
pupa_ssize_t size;
grub_file_t file;
grub_ssize_t size;
void *core = 0;
pupa_dl_t mod = 0;
grub_dl_t mod = 0;
file = pupa_file_open (filename);
file = grub_file_open (filename);
if (! file)
return 0;
size = pupa_file_size (file);
core = pupa_malloc (size);
size = grub_file_size (file);
core = grub_malloc (size);
if (! core)
goto failed;
if (pupa_file_read (file, core, size) != (int) size)
if (grub_file_read (file, core, size) != (int) size)
goto failed;
mod = pupa_dl_load_core (core, size);
mod = grub_dl_load_core (core, size);
mod->ref_count = 0;
failed:
pupa_file_close (file);
pupa_free (core);
grub_file_close (file);
grub_free (core);
return mod;
}
/* Load a module using a symbolic name. */
pupa_dl_t
pupa_dl_load (const char *name)
grub_dl_t
grub_dl_load (const char *name)
{
char *filename;
pupa_dl_t mod;
char *pupa_dl_dir = pupa_env_get ("prefix");
grub_dl_t mod;
char *grub_dl_dir = grub_env_get ("prefix");
mod = pupa_dl_get (name);
mod = grub_dl_get (name);
if (mod)
return mod;
if (! pupa_dl_dir)
pupa_fatal ("module dir is not initialized yet");
if (! grub_dl_dir)
grub_fatal ("module dir is not initialized yet");
filename = (char *) pupa_malloc (pupa_strlen (pupa_dl_dir) + 1
+ pupa_strlen (name) + 4 + 1);
filename = (char *) grub_malloc (grub_strlen (grub_dl_dir) + 1
+ grub_strlen (name) + 4 + 1);
if (! filename)
return 0;
pupa_sprintf (filename, "%s/%s.mod", pupa_dl_dir, name);
mod = pupa_dl_load_file (filename);
pupa_free (filename);
grub_sprintf (filename, "%s/%s.mod", grub_dl_dir, name);
mod = grub_dl_load_file (filename);
grub_free (filename);
if (! mod)
return 0;
if (pupa_strcmp (mod->name, name) != 0)
pupa_error (PUPA_ERR_BAD_MODULE, "mismatched names");
if (grub_strcmp (mod->name, name) != 0)
grub_error (GRUB_ERR_BAD_MODULE, "mismatched names");
return mod;
}
/* Unload the module MOD. */
int
pupa_dl_unload (pupa_dl_t mod)
grub_dl_unload (grub_dl_t mod)
{
pupa_dl_dep_t dep, depn;
pupa_dl_segment_t seg, segn;
grub_dl_dep_t dep, depn;
grub_dl_segment_t seg, segn;
if (mod->ref_count > 0)
return 0;
@ -603,44 +603,44 @@ pupa_dl_unload (pupa_dl_t mod)
if (mod->fini)
(mod->fini) ();
pupa_dl_remove (mod);
pupa_dl_unregister_symbols (mod);
grub_dl_remove (mod);
grub_dl_unregister_symbols (mod);
for (dep = mod->dep; dep; dep = depn)
{
depn = dep->next;
if (! pupa_dl_unref (dep->mod))
pupa_dl_unload (dep->mod);
if (! grub_dl_unref (dep->mod))
grub_dl_unload (dep->mod);
pupa_free (dep);
grub_free (dep);
}
for (seg = mod->segment; seg; seg = segn)
{
segn = seg->next;
pupa_free (seg->addr);
pupa_free (seg);
grub_free (seg->addr);
grub_free (seg);
}
pupa_free (mod->name);
pupa_free (mod);
grub_free (mod->name);
grub_free (mod);
return 1;
}
/* Unload unneeded modules. */
void
pupa_dl_unload_unneeded (void)
grub_dl_unload_unneeded (void)
{
/* Because pupa_dl_remove modifies the list of modules, this
/* Because grub_dl_remove modifies the list of modules, this
implementation is tricky. */
pupa_dl_list_t p = pupa_dl_head;
grub_dl_list_t p = grub_dl_head;
while (p)
{
if (pupa_dl_unload (p->mod))
if (grub_dl_unload (p->mod))
{
p = pupa_dl_head;
p = grub_dl_head;
continue;
}
@ -650,17 +650,17 @@ pupa_dl_unload_unneeded (void)
/* Unload all modules. */
void
pupa_dl_unload_all (void)
grub_dl_unload_all (void)
{
while (pupa_dl_head)
while (grub_dl_head)
{
pupa_dl_list_t p;
grub_dl_list_t p;
pupa_dl_unload_unneeded ();
grub_dl_unload_unneeded ();
/* Force to decrement the ref count. This will purge pre-loaded
modules and manually inserted modules. */
for (p = pupa_dl_head; p; p = p->next)
for (p = grub_dl_head; p; p = p->next)
p->mod->ref_count--;
}
}

View file

@ -1,9 +1,9 @@
/* env.c - Environment variables */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,25 +14,25 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/env.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <grub/env.h>
#include <grub/misc.h>
#include <grub/mm.h>
/* XXX: What would be a good size for the hashtable? */
#define HASHSZ 123
/* A hashtable for quick lookup of variables. */
static struct pupa_env_var *pupa_env[HASHSZ];
static struct grub_env_var *grub_env[HASHSZ];
/* The variables in a sorted list. */
static struct pupa_env_var *pupa_env_sorted;
static struct grub_env_var *grub_env_sorted;
/* Return the hash representation of the string S. */
static unsigned int pupa_env_hashval (const char *s)
static unsigned int grub_env_hashval (const char *s)
{
unsigned int i = 0;
@ -43,73 +43,73 @@ static unsigned int pupa_env_hashval (const char *s)
return i % HASHSZ;
}
static struct pupa_env_var *
pupa_env_find (const char *name)
static struct grub_env_var *
grub_env_find (const char *name)
{
struct pupa_env_var *var;
int idx = pupa_env_hashval (name);
struct grub_env_var *var;
int idx = grub_env_hashval (name);
for (var = pupa_env[idx]; var; var = var->next)
if (! pupa_strcmp (var->name, name))
for (var = grub_env[idx]; var; var = var->next)
if (! grub_strcmp (var->name, name))
return var;
return 0;
}
pupa_err_t
pupa_env_set (const char *var, const char *val)
grub_err_t
grub_env_set (const char *var, const char *val)
{
int idx = pupa_env_hashval (var);
struct pupa_env_var *env;
struct pupa_env_var *sort;
struct pupa_env_var **sortp;
int idx = grub_env_hashval (var);
struct grub_env_var *env;
struct grub_env_var *sort;
struct grub_env_var **sortp;
/* If the variable does already exist, just update the variable. */
env = pupa_env_find (var);
env = grub_env_find (var);
if (env)
{
char *old = env->value;
env->value = pupa_strdup (val);
env->value = grub_strdup (val);
if (! env->name)
{
env->value = old;
return pupa_errno;
return grub_errno;
}
if (env->write_hook)
(env->write_hook) (env);
pupa_free (old);
grub_free (old);
return 0;
}
/* The variable does not exist, create it. */
env = pupa_malloc (sizeof (struct pupa_env_var));
env = grub_malloc (sizeof (struct grub_env_var));
if (! env)
return pupa_errno;
return grub_errno;
pupa_memset (env, 0, sizeof (struct pupa_env_var));
grub_memset (env, 0, sizeof (struct grub_env_var));
env->name = pupa_strdup (var);
env->name = grub_strdup (var);
if (! env->name)
goto fail;
env->value = pupa_strdup (val);
env->value = grub_strdup (val);
if (! env->name)
goto fail;
/* Insert it in the hashtable. */
env->prevp = &pupa_env[idx];
env->next = pupa_env[idx];
if (pupa_env[idx])
pupa_env[idx]->prevp = &env->next;
pupa_env[idx] = env;
env->prevp = &grub_env[idx];
env->next = grub_env[idx];
if (grub_env[idx])
grub_env[idx]->prevp = &env->next;
grub_env[idx] = env;
/* Insert it in the sorted list. */
sortp = &pupa_env_sorted;
sort = pupa_env_sorted;
sortp = &grub_env_sorted;
sort = grub_env_sorted;
while (sort)
{
if (pupa_strcmp (sort->name, var) > 0)
if (grub_strcmp (sort->name, var) > 0)
break;
sortp = &sort->sort_next;
@ -122,21 +122,21 @@ pupa_env_set (const char *var, const char *val)
*sortp = env;
fail:
if (pupa_errno)
if (grub_errno)
{
pupa_free (env->name);
pupa_free (env->value);
pupa_free (env);
grub_free (env->name);
grub_free (env->value);
grub_free (env);
}
return 0;
}
char *
pupa_env_get (const char *name)
grub_env_get (const char *name)
{
struct pupa_env_var *env;
env = pupa_env_find (name);
struct grub_env_var *env;
env = grub_env_find (name);
if (! env)
return 0;
@ -152,10 +152,10 @@ pupa_env_get (const char *name)
}
void
pupa_env_unset (const char *name)
grub_env_unset (const char *name)
{
struct pupa_env_var *env;
env = pupa_env_find (name);
struct grub_env_var *env;
env = grub_env_find (name);
if (! env)
return;
@ -172,38 +172,38 @@ pupa_env_unset (const char *name)
if (env->sort_next)
env->sort_next->sort_prevp = env->sort_prevp;
pupa_free (env->name);
pupa_free (env->value);
pupa_free (env);
grub_free (env->name);
grub_free (env->value);
grub_free (env);
return;
}
void
pupa_env_iterate (int (* func) (struct pupa_env_var *var))
grub_env_iterate (int (* func) (struct grub_env_var *var))
{
struct pupa_env_var *env;
struct grub_env_var *env;
for (env = pupa_env_sorted; env; env = env->sort_next)
for (env = grub_env_sorted; env; env = env->sort_next)
if (func (env))
return;
}
pupa_err_t
pupa_register_variable_hook (const char *var,
pupa_err_t (*read_hook) (struct pupa_env_var *var, char **),
pupa_err_t (*write_hook) (struct pupa_env_var *var))
grub_err_t
grub_register_variable_hook (const char *var,
grub_err_t (*read_hook) (struct grub_env_var *var, char **),
grub_err_t (*write_hook) (struct grub_env_var *var))
{
struct pupa_env_var *env = pupa_env_find (var);
struct grub_env_var *env = grub_env_find (var);
if (! env)
if (pupa_env_set (var, "") != PUPA_ERR_NONE)
return pupa_errno;
if (grub_env_set (var, "") != GRUB_ERR_NONE)
return grub_errno;
env = pupa_env_find (var);
env = grub_env_find (var);
/* XXX Insert an assertion? */
env->read_hook = read_hook;
env->write_hook = write_hook;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}

View file

@ -1,9 +1,9 @@
/* err.c - error handling routines */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,48 +14,48 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/err.h>
#include <pupa/misc.h>
#include <grub/err.h>
#include <grub/misc.h>
#include <stdarg.h>
#define PUPA_MAX_ERRMSG 256
#define GRUB_MAX_ERRMSG 256
pupa_err_t pupa_errno;
char pupa_errmsg[PUPA_MAX_ERRMSG];
grub_err_t grub_errno;
char grub_errmsg[GRUB_MAX_ERRMSG];
pupa_err_t
pupa_error (pupa_err_t n, const char *fmt, ...)
grub_err_t
grub_error (grub_err_t n, const char *fmt, ...)
{
va_list ap;
pupa_errno = n;
grub_errno = n;
va_start (ap, fmt);
pupa_vsprintf (pupa_errmsg, fmt, ap);
grub_vsprintf (grub_errmsg, fmt, ap);
va_end (ap);
return n;
}
void
pupa_fatal (const char *fmt, ...)
grub_fatal (const char *fmt, ...)
{
va_list ap;
va_start (ap, fmt);
pupa_vprintf (fmt, ap);
grub_vprintf (fmt, ap);
va_end (ap);
pupa_stop ();
grub_stop ();
}
void
pupa_print_error (void)
grub_print_error (void)
{
if (pupa_errno != PUPA_ERR_NONE)
pupa_printf ("error: %s\n", pupa_errmsg);
if (grub_errno != GRUB_ERR_NONE)
grub_printf ("error: %s\n", grub_errmsg);
}

View file

@ -1,9 +1,9 @@
/* file.c - file I/O functions */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,37 +14,37 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/misc.h>
#include <pupa/err.h>
#include <pupa/file.h>
#include <pupa/mm.h>
#include <pupa/fs.h>
#include <pupa/device.h>
#include <grub/misc.h>
#include <grub/err.h>
#include <grub/file.h>
#include <grub/mm.h>
#include <grub/fs.h>
#include <grub/device.h>
/* Get the device part of the filename NAME. It is enclosed by parentheses. */
char *
pupa_file_get_device_name (const char *name)
grub_file_get_device_name (const char *name)
{
if (name[0] == '(')
{
char *p = pupa_strchr (name, ')');
char *p = grub_strchr (name, ')');
char *ret;
if (! p)
{
pupa_error (PUPA_ERR_BAD_FILENAME, "missing `)'");
grub_error (GRUB_ERR_BAD_FILENAME, "missing `)'");
return 0;
}
ret = (char *) pupa_malloc (p - name);
ret = (char *) grub_malloc (p - name);
if (! ret)
return 0;
pupa_memcpy (ret, name + 1, p - name - 1);
grub_memcpy (ret, name + 1, p - name - 1);
ret[p - name - 1] = '\0';
return ret;
}
@ -52,31 +52,31 @@ pupa_file_get_device_name (const char *name)
return 0;
}
pupa_file_t
pupa_file_open (const char *name)
grub_file_t
grub_file_open (const char *name)
{
pupa_device_t device;
pupa_file_t file = 0;
grub_device_t device;
grub_file_t file = 0;
char *device_name;
char *file_name;
device_name = pupa_file_get_device_name (name);
if (pupa_errno)
device_name = grub_file_get_device_name (name);
if (grub_errno)
return 0;
/* Get the file part of NAME. */
file_name = pupa_strchr (name, ')');
file_name = grub_strchr (name, ')');
if (file_name)
file_name++;
else
file_name = (char *) name;
device = pupa_device_open (device_name);
pupa_free (device_name);
device = grub_device_open (device_name);
grub_free (device_name);
if (! device)
goto fail;
file = (pupa_file_t) pupa_malloc (sizeof (*file));
file = (grub_file_t) grub_malloc (sizeof (*file));
if (! file)
goto fail;
@ -87,34 +87,34 @@ pupa_file_open (const char *name)
if (device->disk && file_name[0] != '/')
/* This is a block list. */
file->fs = &pupa_fs_blocklist;
file->fs = &grub_fs_blocklist;
else
{
file->fs = pupa_fs_probe (device);
file->fs = grub_fs_probe (device);
if (! file->fs)
goto fail;
}
if ((file->fs->open) (file, file_name) != PUPA_ERR_NONE)
if ((file->fs->open) (file, file_name) != GRUB_ERR_NONE)
goto fail;
return file;
fail:
if (device)
pupa_device_close (device);
grub_device_close (device);
/* if (net) pupa_net_close (net); */
/* if (net) grub_net_close (net); */
pupa_free (file);
grub_free (file);
return 0;
}
pupa_ssize_t
pupa_file_read (pupa_file_t file, char *buf, pupa_ssize_t len)
grub_ssize_t
grub_file_read (grub_file_t file, char *buf, grub_ssize_t len)
{
pupa_ssize_t res;
grub_ssize_t res;
if (len == 0 || len > file->size - file->offset)
len = file->size - file->offset;
@ -129,25 +129,25 @@ pupa_file_read (pupa_file_t file, char *buf, pupa_ssize_t len)
return res;
}
pupa_err_t
pupa_file_close (pupa_file_t file)
grub_err_t
grub_file_close (grub_file_t file)
{
if (file->fs->close)
(file->fs->close) (file);
pupa_device_close (file->device);
pupa_free (file);
return pupa_errno;
grub_device_close (file->device);
grub_free (file);
return grub_errno;
}
pupa_ssize_t
pupa_file_seek (pupa_file_t file, pupa_ssize_t offset)
grub_ssize_t
grub_file_seek (grub_file_t file, grub_ssize_t offset)
{
pupa_ssize_t old;
grub_ssize_t old;
if (offset < 0 || offset >= file->size)
{
pupa_error (PUPA_ERR_OUT_OF_RANGE,
grub_error (GRUB_ERR_OUT_OF_RANGE,
"attempt to seek outside of the file");
return -1;
}

132
kern/fs.c
View file

@ -1,9 +1,9 @@
/* fs.c - filesystem manager */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,35 +14,35 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/disk.h>
#include <pupa/net.h>
#include <pupa/fs.h>
#include <pupa/file.h>
#include <pupa/err.h>
#include <pupa/misc.h>
#include <pupa/types.h>
#include <pupa/mm.h>
#include <pupa/term.h>
#include <grub/disk.h>
#include <grub/net.h>
#include <grub/fs.h>
#include <grub/file.h>
#include <grub/err.h>
#include <grub/misc.h>
#include <grub/types.h>
#include <grub/mm.h>
#include <grub/term.h>
static pupa_fs_t pupa_fs_list;
static grub_fs_t grub_fs_list;
void
pupa_fs_register (pupa_fs_t fs)
grub_fs_register (grub_fs_t fs)
{
fs->next = pupa_fs_list;
pupa_fs_list = fs;
fs->next = grub_fs_list;
grub_fs_list = fs;
}
void
pupa_fs_unregister (pupa_fs_t fs)
grub_fs_unregister (grub_fs_t fs)
{
pupa_fs_t *p, q;
grub_fs_t *p, q;
for (p = &pupa_fs_list, q = *p; q; p = &(q->next), q = q->next)
for (p = &grub_fs_list, q = *p; q; p = &(q->next), q = q->next)
if (q == fs)
{
*p = q->next;
@ -51,19 +51,19 @@ pupa_fs_unregister (pupa_fs_t fs)
}
void
pupa_fs_iterate (int (*hook) (const pupa_fs_t fs))
grub_fs_iterate (int (*hook) (const grub_fs_t fs))
{
pupa_fs_t p;
grub_fs_t p;
for (p = pupa_fs_list; p; p = p->next)
for (p = grub_fs_list; p; p = p->next)
if (hook (p))
break;
}
pupa_fs_t
pupa_fs_probe (pupa_device_t device)
grub_fs_t
grub_fs_probe (grub_device_t device)
{
pupa_fs_t p;
grub_fs_t p;
auto int dummy_func (const char *filename, int dir);
int dummy_func (const char *filename __attribute__ ((unused)),
@ -74,22 +74,22 @@ pupa_fs_probe (pupa_device_t device)
if (device->disk)
{
for (p = pupa_fs_list; p; p = p->next)
for (p = grub_fs_list; p; p = p->next)
{
(p->dir) (device, "/", dummy_func);
if (pupa_errno == PUPA_ERR_NONE)
if (grub_errno == GRUB_ERR_NONE)
return p;
if (pupa_errno != PUPA_ERR_BAD_FS)
if (grub_errno != GRUB_ERR_BAD_FS)
return 0;
pupa_errno = PUPA_ERR_NONE;
grub_errno = GRUB_ERR_NONE;
}
}
else if (device->net->fs)
return device->net->fs;
pupa_error (PUPA_ERR_UNKNOWN_FS, "unknown filesystem");
grub_error (GRUB_ERR_UNKNOWN_FS, "unknown filesystem");
return 0;
}
@ -97,31 +97,31 @@ pupa_fs_probe (pupa_device_t device)
/* Block list support routines. */
struct pupa_fs_block
struct grub_fs_block
{
unsigned long offset;
unsigned long length;
};
static pupa_err_t
pupa_fs_blocklist_open (pupa_file_t file, const char *name)
static grub_err_t
grub_fs_blocklist_open (grub_file_t file, const char *name)
{
char *p = (char *) name;
unsigned num = 0;
unsigned i;
pupa_disk_t disk = file->device->disk;
struct pupa_fs_block *blocks;
grub_disk_t disk = file->device->disk;
struct grub_fs_block *blocks;
/* First, count the number of blocks. */
do
{
num++;
p = pupa_strchr (p, ',');
p = grub_strchr (p, ',');
}
while (p);
/* Allocate a block list. */
blocks = pupa_malloc (sizeof (struct pupa_fs_block) * (num + 1));
blocks = grub_malloc (sizeof (struct grub_fs_block) * (num + 1));
if (! blocks)
return 0;
@ -131,10 +131,10 @@ pupa_fs_blocklist_open (pupa_file_t file, const char *name)
{
if (*p != '+')
{
blocks[i].offset = pupa_strtoul (p, &p, 0);
if (pupa_errno != PUPA_ERR_NONE || *p != '+')
blocks[i].offset = grub_strtoul (p, &p, 0);
if (grub_errno != GRUB_ERR_NONE || *p != '+')
{
pupa_error (PUPA_ERR_BAD_FILENAME,
grub_error (GRUB_ERR_BAD_FILENAME,
"invalid file name `%s'", name);
goto fail;
}
@ -143,68 +143,68 @@ pupa_fs_blocklist_open (pupa_file_t file, const char *name)
blocks[i].offset = 0;
p++;
blocks[i].length = pupa_strtoul (p, &p, 0);
if (pupa_errno != PUPA_ERR_NONE
blocks[i].length = grub_strtoul (p, &p, 0);
if (grub_errno != GRUB_ERR_NONE
|| blocks[i].length == 0
|| (*p && *p != ',' && ! pupa_isspace (*p)))
|| (*p && *p != ',' && ! grub_isspace (*p)))
{
pupa_error (PUPA_ERR_BAD_FILENAME,
grub_error (GRUB_ERR_BAD_FILENAME,
"invalid file name `%s'", name);
goto fail;
}
if (disk->total_sectors < blocks[i].offset + blocks[i].length)
{
pupa_error (PUPA_ERR_BAD_FILENAME, "beyond the total sectors");
grub_error (GRUB_ERR_BAD_FILENAME, "beyond the total sectors");
goto fail;
}
file->size += (blocks[i].length << PUPA_DISK_SECTOR_BITS);
file->size += (blocks[i].length << GRUB_DISK_SECTOR_BITS);
p++;
}
blocks[i].length = 0;
file->data = blocks;
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
fail:
pupa_free (blocks);
return pupa_errno;
grub_free (blocks);
return grub_errno;
}
static pupa_ssize_t
pupa_fs_blocklist_read (pupa_file_t file, char *buf, pupa_ssize_t len)
static grub_ssize_t
grub_fs_blocklist_read (grub_file_t file, char *buf, grub_ssize_t len)
{
struct pupa_fs_block *p;
struct grub_fs_block *p;
unsigned long sector;
unsigned long offset;
pupa_ssize_t ret = 0;
grub_ssize_t ret = 0;
if (len > file->size - file->offset)
len = file->size - file->offset;
sector = (file->offset >> PUPA_DISK_SECTOR_BITS);
offset = (file->offset & (PUPA_DISK_SECTOR_SIZE - 1));
sector = (file->offset >> GRUB_DISK_SECTOR_BITS);
offset = (file->offset & (GRUB_DISK_SECTOR_SIZE - 1));
for (p = file->data; p->length && len > 0; p++)
{
if (sector < p->length)
{
pupa_ssize_t size;
grub_ssize_t size;
size = len;
if (((size + offset + PUPA_DISK_SECTOR_SIZE - 1)
>> PUPA_DISK_SECTOR_BITS) > p->length - sector)
size = ((p->length - sector) << PUPA_DISK_SECTOR_BITS) - offset;
if (((size + offset + GRUB_DISK_SECTOR_SIZE - 1)
>> GRUB_DISK_SECTOR_BITS) > p->length - sector)
size = ((p->length - sector) << GRUB_DISK_SECTOR_BITS) - offset;
if (pupa_disk_read (file->device->disk, p->offset + sector, offset,
size, buf) != PUPA_ERR_NONE)
if (grub_disk_read (file->device->disk, p->offset + sector, offset,
size, buf) != GRUB_ERR_NONE)
return -1;
ret += size;
len -= size;
sector -= ((size + offset) >> PUPA_DISK_SECTOR_BITS);
offset = ((size + offset) & (PUPA_DISK_SECTOR_SIZE - 1));
sector -= ((size + offset) >> GRUB_DISK_SECTOR_BITS);
offset = ((size + offset) & (GRUB_DISK_SECTOR_SIZE - 1));
}
else
sector -= p->length;
@ -213,12 +213,12 @@ pupa_fs_blocklist_read (pupa_file_t file, char *buf, pupa_ssize_t len)
return ret;
}
struct pupa_fs pupa_fs_blocklist =
struct grub_fs grub_fs_blocklist =
{
.name = "blocklist",
.dir = 0,
.open = pupa_fs_blocklist_open,
.read = pupa_fs_blocklist_read,
.open = grub_fs_blocklist_open,
.read = grub_fs_blocklist_read,
.close = 0,
.next = 0
};

View file

@ -1,9 +1,9 @@
/* dl-386.c - arch-dependent part of loadable module support */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,18 +14,18 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/dl.h>
#include <pupa/elf.h>
#include <pupa/misc.h>
#include <pupa/err.h>
#include <grub/dl.h>
#include <grub/elf.h>
#include <grub/misc.h>
#include <grub/err.h>
/* Check if EHDR is a valid ELF header. */
int
pupa_arch_dl_check_header (void *ehdr, unsigned size)
grub_arch_dl_check_header (void *ehdr, unsigned size)
{
Elf32_Ehdr *e = ehdr;
@ -53,8 +53,8 @@ pupa_arch_dl_check_header (void *ehdr, unsigned size)
}
/* Relocate symbols. */
pupa_err_t
pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr)
grub_err_t
grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr)
{
Elf32_Ehdr *e = ehdr;
Elf32_Shdr *s;
@ -70,7 +70,7 @@ pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr)
break;
if (i == e->e_shnum)
return pupa_error (PUPA_ERR_BAD_MODULE, "no symtab found");
return grub_error (GRUB_ERR_BAD_MODULE, "no symtab found");
symtab = (Elf32_Sym *) ((char *) e + s->sh_offset);
entsize = s->sh_entsize;
@ -80,7 +80,7 @@ pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr)
i++, s = (Elf32_Shdr *) ((char *) s + e->e_shentsize))
if (s->sh_type == SHT_REL)
{
pupa_dl_segment_t seg;
grub_dl_segment_t seg;
/* Find the target segment. */
for (seg = mod->segment; seg; seg = seg->next)
@ -100,7 +100,7 @@ pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr)
Elf32_Sym *sym;
if (seg->size < rel->r_offset)
return pupa_error (PUPA_ERR_BAD_MODULE,
return grub_error (GRUB_ERR_BAD_MODULE,
"reloc offset is out of the segment");
addr = (Elf32_Word *) ((char *) seg->addr + rel->r_offset);
@ -122,5 +122,5 @@ pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr)
}
}
return PUPA_ERR_NONE;
return GRUB_ERR_NONE;
}

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -17,24 +17,24 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/kernel.h>
#include <pupa/mm.h>
#include <pupa/machine/init.h>
#include <pupa/machine/memory.h>
#include <pupa/machine/console.h>
#include <pupa/machine/biosdisk.h>
#include <pupa/machine/kernel.h>
#include <pupa/types.h>
#include <pupa/err.h>
#include <pupa/dl.h>
#include <pupa/misc.h>
#include <pupa/loader.h>
#include <pupa/env.h>
#include <grub/kernel.h>
#include <grub/mm.h>
#include <grub/machine/init.h>
#include <grub/machine/memory.h>
#include <grub/machine/console.h>
#include <grub/machine/biosdisk.h>
#include <grub/machine/kernel.h>
#include <grub/types.h>
#include <grub/err.h>
#include <grub/dl.h>
#include <grub/misc.h>
#include <grub/loader.h>
#include <grub/env.h>
struct mem_region
{
pupa_addr_t addr;
pupa_size_t size;
grub_addr_t addr;
grub_size_t size;
};
#define MAX_REGIONS 32
@ -42,9 +42,9 @@ struct mem_region
static struct mem_region mem_regions[MAX_REGIONS];
static int num_regions;
pupa_addr_t pupa_os_area_addr;
pupa_size_t pupa_os_area_size;
pupa_size_t pupa_lower_mem, pupa_upper_mem;
grub_addr_t grub_os_area_addr;
grub_size_t grub_os_area_size;
grub_size_t grub_lower_mem, grub_upper_mem;
static char *
make_install_device (void)
@ -52,25 +52,25 @@ make_install_device (void)
/* XXX: This should be enough. */
char dev[100];
pupa_sprintf (dev, "(%cd%u",
(pupa_boot_drive & 0x80) ? 'h' : 'f',
pupa_boot_drive & 0x7f);
grub_sprintf (dev, "(%cd%u",
(grub_boot_drive & 0x80) ? 'h' : 'f',
grub_boot_drive & 0x7f);
if (pupa_install_dos_part >= 0)
pupa_sprintf (dev + pupa_strlen (dev), ",%u", pupa_install_dos_part);
if (grub_install_dos_part >= 0)
grub_sprintf (dev + grub_strlen (dev), ",%u", grub_install_dos_part);
if (pupa_install_bsd_part >= 0)
pupa_sprintf (dev + pupa_strlen (dev), ",%c", pupa_install_bsd_part + 'a');
if (grub_install_bsd_part >= 0)
grub_sprintf (dev + grub_strlen (dev), ",%c", grub_install_bsd_part + 'a');
pupa_sprintf (dev + pupa_strlen (dev), ")%s", pupa_prefix);
pupa_strcpy (pupa_prefix, dev);
grub_sprintf (dev + grub_strlen (dev), ")%s", grub_prefix);
grub_strcpy (grub_prefix, dev);
return pupa_prefix;
return grub_prefix;
}
/* Add a memory region. */
static void
add_mem_region (pupa_addr_t addr, pupa_size_t size)
add_mem_region (grub_addr_t addr, grub_size_t size)
{
if (num_regions == MAX_REGIONS)
/* Ignore. */
@ -108,44 +108,44 @@ compact_mem_regions (void)
mem_regions[i].size = (mem_regions[j].addr + mem_regions[j].size
- mem_regions[i].addr);
pupa_memmove (mem_regions + j, mem_regions + j + 1,
grub_memmove (mem_regions + j, mem_regions + j + 1,
(num_regions - j - 1) * sizeof (struct mem_region));
i--;
}
}
void
pupa_machine_init (void)
grub_machine_init (void)
{
pupa_uint32_t cont;
struct pupa_machine_mmap_entry *entry
= (struct pupa_machine_mmap_entry *) PUPA_MEMORY_MACHINE_SCRATCH_ADDR;
pupa_addr_t end_addr = pupa_get_end_addr ();
grub_uint32_t cont;
struct grub_machine_mmap_entry *entry
= (struct grub_machine_mmap_entry *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
grub_addr_t end_addr = grub_get_end_addr ();
int i;
/* Initialize the console as early as possible. */
pupa_console_init ();
grub_console_init ();
pupa_lower_mem = pupa_get_memsize (0) << 10;
grub_lower_mem = grub_get_memsize (0) << 10;
/* Sanity check. */
if (pupa_lower_mem < PUPA_MEMORY_MACHINE_RESERVED_END)
pupa_fatal ("too small memory");
if (grub_lower_mem < GRUB_MEMORY_MACHINE_RESERVED_END)
grub_fatal ("too small memory");
#if 0
/* Turn on Gate A20 to access >1MB. */
pupa_gate_a20 (1);
grub_gate_a20 (1);
#endif
/* Add the lower memory into free memory. */
if (pupa_lower_mem >= PUPA_MEMORY_MACHINE_RESERVED_END)
add_mem_region (PUPA_MEMORY_MACHINE_RESERVED_END,
pupa_lower_mem - PUPA_MEMORY_MACHINE_RESERVED_END);
if (grub_lower_mem >= GRUB_MEMORY_MACHINE_RESERVED_END)
add_mem_region (GRUB_MEMORY_MACHINE_RESERVED_END,
grub_lower_mem - GRUB_MEMORY_MACHINE_RESERVED_END);
add_mem_region (end_addr, PUPA_MEMORY_MACHINE_RESERVED_START - end_addr);
add_mem_region (end_addr, GRUB_MEMORY_MACHINE_RESERVED_START - end_addr);
/* Check if pupa_get_mmap_entry works. */
cont = pupa_get_mmap_entry (entry, 0);
/* Check if grub_get_mmap_entry works. */
cont = grub_get_mmap_entry (entry, 0);
if (entry->size)
do
@ -163,13 +163,13 @@ pupa_machine_init (void)
/* Ignore >4GB. */
if (entry->addr <= 0xFFFFFFFF && entry->type == 1)
{
pupa_addr_t addr;
pupa_size_t len;
grub_addr_t addr;
grub_size_t len;
addr = (pupa_addr_t) entry->addr;
addr = (grub_addr_t) entry->addr;
len = ((addr + entry->len > 0xFFFFFFFF)
? 0xFFFFFFFF - addr
: (pupa_size_t) entry->len);
: (grub_size_t) entry->len);
add_mem_region (addr, len);
}
@ -177,12 +177,12 @@ pupa_machine_init (void)
if (! cont)
break;
cont = pupa_get_mmap_entry (entry, cont);
cont = grub_get_mmap_entry (entry, cont);
}
while (entry->size);
else
{
pupa_uint32_t eisa_mmap = pupa_get_eisa_mmap ();
grub_uint32_t eisa_mmap = grub_get_eisa_mmap ();
if (eisa_mmap)
{
@ -195,7 +195,7 @@ pupa_machine_init (void)
}
}
else
add_mem_region (0x100000, pupa_get_memsize (1) << 10);
add_mem_region (0x100000, grub_get_memsize (1) << 10);
}
compact_mem_regions ();
@ -206,24 +206,24 @@ pupa_machine_init (void)
for (i = 0; i < num_regions; i++)
if (mem_regions[i].addr == 0x100000)
{
pupa_size_t quarter = mem_regions[i].size >> 2;
grub_size_t quarter = mem_regions[i].size >> 2;
pupa_upper_mem = mem_regions[i].size;
pupa_os_area_addr = mem_regions[i].addr;
pupa_os_area_size = mem_regions[i].size - quarter;
pupa_mm_init_region ((void *) (pupa_os_area_addr + pupa_os_area_size),
grub_upper_mem = mem_regions[i].size;
grub_os_area_addr = mem_regions[i].addr;
grub_os_area_size = mem_regions[i].size - quarter;
grub_mm_init_region ((void *) (grub_os_area_addr + grub_os_area_size),
quarter);
}
else
pupa_mm_init_region ((void *) mem_regions[i].addr, mem_regions[i].size);
grub_mm_init_region ((void *) mem_regions[i].addr, mem_regions[i].size);
if (! pupa_os_area_addr)
pupa_fatal ("no upper memory");
if (! grub_os_area_addr)
grub_fatal ("no upper memory");
/* The memory system was initialized, thus register built-in devices. */
pupa_biosdisk_init ();
grub_biosdisk_init ();
/* Initialize the prefix. */
pupa_env_set ("prefix", make_install_device ());
grub_env_set ("prefix", make_install_device ());
}

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
* Copyright (C) 2003 Free Software Foundation, Inc.
*
@ -21,7 +21,7 @@
/*
* This code was stolen from the files enter.sh, leave.sh, lzo1x_d.sh,
* lzo1x_f.s and lzo_asm.h in LZO version 1.08, and was heavily modified
* to adapt it to PUPA's requirement.
* to adapt it to GRUB's requirement.
*
* See <http://www.oberhumer.com/opensource/lzo/>, for more information
* about LZO.

View file

@ -1,5 +1,5 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -35,7 +35,7 @@
*/
/*
* Note: PUPA is compiled with the options -mrtd and -mregparm=3.
* Note: GRUB is compiled with the options -mrtd and -mregparm=3.
* So the first three arguments are passed in %eax, %edx, and %ecx,
* respectively, and if a function has a fixed number of arguments
* and the number if greater than three, the function must return
@ -43,16 +43,16 @@
*/
#include <config.h>
#include <pupa/symbol.h>
#include <pupa/boot.h>
#include <pupa/machine/boot.h>
#include <pupa/machine/memory.h>
#include <pupa/machine/console.h>
#include <pupa/machine/linux.h>
#include <pupa/machine/kernel.h>
#include <pupa/machine/multiboot.h>
#include <grub/symbol.h>
#include <grub/boot.h>
#include <grub/machine/boot.h>
#include <grub/machine/memory.h>
#include <grub/machine/console.h>
#include <grub/machine/linux.h>
#include <grub/machine/kernel.h>
#include <grub/machine/multiboot.h>
#define ABS(x) ((x) - EXT_C(start) + PUPA_BOOT_MACHINE_KERNEL_ADDR + 0x200)
#define ABS(x) ((x) - EXT_C(start) + GRUB_BOOT_MACHINE_KERNEL_ADDR + 0x200)
.file "startup.S"
@ -77,7 +77,7 @@ _start:
* DO NOT MOVE !!!
*/
. = EXT_C(start) + 0x6
.byte PUPA_BOOT_VERSION_MAJOR, PUPA_BOOT_VERSION_MINOR
.byte GRUB_BOOT_VERSION_MAJOR, GRUB_BOOT_VERSION_MINOR
/*
* This is a special data area 8 bytes from the beginning.
@ -85,18 +85,18 @@ _start:
. = EXT_C(start) + 0x8
VARIABLE(pupa_total_module_size)
VARIABLE(grub_total_module_size)
.long 0
VARIABLE(pupa_kernel_image_size)
VARIABLE(grub_kernel_image_size)
.long 0
VARIABLE(pupa_compressed_size)
VARIABLE(grub_compressed_size)
.long 0
VARIABLE(pupa_install_dos_part)
VARIABLE(grub_install_dos_part)
.long 0xFFFFFFFF
VARIABLE(pupa_install_bsd_part)
VARIABLE(grub_install_bsd_part)
.long 0xFFFFFFFF
VARIABLE(pupa_prefix)
.string "/boot/pupa"
VARIABLE(grub_prefix)
.string "/boot/grub"
/*
* Leave some breathing room for the prefix.
@ -115,13 +115,13 @@ codestart:
movw %ax, %es
/* set up the real mode/BIOS stack */
movl $PUPA_MEMORY_MACHINE_REAL_STACK, %ebp
movl $GRUB_MEMORY_MACHINE_REAL_STACK, %ebp
movl %ebp, %esp
sti /* we're safe again */
/* save boot drive reference */
ADDR32 movb %dl, EXT_C(pupa_boot_drive)
ADDR32 movb %dl, EXT_C(grub_boot_drive)
/* reset disk system (%ah = 0) */
int $0x13
@ -133,14 +133,14 @@ codestart:
.code32
incl %eax
call EXT_C(pupa_gate_a20)
call EXT_C(grub_gate_a20)
/* decompress the compressed part and put the result at 1MB */
movl $0x100000, %esi
movl $(START_SYMBOL + PUPA_KERNEL_MACHINE_RAW_SIZE), %edi
movl $(START_SYMBOL + GRUB_KERNEL_MACHINE_RAW_SIZE), %edi
pushl %esi
pushl EXT_C(pupa_compressed_size)
pushl EXT_C(grub_compressed_size)
pushl %edi
call lzo1x_decompress
addl $12, %esp
@ -152,8 +152,8 @@ codestart:
movsb
/* copy modules before cleaning out the bss */
movl EXT_C(pupa_total_module_size), %ecx
movl EXT_C(pupa_kernel_image_size), %esi
movl EXT_C(grub_total_module_size), %ecx
movl EXT_C(grub_kernel_image_size), %esi
addl %ecx, %esi
addl $START_SYMBOL, %esi
decl %esi
@ -180,7 +180,7 @@ codestart:
/*
* Call the start of main body of C code.
*/
call EXT_C(pupa_main)
call EXT_C(grub_main)
/*
@ -190,18 +190,18 @@ codestart:
.p2align 2 /* force 4-byte alignment */
protstack:
.long PUPA_MEMORY_MACHINE_PROT_STACK
.long GRUB_MEMORY_MACHINE_PROT_STACK
VARIABLE(pupa_boot_drive)
VARIABLE(grub_boot_drive)
.long 0
VARIABLE(pupa_start_addr)
VARIABLE(grub_start_addr)
.long START_SYMBOL
VARIABLE(pupa_end_addr)
VARIABLE(grub_end_addr)
.long END_SYMBOL
VARIABLE(pupa_apm_bios_info)
VARIABLE(grub_apm_bios_info)
.word 0 /* version */
.word 0 /* cseg */
.long 0 /* offset */
@ -275,16 +275,16 @@ real_to_prot:
/* turn on protected mode */
movl %cr0, %eax
orl $PUPA_MEMORY_MACHINE_CR0_PE_ON, %eax
orl $GRUB_MEMORY_MACHINE_CR0_PE_ON, %eax
movl %eax, %cr0
/* jump to relocation, flush prefetch queue, and reload %cs */
DATA32 ljmp $PUPA_MEMORY_MACHINE_PROT_MODE_CSEG, $protcseg
DATA32 ljmp $GRUB_MEMORY_MACHINE_PROT_MODE_CSEG, $protcseg
.code32
protcseg:
/* reload other segment registers */
movw $PUPA_MEMORY_MACHINE_PROT_MODE_DSEG, %ax
movw $GRUB_MEMORY_MACHINE_PROT_MODE_DSEG, %ax
movw %ax, %ds
movw %ax, %es
movw %ax, %fs
@ -293,7 +293,7 @@ protcseg:
/* put the return address in a known safe location */
movl (%esp), %eax
movl %eax, PUPA_MEMORY_MACHINE_REAL_STACK
movl %eax, GRUB_MEMORY_MACHINE_REAL_STACK
/* get protected mode stack */
movl protstack, %eax
@ -301,7 +301,7 @@ protcseg:
movl %eax, %ebp
/* get return address onto the right stack */
movl PUPA_MEMORY_MACHINE_REAL_STACK, %eax
movl GRUB_MEMORY_MACHINE_REAL_STACK, %eax
movl %eax, (%esp)
/* zero %eax */
@ -321,15 +321,15 @@ prot_to_real:
/* get the return address */
movl (%esp), %eax
movl %eax, PUPA_MEMORY_MACHINE_REAL_STACK
movl %eax, GRUB_MEMORY_MACHINE_REAL_STACK
/* set up new stack */
movl $PUPA_MEMORY_MACHINE_REAL_STACK, %eax
movl $GRUB_MEMORY_MACHINE_REAL_STACK, %eax
movl %eax, %esp
movl %eax, %ebp
/* set up segment limits */
movw $PUPA_MEMORY_MACHINE_PSEUDO_REAL_DSEG, %ax
movw $GRUB_MEMORY_MACHINE_PSEUDO_REAL_DSEG, %ax
movw %ax, %ds
movw %ax, %es
movw %ax, %fs
@ -338,14 +338,14 @@ prot_to_real:
/* this might be an extra step */
/* jump to a 16 bit segment */
ljmp $PUPA_MEMORY_MACHINE_PSEUDO_REAL_CSEG, $tmpcseg
ljmp $GRUB_MEMORY_MACHINE_PSEUDO_REAL_CSEG, $tmpcseg
tmpcseg:
.code16
/* clear the PE bit of CR0 */
movl %cr0, %eax
andl $(~PUPA_MEMORY_MACHINE_CR0_PE_ON), %eax
andl $(~GRUB_MEMORY_MACHINE_CR0_PE_ON), %eax
movl %eax, %cr0
/* flush prefetch queue, reload %cs */
@ -374,7 +374,7 @@ realcseg:
/*
* pupa_gate_a20(int on)
* grub_gate_a20(int on)
*
* Gate address-line 20 for high memory.
*
@ -383,7 +383,7 @@ realcseg:
* It also eats any keystrokes in the keyboard buffer. :-(
*/
FUNCTION(pupa_gate_a20)
FUNCTION(grub_gate_a20)
movl %eax, %ecx
call gloop1
@ -437,7 +437,7 @@ gloop2ret:
* hang at this point!
*/
FUNCTION(pupa_stop)
FUNCTION(grub_stop)
call prot_to_real
/*
@ -446,29 +446,29 @@ FUNCTION(pupa_stop)
* mode, so think about it before changing it.
*/
FUNCTION(pupa_hard_stop)
FUNCTION(grub_hard_stop)
hlt
jmp EXT_C(pupa_hard_stop)
jmp EXT_C(grub_hard_stop)
/*
* pupa_stop_floppy()
* grub_stop_floppy()
*
* Stop the floppy drive from spinning, so that other software is
* jumped to with a known state.
*/
FUNCTION(pupa_stop_floppy)
FUNCTION(grub_stop_floppy)
movw $0x3F2, %dx
xorb %al, %al
outb %al, %dx
ret
/*
* pupa_reboot()
* grub_reboot()
*
* Reboot the system. At the moment, rely on BIOS.
*/
FUNCTION(pupa_reboot)
FUNCTION(grub_reboot)
call prot_to_real
.code16
/* cold boot */
@ -478,15 +478,15 @@ FUNCTION(pupa_reboot)
.code32
/*
* pupa_halt(int no_apm)
* grub_halt(int no_apm)
*
* Halt the system, using APM if possible. If NO_APM is true, don't use
* APM even if it is available.
*/
FUNCTION(pupa_halt)
FUNCTION(grub_halt)
/* see if zero */
testl %eax, %eax
jnz EXT_C(pupa_stop)
jnz EXT_C(grub_stop)
call prot_to_real
.code16
@ -495,7 +495,7 @@ FUNCTION(pupa_halt)
movw $0x5300, %ax
xorw %bx, %bx
int $0x15
jc EXT_C(pupa_hard_stop)
jc EXT_C(grub_hard_stop)
/* don't check %bx for buggy BIOSes... */
/* disconnect APM first */
@ -507,14 +507,14 @@ FUNCTION(pupa_halt)
movw $0x5301, %ax
xorw %bx, %bx
int $0x15
jc EXT_C(pupa_hard_stop)
jc EXT_C(grub_hard_stop)
/* set APM protocol level - 1.1 or bust. (this covers APM 1.2 also) */
movw $0x530E, %ax
xorw %bx, %bx
movw $0x0101, %cx
int $0x15
jc EXT_C(pupa_hard_stop)
jc EXT_C(grub_hard_stop)
/* set the power state to off */
movw $0x5307, %ax
@ -523,21 +523,21 @@ FUNCTION(pupa_halt)
int $0x15
/* shouldn't reach here */
jmp EXT_C(pupa_hard_stop)
jmp EXT_C(grub_hard_stop)
.code32
/*
* void pupa_chainloader_real_boot (int drive, void *part_addr)
* void grub_chainloader_real_boot (int drive, void *part_addr)
*
* This starts another boot loader.
*/
FUNCTION(pupa_chainloader_real_boot)
FUNCTION(grub_chainloader_real_boot)
pushl %edx
pushl %eax
call EXT_C(pupa_dl_unload_all)
call EXT_C(grub_dl_unload_all)
/* set up to pass boot drive */
popl %edx
@ -547,44 +547,44 @@ FUNCTION(pupa_chainloader_real_boot)
/* Turn off Gate A20 */
xorl %eax, %eax
call EXT_C(pupa_gate_a20)
call EXT_C(grub_gate_a20)
call prot_to_real
.code16
ljmp $0, $PUPA_MEMORY_MACHINE_BOOT_LOADER_ADDR
ljmp $0, $GRUB_MEMORY_MACHINE_BOOT_LOADER_ADDR
.code32
/*
* void pupa_linux_boot_zimage (void)
* void grub_linux_boot_zimage (void)
*/
VARIABLE(pupa_linux_prot_size)
VARIABLE(grub_linux_prot_size)
.long 0
VARIABLE(pupa_linux_tmp_addr)
VARIABLE(grub_linux_tmp_addr)
.long 0
VARIABLE(pupa_linux_real_addr)
VARIABLE(grub_linux_real_addr)
.long 0
FUNCTION(pupa_linux_boot_zimage)
FUNCTION(grub_linux_boot_zimage)
/* copy the kernel */
movl EXT_C(pupa_linux_prot_size), %ecx
movl EXT_C(grub_linux_prot_size), %ecx
addl $3, %ecx
shrl $2, %ecx
movl $PUPA_LINUX_BZIMAGE_ADDR, %esi
movl $PUPA_LINUX_ZIMAGE_ADDR, %edi
movl $GRUB_LINUX_BZIMAGE_ADDR, %esi
movl $GRUB_LINUX_ZIMAGE_ADDR, %edi
cld
rep
movsl
FUNCTION(pupa_linux_boot_bzimage)
call EXT_C(pupa_dl_unload_all)
FUNCTION(grub_linux_boot_bzimage)
call EXT_C(grub_dl_unload_all)
movl EXT_C(pupa_linux_real_addr), %ebx
movl EXT_C(grub_linux_real_addr), %ebx
/* copy the real mode code */
movl EXT_C(pupa_linux_tmp_addr), %esi
movl EXT_C(grub_linux_tmp_addr), %esi
movl %ebx, %edi
movl $PUPA_LINUX_SETUP_MOVE_SIZE, %ecx
movl $GRUB_LINUX_SETUP_MOVE_SIZE, %ecx
cld
rep
movsb
@ -597,7 +597,7 @@ FUNCTION(pupa_linux_boot_bzimage)
/* XXX new stack pointer in safe area for calling functions */
movl $0x4000, %esp
call EXT_C(pupa_stop_floppy)
call EXT_C(grub_stop_floppy)
/* final setup for linux boot */
call prot_to_real
@ -605,7 +605,7 @@ FUNCTION(pupa_linux_boot_bzimage)
cli
movw %bx, %ss
movw $PUPA_LINUX_SETUP_STACK, %sp
movw $GRUB_LINUX_SETUP_STACK, %sp
movw %bx, %ds
movw %bx, %es
@ -624,34 +624,34 @@ linux_setup_seg:
* This starts the multiboot kernel.
*/
FUNCTION(pupa_multiboot_real_boot)
FUNCTION(grub_multiboot_real_boot)
/* Push the entry address on the stack. */
pushl %eax
/* Move the address of the multiboot information structure to ebx. */
movl %edx,%ebx
/* Unload all modules and stop the floppy driver. */
call EXT_C(pupa_dl_unload_all)
call EXT_C(pupa_stop_floppy)
call EXT_C(grub_dl_unload_all)
call EXT_C(grub_stop_floppy)
/* Interrupts should be disabled. */
cli
/* Move the magic value into eax and jump to the kernel. */
movl $PUPA_MB_MAGIC2,%eax
movl $GRUB_MB_MAGIC2,%eax
popl %ecx
jmp *%ecx
/*
* int pupa_biosdisk_rw_int13_extensions (int ah, int drive, void *dap)
* int grub_biosdisk_rw_int13_extensions (int ah, int drive, void *dap)
*
* Call IBM/MS INT13 Extensions (int 13 %ah=AH) for DRIVE. DAP
* is passed for disk address packet. If an error occurs, return
* non-zero, otherwise zero.
*/
FUNCTION(pupa_biosdisk_rw_int13_extensions)
FUNCTION(grub_biosdisk_rw_int13_extensions)
pushl %ebp
pushl %esi
@ -685,7 +685,7 @@ FUNCTION(pupa_biosdisk_rw_int13_extensions)
ret
/*
* int pupa_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
* int grub_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
* int soff, int nsec, int segment)
*
* Call standard and old INT13 (int 13 %ah=AH) for DRIVE. Read/write
@ -693,7 +693,7 @@ FUNCTION(pupa_biosdisk_rw_int13_extensions)
* return non-zero, otherwise zero.
*/
FUNCTION(pupa_biosdisk_rw_standard)
FUNCTION(grub_biosdisk_rw_standard)
pushl %ebp
movl %esp, %ebp
@ -759,13 +759,13 @@ FUNCTION(pupa_biosdisk_rw_standard)
/*
* int pupa_biosdisk_check_int13_extensions (int drive)
* int grub_biosdisk_check_int13_extensions (int drive)
*
* Check if LBA is supported for DRIVE. If it is supported, then return
* the major version of extensions, otherwise zero.
*/
FUNCTION(pupa_biosdisk_check_int13_extensions)
FUNCTION(grub_biosdisk_check_int13_extensions)
pushl %ebp
pushl %ebx
@ -806,13 +806,13 @@ FUNCTION(pupa_biosdisk_check_int13_extensions)
/*
* int pupa_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp)
* int grub_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp)
*
* Return the geometry of DRIVE in a drive parameters, DRP. If an error
* occurs, then return non-zero, otherwise zero.
*/
FUNCTION(pupa_biosdisk_get_diskinfo_int13_extensions)
FUNCTION(grub_biosdisk_get_diskinfo_int13_extensions)
pushl %ebp
pushl %ebx
pushl %esi
@ -849,7 +849,7 @@ FUNCTION(pupa_biosdisk_get_diskinfo_int13_extensions)
/*
* int pupa_biosdisk_get_diskinfo_standard (int drive,
* int grub_biosdisk_get_diskinfo_standard (int drive,
* unsigned long *cylinders,
* unsigned long *heads,
* unsigned long *sectors)
@ -858,7 +858,7 @@ FUNCTION(pupa_biosdisk_get_diskinfo_int13_extensions)
* error occurs, then return non-zero, otherwise zero.
*/
FUNCTION(pupa_biosdisk_get_diskinfo_standard)
FUNCTION(grub_biosdisk_get_diskinfo_standard)
pushl %ebp
pushl %ebx
pushl %edi
@ -922,9 +922,9 @@ FUNCTION(pupa_biosdisk_get_diskinfo_standard)
/*
* int pupa_biosdisk_get_num_floppies (void)
* int grub_biosdisk_get_num_floppies (void)
*/
FUNCTION(pupa_biosdisk_get_num_floppies)
FUNCTION(grub_biosdisk_get_num_floppies)
pushl %ebp
xorl %edx, %edx
@ -960,7 +960,7 @@ FUNCTION(pupa_biosdisk_get_num_floppies)
/*
*
* pupa_get_memsize(i) : return the memory size in KB. i == 0 for conventional
* grub_get_memsize(i) : return the memory size in KB. i == 0 for conventional
* memory, i == 1 for extended memory
* BIOS call "INT 12H" to get conventional memory size
* BIOS call "INT 15H, AH=88H" to get extended memory size
@ -968,7 +968,7 @@ FUNCTION(pupa_biosdisk_get_num_floppies)
*
*/
FUNCTION(pupa_get_memsize)
FUNCTION(grub_get_memsize)
pushl %ebp
movl %eax, %edx
@ -1000,7 +1000,7 @@ xdone:
/*
*
* pupa_get_eisa_mmap() : return packed EISA memory map, lower 16 bits is
* grub_get_eisa_mmap() : return packed EISA memory map, lower 16 bits is
* memory between 1M and 16M in 1K parts, upper 16 bits is
* memory above 16M in 64K parts. If error, return zero.
* BIOS call "INT 15H, AH=E801H" to get EISA memory map,
@ -1009,7 +1009,7 @@ xdone:
*
*/
FUNCTION(pupa_get_eisa_mmap)
FUNCTION(grub_get_eisa_mmap)
pushl %ebp
pushl %ebx
@ -1037,7 +1037,7 @@ xnoteisa:
/*
*
* pupa_get_mmap_entry(addr, cont) : address and old continuation value (zero to
* grub_get_mmap_entry(addr, cont) : address and old continuation value (zero to
* start), for the Query System Address Map BIOS call.
*
* Sets the first 4-byte int value of "addr" to the size returned by
@ -1046,7 +1046,7 @@ xnoteisa:
* Returns: new (non-zero) continuation value, 0 if done.
*/
FUNCTION(pupa_get_mmap_entry)
FUNCTION(grub_get_mmap_entry)
pushl %ebp
pushl %ebx
pushl %edi
@ -1113,7 +1113,7 @@ xsmap:
/*
* void pupa_console_real_putchar (int c)
* void grub_console_real_putchar (int c)
*
* Put the character C on the console. Because GRUB wants to write a
* character with an attribute, this implementation is a bit tricky.
@ -1126,10 +1126,10 @@ xsmap:
* get the height of the screen, and the TELETYPE OUPUT BIOS call doesn't
* support setting a background attribute.
*/
FUNCTION(pupa_console_real_putchar)
FUNCTION(grub_console_real_putchar)
movl %eax, %edx
pusha
movb EXT_C(pupa_console_cur_color), %bl
movb EXT_C(grub_console_cur_color), %bl
call prot_to_real
.code16
@ -1197,7 +1197,7 @@ FUNCTION(pupa_console_real_putchar)
/*
* int pupa_console_getkey (void)
* int grub_console_getkey (void)
* BIOS call "INT 16H Function 00H" to read character from keyboard
* Call with %ah = 0x0
* Return: %ah = keyboard scan code
@ -1206,16 +1206,16 @@ FUNCTION(pupa_console_real_putchar)
/* this table is used in translate_keycode below */
translation_table:
.word PUPA_CONSOLE_KEY_LEFT, 2
.word PUPA_CONSOLE_KEY_RIGHT, 6
.word PUPA_CONSOLE_KEY_UP, 16
.word PUPA_CONSOLE_KEY_DOWN, 14
.word PUPA_CONSOLE_KEY_HOME, 1
.word PUPA_CONSOLE_KEY_END, 5
.word PUPA_CONSOLE_KEY_DC, 4
.word PUPA_CONSOLE_KEY_BACKSPACE, 8
.word PUPA_CONSOLE_KEY_PPAGE, 7
.word PUPA_CONSOLE_KEY_NPAGE, 3
.word GRUB_CONSOLE_KEY_LEFT, 2
.word GRUB_CONSOLE_KEY_RIGHT, 6
.word GRUB_CONSOLE_KEY_UP, 16
.word GRUB_CONSOLE_KEY_DOWN, 14
.word GRUB_CONSOLE_KEY_HOME, 1
.word GRUB_CONSOLE_KEY_END, 5
.word GRUB_CONSOLE_KEY_DC, 4
.word GRUB_CONSOLE_KEY_BACKSPACE, 8
.word GRUB_CONSOLE_KEY_PPAGE, 7
.word GRUB_CONSOLE_KEY_NPAGE, 3
.word 0
/*
@ -1248,7 +1248,7 @@ translate_keycode:
.code32
FUNCTION(pupa_console_getkey)
FUNCTION(grub_console_getkey)
pushl %ebp
call prot_to_real
@ -1269,7 +1269,7 @@ FUNCTION(pupa_console_getkey)
/*
* int pupa_console_checkkey (void)
* int grub_console_checkkey (void)
* if there is a character pending, return it; otherwise return -1
* BIOS call "INT 16H Function 01H" to check whether a character is pending
* Call with %ah = 0x1
@ -1281,7 +1281,7 @@ FUNCTION(pupa_console_getkey)
* else
* Zero flag = set
*/
FUNCTION(pupa_console_checkkey)
FUNCTION(grub_console_checkkey)
pushl %ebp
xorl %edx, %edx
@ -1310,7 +1310,7 @@ pending:
/*
* pupa_uint16_t pupa_console_getxy (void)
* grub_uint16_t grub_console_getxy (void)
* BIOS call "INT 10H Function 03h" to get cursor position
* Call with %ah = 0x03
* %bh = page
@ -1321,7 +1321,7 @@ pending:
*/
FUNCTION(pupa_console_getxy)
FUNCTION(grub_console_getxy)
pushl %ebp
pushl %ebx /* save EBX */
@ -1344,7 +1344,7 @@ FUNCTION(pupa_console_getxy)
/*
* void pupa_console_gotoxy(pupa_uint8_t x, pupa_uint8_t y)
* void grub_console_gotoxy(grub_uint8_t x, grub_uint8_t y)
* BIOS call "INT 10H Function 02h" to set cursor position
* Call with %ah = 0x02
* %bh = page
@ -1353,7 +1353,7 @@ FUNCTION(pupa_console_getxy)
*/
FUNCTION(pupa_console_gotoxy)
FUNCTION(grub_console_gotoxy)
pushl %ebp
pushl %ebx /* save EBX */
@ -1376,7 +1376,7 @@ FUNCTION(pupa_console_gotoxy)
/*
* void pupa_console_cls (void)
* void grub_console_cls (void)
* BIOS call "INT 10H Function 09h" to write character and attribute
* Call with %ah = 0x09
* %al = (character)
@ -1385,7 +1385,7 @@ FUNCTION(pupa_console_gotoxy)
* %cx = (number of times)
*/
FUNCTION(pupa_console_cls)
FUNCTION(grub_console_cls)
pushl %ebp
pushl %ebx /* save EBX */
@ -1417,7 +1417,7 @@ FUNCTION(pupa_console_cls)
/*
* void pupa_console_setcursor (int on)
* void grub_console_setcursor (int on)
* BIOS call "INT 10H Function 01h" to set cursor type
* Call with %ah = 0x01
* %ch = cursor starting scanline
@ -1429,7 +1429,7 @@ console_cursor_state:
console_cursor_shape:
.word 0
FUNCTION(pupa_console_setcursor)
FUNCTION(grub_console_setcursor)
pushl %ebp
pushl %ebx
@ -1474,7 +1474,7 @@ FUNCTION(pupa_console_setcursor)
ret
/*
* pupa_getrtsecs()
* grub_getrtsecs()
* if a seconds value can be read, read it and return it (BCD),
* otherwise return 0xFF
* BIOS call "INT 1AH Function 02H" to check whether a character is pending
@ -1491,7 +1491,7 @@ FUNCTION(pupa_console_setcursor)
* (this indicates that the clock is updating, or
* that it isn't running)
*/
FUNCTION(pupa_getrtsecs)
FUNCTION(grub_getrtsecs)
pushl %ebp
call prot_to_real /* enter real mode */
@ -1515,11 +1515,11 @@ gottime:
/*
* pupa_get_rtc()
* grub_get_rtc()
* return the real time in ticks, of which there are about
* 18-20 per second
*/
FUNCTION(pupa_get_rtc)
FUNCTION(grub_get_rtc)
pushl %ebp
call prot_to_real /* enter real mode */
@ -1540,9 +1540,9 @@ FUNCTION(pupa_get_rtc)
/*
* unsigned char pupa_vga_set_mode (unsigned char mode)
* unsigned char grub_vga_set_mode (unsigned char mode)
*/
FUNCTION(pupa_vga_set_mode)
FUNCTION(grub_vga_set_mode)
pushl %ebp
pushl %ebx
movl %eax, %ecx
@ -1570,9 +1570,9 @@ FUNCTION(pupa_vga_set_mode)
/*
* unsigned char *pupa_vga_get_font (void)
* unsigned char *grub_vga_get_font (void)
*/
FUNCTION(pupa_vga_get_font)
FUNCTION(grub_vga_get_font)
pushl %ebp
pushl %ebx

View file

@ -1,8 +1,8 @@
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -13,51 +13,51 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/loader.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <pupa/err.h>
#include <grub/loader.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/err.h>
static pupa_err_t (*pupa_loader_boot_func) (void);
static pupa_err_t (*pupa_loader_unload_func) (void);
static grub_err_t (*grub_loader_boot_func) (void);
static grub_err_t (*grub_loader_unload_func) (void);
static int pupa_loader_loaded;
static int grub_loader_loaded;
void
pupa_loader_set (pupa_err_t (*boot) (void),
pupa_err_t (*unload) (void))
grub_loader_set (grub_err_t (*boot) (void),
grub_err_t (*unload) (void))
{
if (pupa_loader_loaded && pupa_loader_unload_func)
pupa_loader_unload_func ();
if (grub_loader_loaded && grub_loader_unload_func)
grub_loader_unload_func ();
pupa_loader_boot_func = boot;
pupa_loader_unload_func = unload;
grub_loader_boot_func = boot;
grub_loader_unload_func = unload;
pupa_loader_loaded = 1;
grub_loader_loaded = 1;
}
void
pupa_loader_unset(void)
grub_loader_unset(void)
{
if (pupa_loader_loaded && pupa_loader_unload_func)
pupa_loader_unload_func ();
if (grub_loader_loaded && grub_loader_unload_func)
grub_loader_unload_func ();
pupa_loader_boot_func = 0;
pupa_loader_unload_func = 0;
grub_loader_boot_func = 0;
grub_loader_unload_func = 0;
pupa_loader_loaded = 0;
grub_loader_loaded = 0;
}
pupa_err_t
pupa_loader_boot (void)
grub_err_t
grub_loader_boot (void)
{
if (! pupa_loader_loaded)
return pupa_error (PUPA_ERR_NO_KERNEL, "no loaded kernel");
if (! grub_loader_loaded)
return grub_error (GRUB_ERR_NO_KERNEL, "no loaded kernel");
return (pupa_loader_boot_func) ();
return (grub_loader_boot_func) ();
}

View file

@ -1,6 +1,6 @@
/* main.c - the kernel main routine */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
@ -18,104 +18,104 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/kernel.h>
#include <pupa/misc.h>
#include <pupa/mm.h>
#include <pupa/symbol.h>
#include <pupa/dl.h>
#include <pupa/term.h>
#include <pupa/rescue.h>
#include <pupa/file.h>
#include <pupa/device.h>
#include <pupa/env.h>
#include <grub/kernel.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/symbol.h>
#include <grub/dl.h>
#include <grub/term.h>
#include <grub/rescue.h>
#include <grub/file.h>
#include <grub/device.h>
#include <grub/env.h>
/* Return the end of the core image. */
pupa_addr_t
pupa_get_end_addr (void)
grub_addr_t
grub_get_end_addr (void)
{
return pupa_total_module_size + pupa_end_addr;
return grub_total_module_size + grub_end_addr;
}
/* Load all modules in core. */
static void
pupa_load_modules (void)
grub_load_modules (void)
{
struct pupa_module_header *header;
struct grub_module_header *header;
for (header = (struct pupa_module_header *) pupa_end_addr;
header < (struct pupa_module_header *) pupa_get_end_addr ();
header = (struct pupa_module_header *) ((char *) header + header->size))
for (header = (struct grub_module_header *) grub_end_addr;
header < (struct grub_module_header *) grub_get_end_addr ();
header = (struct grub_module_header *) ((char *) header + header->size))
{
if (! pupa_dl_load_core ((char *) header + header->offset,
if (! grub_dl_load_core ((char *) header + header->offset,
(header->size - header->offset)))
pupa_fatal ("%s", pupa_errmsg);
grub_fatal ("%s", grub_errmsg);
}
}
/* Add the region where modules reside into dynamic memory. */
static void
pupa_add_unused_region (void)
grub_add_unused_region (void)
{
if (pupa_total_module_size)
pupa_mm_init_region ((void *) pupa_end_addr, pupa_total_module_size);
if (grub_total_module_size)
grub_mm_init_region ((void *) grub_end_addr, grub_total_module_size);
}
/* Set the root device according to the dl prefix. */
static void
pupa_set_root_dev (void)
grub_set_root_dev (void)
{
const char *prefix;
prefix = pupa_env_get ("prefix");
prefix = grub_env_get ("prefix");
if (prefix)
{
char *dev;
dev = pupa_file_get_device_name (prefix);
dev = grub_file_get_device_name (prefix);
if (dev)
{
pupa_device_set_root (dev);
pupa_free (dev);
grub_device_set_root (dev);
grub_free (dev);
}
}
}
/* Load the normal mode module and execute the normal mode if possible. */
static void
pupa_load_normal_mode (void)
grub_load_normal_mode (void)
{
/* Load the module. */
pupa_dl_load ("normal");
grub_dl_load ("normal");
/* Ignore any error, because we have the rescue mode anyway. */
pupa_errno = PUPA_ERR_NONE;
grub_errno = GRUB_ERR_NONE;
}
/* The main routine. */
void
pupa_main (void)
grub_main (void)
{
/* First of all, initialize the machine. */
pupa_machine_init ();
grub_machine_init ();
/* Hello. */
pupa_setcolorstate (PUPA_TERM_COLOR_HIGHLIGHT);
pupa_printf ("Welcome to PUPA!\n\n");
pupa_setcolorstate (PUPA_TERM_COLOR_STANDARD);
grub_setcolorstate (GRUB_TERM_COLOR_HIGHLIGHT);
grub_printf ("Welcome to GRUB!\n\n");
grub_setcolorstate (GRUB_TERM_COLOR_STANDARD);
/* It is better to set the root device as soon as possible,
for convenience. */
pupa_set_root_dev ();
grub_set_root_dev ();
/* Load pre-loaded modules and free the space. */
pupa_register_exported_symbols ();
pupa_load_modules ();
pupa_add_unused_region ();
grub_register_exported_symbols ();
grub_load_modules ();
grub_add_unused_region ();
/* Load the normal mode module. */
pupa_load_normal_mode ();
grub_load_normal_mode ();
/* Enter the rescue mode. */
pupa_enter_rescue_mode ();
grub_enter_rescue_mode ();
}

View file

@ -1,9 +1,9 @@
/* misc.c - definitions of misc functions */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,19 +14,19 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <pupa/misc.h>
#include <pupa/err.h>
#include <pupa/mm.h>
#include <grub/misc.h>
#include <grub/err.h>
#include <grub/mm.h>
#include <stdarg.h>
#include <pupa/term.h>
#include <pupa/env.h>
#include <grub/term.h>
#include <grub/env.h>
void *
pupa_memmove (void *dest, const void *src, pupa_size_t n)
grub_memmove (void *dest, const void *src, grub_size_t n)
{
char *d = (char *) dest;
const char *s = (const char *) src;
@ -46,11 +46,11 @@ pupa_memmove (void *dest, const void *src, pupa_size_t n)
return dest;
}
/* GCC emits references to memcpy() for struct copies etc. */
void *memcpy (void *dest, const void *src, pupa_size_t n)
__attribute__ ((alias ("pupa_memmove")));
void *memcpy (void *dest, const void *src, grub_size_t n)
__attribute__ ((alias ("grub_memmove")));
char *
pupa_strcpy (char *dest, const char *src)
grub_strcpy (char *dest, const char *src)
{
char *p = dest;
@ -61,7 +61,7 @@ pupa_strcpy (char *dest, const char *src)
}
char *
pupa_strncpy (char *dest, const char *src, int c)
grub_strncpy (char *dest, const char *src, int c)
{
char *p = dest;
int pos = 0;
@ -73,7 +73,7 @@ pupa_strncpy (char *dest, const char *src, int c)
}
char *
pupa_stpcpy (char *dest, const char *src)
grub_stpcpy (char *dest, const char *src)
{
char *d = dest;
const char *s = src;
@ -86,7 +86,7 @@ pupa_stpcpy (char *dest, const char *src)
}
char *
pupa_strcat (char *dest, const char *src)
grub_strcat (char *dest, const char *src)
{
char *p = dest;
@ -100,26 +100,26 @@ pupa_strcat (char *dest, const char *src)
}
int
pupa_printf (const char *fmt, ...)
grub_printf (const char *fmt, ...)
{
va_list ap;
int ret;
va_start (ap, fmt);
ret = pupa_vprintf (fmt, ap);
ret = grub_vprintf (fmt, ap);
va_end (ap);
return ret;
}
int
pupa_vprintf (const char *fmt, va_list args)
grub_vprintf (const char *fmt, va_list args)
{
return pupa_vsprintf (0, fmt, args);
return grub_vsprintf (0, fmt, args);
}
int
pupa_memcmp (const void *s1, const void *s2, pupa_size_t n)
grub_memcmp (const void *s1, const void *s2, grub_size_t n)
{
const char *t1 = s1;
const char *t2 = s2;
@ -137,7 +137,7 @@ pupa_memcmp (const void *s1, const void *s2, pupa_size_t n)
}
int
pupa_strcmp (const char *s1, const char *s2)
grub_strcmp (const char *s1, const char *s2)
{
while (*s1 && *s2)
{
@ -152,7 +152,7 @@ pupa_strcmp (const char *s1, const char *s2)
}
int
pupa_strncmp (const char *s1, const char *s2, int c)
grub_strncmp (const char *s1, const char *s2, int c)
{
int p = 1;
@ -170,7 +170,7 @@ pupa_strncmp (const char *s1, const char *s2, int c)
}
char *
pupa_strchr (const char *s, int c)
grub_strchr (const char *s, int c)
{
while (*s)
{
@ -183,7 +183,7 @@ pupa_strchr (const char *s, int c)
}
char *
pupa_strrchr (const char *s, int c)
grub_strrchr (const char *s, int c)
{
char *p = 0;
@ -198,37 +198,37 @@ pupa_strrchr (const char *s, int c)
}
int
pupa_isspace (int c)
grub_isspace (int c)
{
return (c == '\n' || c == '\r' || c == ' ' || c == '\t');
}
int
pupa_isprint (int c)
grub_isprint (int c)
{
return (c >= ' ' && c <= '~');
}
int
pupa_isalpha (int c)
grub_isalpha (int c)
{
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
int
pupa_isdigit (int c)
grub_isdigit (int c)
{
return (c >= '0' && c <= '9');
}
int
pupa_isgraph (int c)
grub_isgraph (int c)
{
return (c >= '!' && c <= '~');
}
int
pupa_tolower (int c)
grub_tolower (int c)
{
if (c >= 'A' && c <= 'Z')
return c - 'A' + 'a';
@ -237,13 +237,13 @@ pupa_tolower (int c)
}
unsigned long
pupa_strtoul (const char *str, char **end, int base)
grub_strtoul (const char *str, char **end, int base)
{
unsigned long num = 0;
int found = 0;
/* Skip white spaces. */
while (*str && pupa_isspace (*str))
while (*str && grub_isspace (*str))
str++;
/* Guess the base, if not specified. The prefix `0x' means 16, and
@ -269,7 +269,7 @@ pupa_strtoul (const char *str, char **end, int base)
{
unsigned long digit;
digit = pupa_tolower (*str) - '0';
digit = grub_tolower (*str) - '0';
if (digit > 9)
{
digit += '0' - 'a' + 10;
@ -281,7 +281,7 @@ pupa_strtoul (const char *str, char **end, int base)
if (num > (~0UL - digit) / base)
{
pupa_error (PUPA_ERR_OUT_OF_RANGE, "overflow is detected");
grub_error (GRUB_ERR_OUT_OF_RANGE, "overflow is detected");
return 0;
}
@ -291,7 +291,7 @@ pupa_strtoul (const char *str, char **end, int base)
if (! found)
{
pupa_error (PUPA_ERR_BAD_NUMBER, "unrecognized number");
grub_error (GRUB_ERR_BAD_NUMBER, "unrecognized number");
return 0;
}
@ -302,38 +302,38 @@ pupa_strtoul (const char *str, char **end, int base)
}
char *
pupa_strdup (const char *s)
grub_strdup (const char *s)
{
pupa_size_t len;
grub_size_t len;
char *p;
len = pupa_strlen (s) + 1;
p = (char *) pupa_malloc (len);
len = grub_strlen (s) + 1;
p = (char *) grub_malloc (len);
if (! p)
return 0;
return pupa_memcpy (p, s, len);
return grub_memcpy (p, s, len);
}
char *
pupa_strndup (const char *s, pupa_size_t n)
grub_strndup (const char *s, grub_size_t n)
{
pupa_size_t len = 0;
grub_size_t len = 0;
char *p = (char *) s;
while (*(p++) && len < n)
len++;
len = pupa_strlen (s) + 1;
p = (char *) pupa_malloc (len);
len = grub_strlen (s) + 1;
p = (char *) grub_malloc (len);
if (! p)
return 0;
return pupa_memcpy (p, s, len);
return grub_memcpy (p, s, len);
}
void *
pupa_memset (void *s, int c, pupa_size_t n)
grub_memset (void *s, int c, grub_size_t n)
{
unsigned char *p = (unsigned char *) s;
@ -343,8 +343,8 @@ pupa_memset (void *s, int c, pupa_size_t n)
return s;
}
pupa_size_t
pupa_strlen (const char *s)
grub_size_t
grub_strlen (const char *s)
{
const char *p = s;
@ -355,9 +355,9 @@ pupa_strlen (const char *s)
}
static inline void
pupa_reverse (char *str)
grub_reverse (char *str)
{
char *p = str + pupa_strlen (str) - 1;
char *p = str + grub_strlen (str) - 1;
while (str < p)
{
@ -372,7 +372,7 @@ pupa_reverse (char *str)
}
static char *
pupa_itoa (char *str, int c, unsigned n)
grub_itoa (char *str, int c, unsigned n)
{
unsigned base = (c == 'x') ? 16 : 10;
char *p;
@ -392,12 +392,12 @@ pupa_itoa (char *str, int c, unsigned n)
while (n /= base);
*p = 0;
pupa_reverse (str);
grub_reverse (str);
return p;
}
static char *
pupa_ftoa (char *str, double f, int round)
grub_ftoa (char *str, double f, int round)
{
unsigned int intp;
unsigned int fractp;
@ -410,12 +410,12 @@ pupa_ftoa (char *str, double f, int round)
intp = f;
fractp = (f - (float) intp) * power;
pupa_sprintf (str, "%d.%d", intp, fractp);
grub_sprintf (str, "%d.%d", intp, fractp);
return str;
}
int
pupa_vsprintf (char *str, const char *fmt, va_list args)
grub_vsprintf (char *str, const char *fmt, va_list args)
{
char c;
int count = 0;
@ -428,7 +428,7 @@ pupa_vsprintf (char *str, const char *fmt, va_list args)
if (str)
*str++ = ch;
else
pupa_putchar (ch);
grub_putchar (ch);
count++;
}
@ -468,29 +468,29 @@ pupa_vsprintf (char *str, const char *fmt, va_list args)
p = (char *) fmt;
/* Read formatting parameters. */
while (*p && pupa_isdigit (*p))
while (*p && grub_isdigit (*p))
p++;
if (p > fmt)
{
char s[p - fmt];
pupa_strncpy (s, fmt, p - fmt);
grub_strncpy (s, fmt, p - fmt);
if (s[0] == '0')
zerofill = '0';
format1 = pupa_strtoul (s, 0, 10);
format1 = grub_strtoul (s, 0, 10);
fmt = p;
if (*p && *p == '.')
{
p++;
fmt++;
while (*p && pupa_isdigit (*p))
while (*p && grub_isdigit (*p))
p++;
if (p > fmt)
{
char fstr[p - fmt];
pupa_strncpy (fstr, fmt, p - fmt);
format2 = pupa_strtoul (fstr, 0, 10);
grub_strncpy (fstr, fmt, p - fmt);
format2 = grub_strtoul (fstr, 0, 10);
fmt = p;
}
}
@ -508,12 +508,12 @@ pupa_vsprintf (char *str, const char *fmt, va_list args)
case 'u':
case 'd':
n = va_arg (args, int);
pupa_itoa (tmp, c, n);
if (!rightfill && pupa_strlen (tmp) < format1)
write_fill (zerofill, format1 - pupa_strlen (tmp));
grub_itoa (tmp, c, n);
if (!rightfill && grub_strlen (tmp) < format1)
write_fill (zerofill, format1 - grub_strlen (tmp));
write_str (tmp);
if (rightfill && pupa_strlen (tmp) < format1)
write_fill (zerofill, format1 - pupa_strlen (tmp));
if (rightfill && grub_strlen (tmp) < format1)
write_fill (zerofill, format1 - grub_strlen (tmp));
break;
case 'c':
@ -525,18 +525,18 @@ pupa_vsprintf (char *str, const char *fmt, va_list args)
{
float f;
f = va_arg (args, double);
pupa_ftoa (tmp, f, format2);
if (!rightfill && pupa_strlen (tmp) < format1)
write_fill (zerofill, format1 - pupa_strlen (tmp));
grub_ftoa (tmp, f, format2);
if (!rightfill && grub_strlen (tmp) < format1)
write_fill (zerofill, format1 - grub_strlen (tmp));
write_str (tmp);
if (rightfill && pupa_strlen (tmp) < format1)
write_fill (zerofill, format1 - pupa_strlen (tmp));
if (rightfill && grub_strlen (tmp) < format1)
write_fill (zerofill, format1 - grub_strlen (tmp));
break;
}
case 'C':
{
pupa_uint32_t code = va_arg (args, pupa_uint32_t);
grub_uint32_t code = va_arg (args, grub_uint32_t);
int shift;
unsigned mask;
@ -588,13 +588,13 @@ pupa_vsprintf (char *str, const char *fmt, va_list args)
p = va_arg (args, char *);
if (p)
{
if (!rightfill && pupa_strlen (p) < format1)
write_fill (zerofill, format1 - pupa_strlen (p));
if (!rightfill && grub_strlen (p) < format1)
write_fill (zerofill, format1 - grub_strlen (p));
write_str (p);
if (rightfill && pupa_strlen (p) < format1)
write_fill (zerofill, format1 - pupa_strlen (p));
if (rightfill && grub_strlen (p) < format1)
write_fill (zerofill, format1 - grub_strlen (p));
}
else
write_str ("(null)");
@ -612,26 +612,26 @@ pupa_vsprintf (char *str, const char *fmt, va_list args)
*str = '\0';
if (count && !str)
pupa_refresh ();
grub_refresh ();
return count;
}
int
pupa_sprintf (char *str, const char *fmt, ...)
grub_sprintf (char *str, const char *fmt, ...)
{
va_list ap;
int ret;
va_start (ap, fmt);
ret = pupa_vsprintf (str, fmt, ap);
ret = grub_vsprintf (str, fmt, ap);
va_end (ap);
return ret;
}
pupa_err_t
pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *argc, char ***argv)
grub_err_t
grub_split_cmdline (const char *cmdline, grub_err_t (* getline) (char **), int *argc, char ***argv)
{
/* XXX: Fixed size buffer, perhaps this buffer should be dynamically
allocated. */
@ -651,7 +651,7 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
/* Get one character from the commandline. If the caller reads
beyond the end of the string a new line will be read. This
function will not chech for errors, the caller has to check for
pupa_errno. */
grub_errno. */
char getchar (void)
{
int c;
@ -703,7 +703,7 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
{
/* XXX: An env. variable can have characters and digits in
its name, are more characters allowed here? */
while (c && (pupa_isalpha (c) || pupa_isdigit (c)))
while (c && (grub_isalpha (c) || grub_isdigit (c)))
{
*(p++) = c;
c = getchar ();
@ -713,7 +713,7 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
*p = '\0';
/* The variable does not exist. */
val = pupa_env_get (varname);
val = grub_env_get (varname);
if (! val)
return;
@ -724,7 +724,7 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
/* Read one argument. Return 1 if no variables can be read anymore,
otherwise return 0. If there is an error, return 1, the caller
has to check pupa_errno. */
has to check grub_errno. */
int getarg (void)
{
char c;
@ -741,7 +741,7 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
/* Double quote. */
while ((c = getchar ()))
{
if (pupa_errno)
if (grub_errno)
return 1;
/* Read in an escaped character. */
if (c == '\\')
@ -766,7 +766,7 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
/* Single quote. */
while ((c = getchar ()) != '\'')
{
if (pupa_errno)
if (grub_errno)
return 1;
*(bp++) = c;
@ -779,8 +779,8 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
default:
/* A normal option. */
while (c && (pupa_isalpha (c)
|| pupa_isdigit (c) || pupa_isgraph (c)))
while (c && (grub_isalpha (c)
|| grub_isdigit (c) || grub_isgraph (c)))
{
/* Read in an escaped character. */
if (c == '\\')
@ -804,7 +804,7 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
break;
}
} while (! pupa_isspace (c) && c != '\'' && c != '"');
} while (! grub_isspace (c) && c != '\'' && c != '"');
return 0;
}
@ -820,20 +820,20 @@ pupa_split_cmdline (const char *cmdline, pupa_err_t (* getline) (char **), int *
}
/* Check if there were no errors. */
if (pupa_errno)
return pupa_errno;
if (grub_errno)
return grub_errno;
/* Reserve memory for the return values. */
args = pupa_malloc (bp - buffer);
args = grub_malloc (bp - buffer);
if (! args)
return pupa_errno;
pupa_memcpy (args, buffer, bp - buffer);
return grub_errno;
grub_memcpy (args, buffer, bp - buffer);
*argv = pupa_malloc (sizeof (char *) * (*argc + 1));
*argv = grub_malloc (sizeof (char *) * (*argc + 1));
if (! *argv)
{
pupa_free (args);
return pupa_errno;
grub_free (args);
return grub_errno;
}
/* The arguments are separated with 0's, setup argv so it points to

210
kern/mm.c
View file

@ -1,9 +1,9 @@
/* mm.c - functions for memory manager */
/*
* PUPA -- Preliminary Universal Programming Architecture for GRUB
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* PUPA is free software; you can redistribute it and/or modify
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
@ -14,66 +14,66 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PUPA; if not, write to the Free Software
* along with GRUB; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <config.h>
#include <pupa/mm.h>
#include <pupa/misc.h>
#include <pupa/err.h>
#include <pupa/types.h>
#include <pupa/disk.h>
#include <pupa/dl.h>
#include <grub/mm.h>
#include <grub/misc.h>
#include <grub/err.h>
#include <grub/types.h>
#include <grub/disk.h>
#include <grub/dl.h>
/* Magic words. */
#define PUPA_MM_FREE_MAGIC 0x2d3c2808
#define PUPA_MM_ALLOC_MAGIC 0x6db08fa4
#define GRUB_MM_FREE_MAGIC 0x2d3c2808
#define GRUB_MM_ALLOC_MAGIC 0x6db08fa4
typedef struct pupa_mm_header
typedef struct grub_mm_header
{
struct pupa_mm_header *next;
pupa_size_t size;
pupa_size_t magic;
#if PUPA_CPU_SIZEOF_VOID_P == 4
struct grub_mm_header *next;
grub_size_t size;
grub_size_t magic;
#if GRUB_CPU_SIZEOF_VOID_P == 4
char padding[4];
#elif PUPA_CPU_SIZEOF_VOID_P == 8
#elif GRUB_CPU_SIZEOF_VOID_P == 8
char padding[8];
#else
# error "unknown word size"
#endif
}
*pupa_mm_header_t;
*grub_mm_header_t;
#if PUPA_CPU_SIZEOF_VOID_P == 4
# define PUPA_MM_ALIGN_LOG2 4
#elif PUPA_CPU_SIZEOF_VOID_P == 8
# define PUPA_MM_ALIGN_LOG2 8
#if GRUB_CPU_SIZEOF_VOID_P == 4
# define GRUB_MM_ALIGN_LOG2 4
#elif GRUB_CPU_SIZEOF_VOID_P == 8
# define GRUB_MM_ALIGN_LOG2 8
#endif
#define PUPA_MM_ALIGN (1 << PUPA_MM_ALIGN_LOG2)
#define GRUB_MM_ALIGN (1 << GRUB_MM_ALIGN_LOG2)
typedef struct pupa_mm_region
typedef struct grub_mm_region
{
struct pupa_mm_header *first;
struct pupa_mm_region *next;
pupa_addr_t addr;
pupa_size_t size;
struct grub_mm_header *first;
struct grub_mm_region *next;
grub_addr_t addr;
grub_size_t size;
}
*pupa_mm_region_t;
*grub_mm_region_t;
static pupa_mm_region_t base;
static grub_mm_region_t base;
/* Get a header from the pointer PTR, and set *P and *R to a pointer
to the header and a pointer to its region, respectively. PTR must
be allocated. */
static void
get_header_from_pointer (void *ptr, pupa_mm_header_t *p, pupa_mm_region_t *r)
get_header_from_pointer (void *ptr, grub_mm_header_t *p, grub_mm_region_t *r)
{
if ((unsigned) ptr & (PUPA_MM_ALIGN - 1))
pupa_fatal ("unaligned pointer %p", ptr);
if ((unsigned) ptr & (GRUB_MM_ALIGN - 1))
grub_fatal ("unaligned pointer %p", ptr);
for (*r = base; *r; *r = (*r)->next)
if ((unsigned) ptr > (*r)->addr
@ -81,42 +81,42 @@ get_header_from_pointer (void *ptr, pupa_mm_header_t *p, pupa_mm_region_t *r)
break;
if (! *r)
pupa_fatal ("out of range pointer %p", ptr);
grub_fatal ("out of range pointer %p", ptr);
*p = (pupa_mm_header_t) ptr - 1;
if ((*p)->magic != PUPA_MM_ALLOC_MAGIC)
pupa_fatal ("alloc magic is broken at %p", *p);
*p = (grub_mm_header_t) ptr - 1;
if ((*p)->magic != GRUB_MM_ALLOC_MAGIC)
grub_fatal ("alloc magic is broken at %p", *p);
}
/* Initialize a region starting from ADDR and whose size is SIZE,
to use it as free space. */
void
pupa_mm_init_region (void *addr, pupa_size_t size)
grub_mm_init_region (void *addr, grub_size_t size)
{
pupa_mm_header_t h;
pupa_mm_region_t r, *p, q;
grub_mm_header_t h;
grub_mm_region_t r, *p, q;
#if 0
pupa_printf ("%s:%d: addr=%p, size=%u\n", __FILE__, __LINE__, addr, size);
grub_printf ("%s:%d: addr=%p, size=%u\n", __FILE__, __LINE__, addr, size);
#endif
/* If this region is too small, ignore it. */
if (size < PUPA_MM_ALIGN * 2)
if (size < GRUB_MM_ALIGN * 2)
return;
/* Allocate a region from the head. */
r = (pupa_mm_region_t) (((pupa_addr_t) addr + PUPA_MM_ALIGN - 1)
& (~(PUPA_MM_ALIGN - 1)));
r = (grub_mm_region_t) (((grub_addr_t) addr + GRUB_MM_ALIGN - 1)
& (~(GRUB_MM_ALIGN - 1)));
size -= (char *) r - (char *) addr + sizeof (*r);
h = (pupa_mm_header_t) ((char *) r + PUPA_MM_ALIGN);
h = (grub_mm_header_t) ((char *) r + GRUB_MM_ALIGN);
h->next = h;
h->magic = PUPA_MM_FREE_MAGIC;
h->size = (size >> PUPA_MM_ALIGN_LOG2);
h->magic = GRUB_MM_FREE_MAGIC;
h->size = (size >> GRUB_MM_ALIGN_LOG2);
r->first = h;
r->addr = (pupa_addr_t) h;
r->size = (h->size << PUPA_MM_ALIGN_LOG2);
r->addr = (grub_addr_t) h;
r->size = (h->size << GRUB_MM_ALIGN_LOG2);
/* Find where to insert this region. Put a smaller one before bigger ones,
to prevent fragmentations. */
@ -132,47 +132,47 @@ pupa_mm_init_region (void *addr, pupa_size_t size)
buffer starting from *FIRST. ALIGN must be a power of two. Return a
non-NULL if successful, otherwise return NULL. */
static void *
pupa_real_malloc (pupa_mm_header_t *first, pupa_size_t n, pupa_size_t align)
grub_real_malloc (grub_mm_header_t *first, grub_size_t n, grub_size_t align)
{
pupa_mm_header_t p, q;
grub_mm_header_t p, q;
if ((*first)->magic == PUPA_MM_ALLOC_MAGIC)
if ((*first)->magic == GRUB_MM_ALLOC_MAGIC)
return 0;
for (q = *first, p = q->next; ; q = p, p = p->next)
{
pupa_off_t extra;
grub_off_t extra;
extra = ((pupa_addr_t) (p + 1) >> PUPA_MM_ALIGN_LOG2) % align;
extra = ((grub_addr_t) (p + 1) >> GRUB_MM_ALIGN_LOG2) % align;
if (extra)
extra = align - extra;
if (! p)
pupa_fatal ("null in the ring");
grub_fatal ("null in the ring");
if (p->magic != PUPA_MM_FREE_MAGIC)
pupa_fatal ("free magic is broken at %p: 0x%x", p, p->magic);
if (p->magic != GRUB_MM_FREE_MAGIC)
grub_fatal ("free magic is broken at %p: 0x%x", p, p->magic);
if (p->size >= n + extra)
{
if (extra == 0 && p->size == n)
{
q->next = p->next;
p->magic = PUPA_MM_ALLOC_MAGIC;
p->magic = GRUB_MM_ALLOC_MAGIC;
}
else if (extra == 0 || p->size == n + extra)
{
p->size -= n;
p += p->size;
p->size = n;
p->magic = PUPA_MM_ALLOC_MAGIC;
p->magic = GRUB_MM_ALLOC_MAGIC;
}
else
{
pupa_mm_header_t r;
grub_mm_header_t r;
r = p + extra + n;
r->magic = PUPA_MM_FREE_MAGIC;
r->magic = GRUB_MM_FREE_MAGIC;
r->size = p->size - extra - n;
r->next = p->next;
@ -180,7 +180,7 @@ pupa_real_malloc (pupa_mm_header_t *first, pupa_size_t n, pupa_size_t align)
p->next = r;
p += extra;
p->size = n;
p->magic = PUPA_MM_ALLOC_MAGIC;
p->magic = GRUB_MM_ALLOC_MAGIC;
}
*first = q;
@ -197,13 +197,13 @@ pupa_real_malloc (pupa_mm_header_t *first, pupa_size_t n, pupa_size_t align)
/* Allocate SIZE bytes with the alignment ALIGN and return the pointer. */
void *
pupa_memalign (pupa_size_t align, pupa_size_t size)
grub_memalign (grub_size_t align, grub_size_t size)
{
pupa_mm_region_t r;
pupa_size_t n = ((size + PUPA_MM_ALIGN - 1) >> PUPA_MM_ALIGN_LOG2) + 1;
grub_mm_region_t r;
grub_size_t n = ((size + GRUB_MM_ALIGN - 1) >> GRUB_MM_ALIGN_LOG2) + 1;
int count = 0;
align = (align >> PUPA_MM_ALIGN_LOG2);
align = (align >> GRUB_MM_ALIGN_LOG2);
if (align == 0)
align = 1;
@ -213,7 +213,7 @@ pupa_memalign (pupa_size_t align, pupa_size_t size)
{
void *p;
p = pupa_real_malloc (&(r->first), n, align);
p = grub_real_malloc (&(r->first), n, align);
if (p)
return p;
}
@ -223,13 +223,13 @@ pupa_memalign (pupa_size_t align, pupa_size_t size)
{
case 0:
/* Invalidate disk caches. */
pupa_disk_cache_invalidate_all ();
grub_disk_cache_invalidate_all ();
count++;
goto again;
case 1:
/* Unload unneeded modules. */
pupa_dl_unload_unneeded ();
grub_dl_unload_unneeded ();
count++;
goto again;
@ -237,43 +237,43 @@ pupa_memalign (pupa_size_t align, pupa_size_t size)
break;
}
pupa_error (PUPA_ERR_OUT_OF_MEMORY, "out of memory");
grub_error (GRUB_ERR_OUT_OF_MEMORY, "out of memory");
return 0;
}
/* Allocate SIZE bytes and return the pointer. */
void *
pupa_malloc (pupa_size_t size)
grub_malloc (grub_size_t size)
{
return pupa_memalign (0, size);
return grub_memalign (0, size);
}
/* Deallocate the pointer PTR. */
void
pupa_free (void *ptr)
grub_free (void *ptr)
{
pupa_mm_header_t p;
pupa_mm_region_t r;
grub_mm_header_t p;
grub_mm_region_t r;
if (! ptr)
return;
get_header_from_pointer (ptr, &p, &r);
if (r->first->magic == PUPA_MM_ALLOC_MAGIC)
if (r->first->magic == GRUB_MM_ALLOC_MAGIC)
{
p->magic = PUPA_MM_FREE_MAGIC;
p->magic = GRUB_MM_FREE_MAGIC;
r->first = p->next = p;
}
else
{
pupa_mm_header_t q;
grub_mm_header_t q;
#if 0
q = r->first;
do
{
pupa_printf ("%s:%d: q=%p, q->size=0x%x, q->magic=0x%x\n",
grub_printf ("%s:%d: q=%p, q->size=0x%x, q->magic=0x%x\n",
__FILE__, __LINE__, q, q->size, q->magic);
q = q->next;
}
@ -282,14 +282,14 @@ pupa_free (void *ptr)
for (q = r->first; q >= p || q->next <= p; q = q->next)
{
if (q->magic != PUPA_MM_FREE_MAGIC)
pupa_fatal ("free magic is broken at %p: 0x%x", q, q->magic);
if (q->magic != GRUB_MM_FREE_MAGIC)
grub_fatal ("free magic is broken at %p: 0x%x", q, q->magic);
if (q >= q->next && (q < p || q->next > p))
break;
}
p->magic = PUPA_MM_FREE_MAGIC;
p->magic = GRUB_MM_FREE_MAGIC;
p->next = q->next;
q->next = p;
@ -314,67 +314,67 @@ pupa_free (void *ptr)
/* Reallocate SIZE bytes and return the pointer. The contents will be
the same as that of PTR. */
void *
pupa_realloc (void *ptr, pupa_size_t size)
grub_realloc (void *ptr, grub_size_t size)
{
pupa_mm_header_t p;
pupa_mm_region_t r;
grub_mm_header_t p;
grub_mm_region_t r;
void *q;
pupa_size_t n;
grub_size_t n;
if (! ptr)
return pupa_malloc (size);
return grub_malloc (size);
if (! size)
{
pupa_free (ptr);
grub_free (ptr);
return 0;
}
/* FIXME: Not optimal. */
n = ((size + PUPA_MM_ALIGN - 1) >> PUPA_MM_ALIGN_LOG2) + 1;
n = ((size + GRUB_MM_ALIGN - 1) >> GRUB_MM_ALIGN_LOG2) + 1;
get_header_from_pointer (ptr, &p, &r);
if (p->size >= n)
return p;
q = pupa_malloc (size);
q = grub_malloc (size);
if (! q)
return q;
pupa_memcpy (q, ptr, size);
pupa_free (ptr);
grub_memcpy (q, ptr, size);
grub_free (ptr);
return q;
}
#if MM_DEBUG
void
pupa_mm_dump (unsigned lineno)
grub_mm_dump (unsigned lineno)
{
pupa_mm_region_t r;
grub_mm_region_t r;
pupa_printf ("called at line %u\n", lineno);
grub_printf ("called at line %u\n", lineno);
for (r = base; r; r = r->next)
{
pupa_mm_header_t p;
grub_mm_header_t p;
for (p = (pupa_mm_header_t) ((r->addr + PUPA_MM_ALIGN - 1)
& (~(PUPA_MM_ALIGN - 1)));
(pupa_addr_t) p < r->addr + r->size;
for (p = (grub_mm_header_t) ((r->addr + GRUB_MM_ALIGN - 1)
& (~(GRUB_MM_ALIGN - 1)));
(grub_addr_t) p < r->addr + r->size;
p++)
{
switch (p->magic)
{
case PUPA_MM_FREE_MAGIC:
pupa_printf ("F:%p:%u:%p\n",
p, p->size << PUPA_MM_ALIGN_LOG2, p->next);
case GRUB_MM_FREE_MAGIC:
grub_printf ("F:%p:%u:%p\n",
p, p->size << GRUB_MM_ALIGN_LOG2, p->next);
break;
case PUPA_MM_ALLOC_MAGIC:
pupa_printf ("A:%p:%u\n", p, p->size << PUPA_MM_ALIGN_LOG2);
case GRUB_MM_ALLOC_MAGIC:
grub_printf ("A:%p:%u\n", p, p->size << GRUB_MM_ALIGN_LOG2);
break;
}
}
}
pupa_printf ("\n");
grub_printf ("\n");
}
#endif /* MM_DEBUG */

Some files were not shown because too many files have changed in this diff Show more