JFS and XFS support is added.

This commit is contained in:
okuji committed 2001-10-27 16:04:25 +00:00
1 parent 36fd6bd0fa
commit d619861976
21 files changed
+6102 -1614

No files matched your search

+2
View File
@@ -37,3 +37,5 @@ Christoph Plattner added support for Net Boot Image Proposal.
Frank Mehnert added support for hercules console.
Kristoffer Branemyr added VSTa filesystem support.
Serguei Tzukanov added JFS and XFS support.
+45
View File
@@ -1,3 +1,48 @@
2001-10-27 Yoshinori K. Okuji <okuji@gnu.org>
JFS and XFS support is added.
From Serguei Tzukanov <tzukanov@narod.ru>:
* configure.in (--disable-jfs): New option.
(--disable-xfs): Likewise.
* stage2/Makefile.am (noinst_HEADERS): Added jfs.h and xfs.h.
(libgrub_a_SOURCES): Added fsys_jfs.c and fsys_xfs.c.
(libgrub_a_CFLAGS): Added -DFSYS_JFS=1 and -DFSYS_XFS=1.
(pkgdata_DATA): Added jfs_stage1_5 and xfs_stage1_5.
(noinst_PROGRAMS): Added jfs_stage1_5.exec and
xfs_stage1_5.exec.
(pre_stage2_exec_SOURCES): Added fsys_jfs.c and fsys_xfs.c.
(jfs_stage1_5_exec_SOURCES): New variable.
(jfs_stage1_5_exec_CFLAGS): Likewise.
(jfs_stage1_5_exec_ASFLAGS): Likewise.
(jfs_stage1_5_exec_LDFLAGS): Likewise.
(xfs_stage1_5_exec_SOURCES): Likewise.
(xfs_stage1_5_exec_CFLAGS): Likewise.
(xfs_stage1_5_exec_ASFLAGS): Likewise.
(xfs_stage1_5_exec_LDFLAGS): Likewise.
* stage2/builtins.c (setup_func): Add items for JFS and XFS into
STAGE1_5_MAP.
* stage2/disk_io.c (fsys_table): Added entries for JFS and XFS.
* stage2/filesys.h [FSYS_JFS] (FSYS_JFS_NUM): Set to 1.
[FSYS_JFS] (jfs_mount): Declared.
[FSYS_JFS] (jfs_read): Likewise.
[FSYS_JFS] (jfs_dir): Likewise.
[FSYS_JFS] (jfs_embed): Likewise.
[!FSYS_JFS] (FSYS_JFS_NUM): Set to 0.
[FSYS_XFS] (FSYS_XFS_NUM): Set to 1.
[FSYS_XFS] (xfs_mount): Declared.
[FSYS_XFS] (xfs_read): Likewise.
[FSYS_XFS] (xfs_dir): Likewise.
(NUM_FSYS): Added FSYS_JFS_NUM and FSYS_XFS_NUM.
* stage2/shared.h (STAGE2_ID_JFS_STAGE1_5): New macro.
(STAGE2_ID_XFS_STAGE1_5): Likewise.
[FSYS_JFS] (STAGE2_ID): Set to STAGE2_ID_JFS_STAGE1_5.
[FSYS_XFS] (STAGE2_ID): Set to STAGE2_ID_XFS_STAGE1_5.
* stage2/fsys_jfs.c: New file.
* stage2/fsys_xfs.c: Likewise.
* stage2/jfs.h: Likewise.
* stage2/xfs.h: Likewise.
2001-10-27 Yoshinori K. Okuji <okuji@gnu.org>
* stage2/apm.S: Always disconnect from APM. Written by Erich
+2 -3
View File
@@ -103,9 +103,8 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
uninstall-recursive check-recursive installcheck-recursive
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
Makefile.am Makefile.in NEWS THANKS TODO acconfig.h \
acinclude.m4 aclocal.m4 compile config.guess config.h.in \
config.sub configure configure.in depcomp install-sh missing \
mkinstalldirs
acinclude.m4 aclocal.m4 config.guess config.h.in config.sub \
configure configure.in depcomp install-sh missing mkinstalldirs
DIST_SUBDIRS = $(SUBDIRS)
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
+5
View File
@@ -1,5 +1,10 @@
NEWS - list of user-visible changes between releases of GRUB
New in 0.91:
* Support for Linux DAC960 is added.
* JFS and XFS support is added.
* Important bugfixes are made for ReiserFS, APM, TFTP, etc.
New in 0.90 - 2001-07-11:
* The command "setkey" resets key mappings, when no argument is
specified.
+3 -3
View File
@@ -4,9 +4,9 @@ personal computer BIOSes:
- provides fully-featured command line and graphical interfaces
- recognizes fdisk partitions and BSD disklabels
- can dynamically read Linux ext2fs and ReiserFS, BSD ufs, MS-DOS
FAT16 and FAT32, Minix fs, and VSTa fs filesystems, plus hardcoded
blocklists
- can dynamically read Linux ext2fs, ReiserFS, JFS and XFS, BSD ufs,
MS-DOS FAT16 and FAT32, Minix fs, and VSTa fs filesystems, plus
hardcoded blocklists
- can boot Multiboot-compliant kernels (such as GNU Mach), as well
as standard Linux and *BSD kernels
+1
View File
@@ -70,6 +70,7 @@ Ralf Medow <ralf.medow@t-online.de>
Ramon van Handel <vhandel@chem.vu.nl>
Roderich Schupp <rsch@ExperTeam.de>
Rogelio M. Serrano Jr. <rogelio@victorio.com>
Serguei Tzukanov <tzukanov@narod.ru>
Stefan Ondrejicka <ondrej@idata.sk>
Stephen Early <steve@greenend.org.uk>
Takehiro Suzuki <takehiro@coral.ocn.ne.jp>
+1 -1
View File
@@ -80,7 +80,7 @@ Things that may be done anytime:
* Add ISA PnP support.
* Add more filesystems support (XFS, NTFS, etc.)
* Add more filesystems support (NTFS, etc.)
* Add more remote console support (parallel and net).
+99
View File
@@ -0,0 +1,99 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
# Copyright 1999, 2000 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program 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, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Usage:
# compile PROGRAM [ARGS]...
# `-o FOO.o' is removed from the args passed to the actual compile.
prog=$1
shift
ofile=
cfile=
args=
while test $# -gt 0; do
case "$1" in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we do something ugly here.
ofile=$2
shift
case "$ofile" in
*.o | *.obj)
;;
*)
args="$args -o $ofile"
ofile=
;;
esac
;;
*.c)
cfile=$1
args="$args $1"
;;
*)
args="$args $1"
;;
esac
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$prog" $args
fi
# Name of file we expect compiler to create.
cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
# Create the lock directory.
# Note: use `[/.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
while true; do
if mkdir $lockdir > /dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir $lockdir; exit 1" 1 2 15
# Run the compile.
"$prog" $args
status=$?
if test -f "$cofile"; then
mv "$cofile" "$ofile"
fi
rmdir $lockdir
exit $status
+25 -24
View File
@@ -1,4 +1,6 @@
/* config.h.in. Generated automatically from configure.in by autoheader. */
/* This file is still needed because the defines below are
AC_DEFINEd in more than one place. */
/* Defined if you have a curses library (ncurses preferred). */
#undef HAVE_LIBCURSES
@@ -33,36 +35,35 @@
/* Defined if the user specified --enable-auto-linux-mem-opt. */
#undef AUTO_LINUX_MEM_OPT
/* Define if you have the <curses.h> header file. */
#undef HAVE_CURSES_H
/* Define if you have the <ncurses.h> header file. */
#undef HAVE_NCURSES_H
/* Define if you have the <ncurses/curses.h> header file. */
#undef HAVE_NCURSES_CURSES_H
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Name of package */
#undef PACKAGE
/* Version number of package */
#undef VERSION
/* Define if C symbols get an underscore after compilation */
#undef HAVE_ASM_USCORE
/* Define it to "addr32" or "addr32;" to make GAS happy */
#undef ADDR32
/* Define it to "data32" or "data32;" to make GAS happy */
#undef DATA32
/* Define if C symbols get an underscore after compilation */
#undef HAVE_ASM_USCORE
/* Define if you have the <curses.h> header file. */
#undef HAVE_CURSES_H
/* Define if you have the <ncurses/curses.h> header file. */
#undef HAVE_NCURSES_CURSES_H
/* Define if you have the <ncurses.h> header file. */
#undef HAVE_NCURSES_H
/* Define if opendisk() in -lutil can be used */
#undef HAVE_OPENDISK
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Name of package */
#undef PACKAGE
/* Version number of package */
#undef VERSION
Vendored
+3273 -1544
View File
File diff suppressed because it is too large. Load diff
+14
View File
@@ -228,6 +228,20 @@ if test x"$enable_vstafs" != xno; then
FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_VSTAFS=1"
fi
AC_ARG_ENABLE(jfs,
[ --disable-jfs disable IBM JFS support in Stage 2])
if test x"$enable_jfs" != xno; then
FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_JFS=1"
fi
AC_ARG_ENABLE(xfs,
[ --disable-xfs disable SGI XFS support in Stage 2])
if test x"$enable_xfs" != xno; then
FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_XFS=1"
fi
dnl AC_ARG_ENABLE(tftp,
dnl [ --enable-tftp enable TFTP support in Stage 2])
dnl
+37 -13
View File
@@ -5,8 +5,8 @@ noinst_SCRIPTS = $(TESTS)
# For dist target.
noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \
fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \
imgact_aout.h mb_header.h mb_info.h md5.h pc_slice.h serial.h \
shared.h smp-imps.h nbi.h vstafs.h
imgact_aout.h jfs.h mb_header.h mb_info.h md5.h pc_slice.h \
serial.h shared.h smp-imps.h nbi.h vstafs.h xfs.h
EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS)
# For <stage1.h>.
@@ -16,11 +16,12 @@ INCLUDES = -I$(top_srcdir)/stage1
noinst_LIBRARIES = libgrub.a
libgrub_a_SOURCES = boot.c builtins.c common.c char_io.c cmdline.c \
disk_io.c gunzip.c fsys_ffs.c fsys_ext2fs.c fsys_fat.c \
fsys_minix.c fsys_reiserfs.c fsys_vstafs.c stage2.c md5.c
fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_vstafs.c \
fsys_xfs.c stage2.c md5.c
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
-DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \
-DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DFSYS_VSTAFS=1 \
-DUSE_MD5_PASSWORDS=1 \
-DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DFSYS_VSTAFS=1
-DFSYS_XFS=1 -DUSE_MD5_PASSWORDS=1 \
-DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 -fwritable-strings
# Stage 2 and Stage 1.5's.
@@ -30,19 +31,23 @@ EXTRA_PROGRAMS = nbloader.exec pxeloader.exec diskless.exec
if DISKLESS_SUPPORT
pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5 nbgrub pxegrub
jfs_stage1_5 minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5 \
xfs_stage1_5 nbgrub pxegrub
noinst_DATA = pre_stage2 start nbloader pxeloader diskless
noinst_PROGRAMS = pre_stage2.exec start.exec e2fs_stage1_5.exec \
fat_stage1_5.exec ffs_stage1_5.exec minix_stage1_5.exec \
reiserfs_stage1_5.exec vstafs_stage1_5.exec nbloader.exec \
fat_stage1_5.exec ffs_stage1_5.exec jfs_stage1_5.exec \
minix_stage1_5.exec reiserfs_stage1_5.exec \
vstafs_stage1_5.exec xfs_stage1_5.exec nbloader.exec \
pxeloader.exec diskless.exec
else
pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
jfs_stage1_5 minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5 \
xfs_stage1_5
noinst_DATA = pre_stage2 start
noinst_PROGRAMS = pre_stage2.exec start.exec e2fs_stage1_5.exec \
fat_stage1_5.exec ffs_stage1_5.exec minix_stage1_5.exec \
reiserfs_stage1_5.exec vstafs_stage1_5.exec
fat_stage1_5.exec ffs_stage1_5.exec jfs_stage1_5.exec \
minix_stage1_5.exec reiserfs_stage1_5.exec \
vstafs_stage1_5.exec xfs_stage1_5.exec
endif
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
@@ -78,8 +83,9 @@ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
# For stage2 target.
pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \
fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c \
fsys_vstafs.c hercules.c serial.c smp-imps.c stage2.c md5.c
fsys_fat.c fsys_ffs.c fsys_jfs.c fsys_minix.c fsys_reiserfs.c \
fsys_vstafs.c fsys_xfs.c hercules.c serial.c smp-imps.c \
stage2.c md5.c
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_ASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK)
@@ -169,6 +175,24 @@ vstafs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \
-DNO_BLOCK_FILES=1
vstafs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For jfs_stage1_5 target.
jfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \
disk_io.c stage1_5.c fsys_jfs.c bios.c
jfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \
-DNO_BLOCK_FILES=1
jfs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \
-DNO_BLOCK_FILES=1
jfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For xfs_stage1_5 target.
xfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \
disk_io.c stage1_5.c fsys_xfs.c bios.c
xfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \
-DNO_BLOCK_FILES=1
xfs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \
-DNO_BLOCK_FILES=1
xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For diskless target.
diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES)
diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \
+390 -24
View File
@@ -96,8 +96,8 @@ noinst_SCRIPTS = $(TESTS)
# For dist target.
noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \
fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \
imgact_aout.h mb_header.h mb_info.h md5.h pc_slice.h serial.h \
shared.h smp-imps.h nbi.h vstafs.h
imgact_aout.h jfs.h mb_header.h mb_info.h md5.h pc_slice.h \
serial.h shared.h smp-imps.h nbi.h vstafs.h xfs.h
EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS)
@@ -108,33 +108,36 @@ INCLUDES = -I$(top_srcdir)/stage1
noinst_LIBRARIES = libgrub.a
libgrub_a_SOURCES = boot.c builtins.c common.c char_io.c cmdline.c \
disk_io.c gunzip.c fsys_ffs.c fsys_ext2fs.c fsys_fat.c \
fsys_minix.c fsys_reiserfs.c fsys_vstafs.c stage2.c md5.c
fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_vstafs.c \
fsys_xfs.c stage2.c md5.c
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
-DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \
-DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DFSYS_VSTAFS=1 \
-DUSE_MD5_PASSWORDS=1 \
-DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 -fwritable-strings
-DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DFSYS_VSTAFS=1
EXTRA_PROGRAMS = nbloader.exec pxeloader.exec diskless.exec
@DISKLESS_SUPPORT_TRUE@pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
@DISKLESS_SUPPORT_TRUE@ minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5 nbgrub pxegrub
@DISKLESS_SUPPORT_TRUE@ jfs_stage1_5 minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5 \
@DISKLESS_SUPPORT_TRUE@ xfs_stage1_5 nbgrub pxegrub
@DISKLESS_SUPPORT_FALSE@pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
@DISKLESS_SUPPORT_FALSE@ minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
@DISKLESS_SUPPORT_FALSE@ jfs_stage1_5 minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5 \
@DISKLESS_SUPPORT_FALSE@ xfs_stage1_5
@DISKLESS_SUPPORT_TRUE@noinst_DATA = pre_stage2 start nbloader pxeloader diskless
@DISKLESS_SUPPORT_FALSE@noinst_DATA = pre_stage2 start
@DISKLESS_SUPPORT_TRUE@noinst_PROGRAMS = pre_stage2.exec start.exec e2fs_stage1_5.exec \
@DISKLESS_SUPPORT_TRUE@ fat_stage1_5.exec ffs_stage1_5.exec minix_stage1_5.exec \
@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5.exec vstafs_stage1_5.exec nbloader.exec \
@DISKLESS_SUPPORT_TRUE@ fat_stage1_5.exec ffs_stage1_5.exec jfs_stage1_5.exec \
@DISKLESS_SUPPORT_TRUE@ minix_stage1_5.exec reiserfs_stage1_5.exec \
@DISKLESS_SUPPORT_TRUE@ vstafs_stage1_5.exec xfs_stage1_5.exec nbloader.exec \
@DISKLESS_SUPPORT_TRUE@ pxeloader.exec diskless.exec
@DISKLESS_SUPPORT_FALSE@noinst_PROGRAMS = pre_stage2.exec start.exec e2fs_stage1_5.exec \
@DISKLESS_SUPPORT_FALSE@ fat_stage1_5.exec ffs_stage1_5.exec minix_stage1_5.exec \
@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5.exec vstafs_stage1_5.exec
@DISKLESS_SUPPORT_FALSE@ fat_stage1_5.exec ffs_stage1_5.exec jfs_stage1_5.exec \
@DISKLESS_SUPPORT_FALSE@ minix_stage1_5.exec reiserfs_stage1_5.exec \
@DISKLESS_SUPPORT_FALSE@ vstafs_stage1_5.exec xfs_stage1_5.exec
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
@@ -162,8 +165,9 @@ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
# For stage2 target.
pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \
fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c \
fsys_vstafs.c hercules.c serial.c smp-imps.c stage2.c md5.c
fsys_fat.c fsys_ffs.c fsys_jfs.c fsys_minix.c fsys_reiserfs.c \
fsys_vstafs.c fsys_xfs.c hercules.c serial.c smp-imps.c \
stage2.c md5.c
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_ASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
@@ -252,6 +256,30 @@ vstafs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \
vstafs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For jfs_stage1_5 target.
jfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \
disk_io.c stage1_5.c fsys_jfs.c bios.c
jfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \
-DNO_BLOCK_FILES=1
jfs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \
-DNO_BLOCK_FILES=1
jfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For xfs_stage1_5 target.
xfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \
disk_io.c stage1_5.c fsys_xfs.c bios.c
xfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \
-DNO_BLOCK_FILES=1
xfs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \
-DNO_BLOCK_FILES=1
xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For diskless target.
diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES)
diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \
@@ -285,10 +313,11 @@ am_libgrub_a_OBJECTS = libgrub_a-boot.$(OBJEXT) \
libgrub_a-char_io.$(OBJEXT) libgrub_a-cmdline.$(OBJEXT) \
libgrub_a-disk_io.$(OBJEXT) libgrub_a-gunzip.$(OBJEXT) \
libgrub_a-fsys_ffs.$(OBJEXT) libgrub_a-fsys_ext2fs.$(OBJEXT) \
libgrub_a-fsys_fat.$(OBJEXT) libgrub_a-fsys_minix.$(OBJEXT) \
libgrub_a-fsys_fat.$(OBJEXT) libgrub_a-fsys_jfs.$(OBJEXT) \
libgrub_a-fsys_minix.$(OBJEXT) \
libgrub_a-fsys_reiserfs.$(OBJEXT) \
libgrub_a-fsys_vstafs.$(OBJEXT) libgrub_a-stage2.$(OBJEXT) \
libgrub_a-md5.$(OBJEXT)
libgrub_a-fsys_vstafs.$(OBJEXT) libgrub_a-fsys_xfs.$(OBJEXT) \
libgrub_a-stage2.$(OBJEXT) libgrub_a-md5.$(OBJEXT)
libgrub_a_OBJECTS = $(am_libgrub_a_OBJECTS)
EXTRA_PROGRAMS = nbloader.exec$(EXEEXT) pxeloader.exec$(EXEEXT) \
diskless.exec$(EXEEXT)
@@ -297,9 +326,11 @@ EXTRA_PROGRAMS = nbloader.exec$(EXEEXT) pxeloader.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ e2fs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ fat_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ ffs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ jfs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ minix_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ vstafs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ xfs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ nbloader.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ pxeloader.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ diskless.exec$(EXEEXT)
@@ -308,9 +339,11 @@ EXTRA_PROGRAMS = nbloader.exec$(EXEEXT) pxeloader.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ e2fs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ fat_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ ffs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ jfs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ minix_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ vstafs_stage1_5.exec$(EXEEXT)
@DISKLESS_SUPPORT_FALSE@ vstafs_stage1_5.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ xfs_stage1_5.exec$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am_diskless_exec_OBJECTS = diskless_exec-asm.$(OBJEXT) \
@@ -321,9 +354,11 @@ am_diskless_exec_OBJECTS = diskless_exec-asm.$(OBJEXT) \
diskless_exec-fsys_ext2fs.$(OBJEXT) \
diskless_exec-fsys_fat.$(OBJEXT) \
diskless_exec-fsys_ffs.$(OBJEXT) \
diskless_exec-fsys_jfs.$(OBJEXT) \
diskless_exec-fsys_minix.$(OBJEXT) \
diskless_exec-fsys_reiserfs.$(OBJEXT) \
diskless_exec-fsys_vstafs.$(OBJEXT) \
diskless_exec-fsys_xfs.$(OBJEXT) \
diskless_exec-hercules.$(OBJEXT) diskless_exec-serial.$(OBJEXT) \
diskless_exec-smp-imps.$(OBJEXT) diskless_exec-stage2.$(OBJEXT) \
diskless_exec-md5.$(OBJEXT)
@@ -362,6 +397,17 @@ am_ffs_stage1_5_exec_OBJECTS = ffs_stage1_5_exec-start.$(OBJEXT) \
ffs_stage1_5_exec_OBJECTS = $(am_ffs_stage1_5_exec_OBJECTS)
ffs_stage1_5_exec_LDADD = $(LDADD)
ffs_stage1_5_exec_DEPENDENCIES =
am_jfs_stage1_5_exec_OBJECTS = jfs_stage1_5_exec-start.$(OBJEXT) \
jfs_stage1_5_exec-asm.$(OBJEXT) \
jfs_stage1_5_exec-common.$(OBJEXT) \
jfs_stage1_5_exec-char_io.$(OBJEXT) \
jfs_stage1_5_exec-disk_io.$(OBJEXT) \
jfs_stage1_5_exec-stage1_5.$(OBJEXT) \
jfs_stage1_5_exec-fsys_jfs.$(OBJEXT) \
jfs_stage1_5_exec-bios.$(OBJEXT)
jfs_stage1_5_exec_OBJECTS = $(am_jfs_stage1_5_exec_OBJECTS)
jfs_stage1_5_exec_LDADD = $(LDADD)
jfs_stage1_5_exec_DEPENDENCIES =
am_minix_stage1_5_exec_OBJECTS = minix_stage1_5_exec-start.$(OBJEXT) \
minix_stage1_5_exec-asm.$(OBJEXT) \
minix_stage1_5_exec-common.$(OBJEXT) \
@@ -388,9 +434,11 @@ am_pre_stage2_exec_OBJECTS = pre_stage2_exec-asm.$(OBJEXT) \
pre_stage2_exec-fsys_ext2fs.$(OBJEXT) \
pre_stage2_exec-fsys_fat.$(OBJEXT) \
pre_stage2_exec-fsys_ffs.$(OBJEXT) \
pre_stage2_exec-fsys_jfs.$(OBJEXT) \
pre_stage2_exec-fsys_minix.$(OBJEXT) \
pre_stage2_exec-fsys_reiserfs.$(OBJEXT) \
pre_stage2_exec-fsys_vstafs.$(OBJEXT) \
pre_stage2_exec-fsys_xfs.$(OBJEXT) \
pre_stage2_exec-hercules.$(OBJEXT) \
pre_stage2_exec-serial.$(OBJEXT) \
pre_stage2_exec-smp-imps.$(OBJEXT) \
@@ -430,6 +478,17 @@ am_vstafs_stage1_5_exec_OBJECTS = vstafs_stage1_5_exec-start.$(OBJEXT) \
vstafs_stage1_5_exec_OBJECTS = $(am_vstafs_stage1_5_exec_OBJECTS)
vstafs_stage1_5_exec_LDADD = $(LDADD)
vstafs_stage1_5_exec_DEPENDENCIES =
am_xfs_stage1_5_exec_OBJECTS = xfs_stage1_5_exec-start.$(OBJEXT) \
xfs_stage1_5_exec-asm.$(OBJEXT) \
xfs_stage1_5_exec-common.$(OBJEXT) \
xfs_stage1_5_exec-char_io.$(OBJEXT) \
xfs_stage1_5_exec-disk_io.$(OBJEXT) \
xfs_stage1_5_exec-stage1_5.$(OBJEXT) \
xfs_stage1_5_exec-fsys_xfs.$(OBJEXT) \
xfs_stage1_5_exec-bios.$(OBJEXT)
xfs_stage1_5_exec_OBJECTS = $(am_xfs_stage1_5_exec_OBJECTS)
xfs_stage1_5_exec_LDADD = $(LDADD)
xfs_stage1_5_exec_DEPENDENCIES =
SCRIPTS = $(noinst_SCRIPTS)
@@ -449,9 +508,11 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_ext2fs.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_fat.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_ffs.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_jfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_minix.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_reiserfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_vstafs.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-fsys_xfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-gunzip.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-hercules.Po \
@AMDEP_TRUE@ $(DEPDIR)/diskless_exec-md5.Po \
@@ -476,6 +537,12 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
@AMDEP_TRUE@ $(DEPDIR)/ffs_stage1_5_exec-disk_io.Po \
@AMDEP_TRUE@ $(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po \
@AMDEP_TRUE@ $(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po \
@AMDEP_TRUE@ $(DEPDIR)/jfs_stage1_5_exec-bios.Po \
@AMDEP_TRUE@ $(DEPDIR)/jfs_stage1_5_exec-char_io.Po \
@AMDEP_TRUE@ $(DEPDIR)/jfs_stage1_5_exec-common.Po \
@AMDEP_TRUE@ $(DEPDIR)/jfs_stage1_5_exec-disk_io.Po \
@AMDEP_TRUE@ $(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-boot.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-builtins.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-char_io.Po \
@@ -485,9 +552,11 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_ext2fs.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_fat.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_ffs.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_jfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_minix.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_reiserfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_vstafs.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-fsys_xfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-gunzip.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-md5.Po \
@AMDEP_TRUE@ $(DEPDIR)/libgrub_a-stage2.Po \
@@ -507,9 +576,11 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_fat.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_ffs.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_jfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_minix.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-fsys_xfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-gunzip.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-hercules.Po \
@AMDEP_TRUE@ $(DEPDIR)/pre_stage2_exec-md5.Po \
@@ -527,7 +598,13 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
@AMDEP_TRUE@ $(DEPDIR)/vstafs_stage1_5_exec-common.Po \
@AMDEP_TRUE@ $(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po \
@AMDEP_TRUE@ $(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po \
@AMDEP_TRUE@ $(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po
@AMDEP_TRUE@ $(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po \
@AMDEP_TRUE@ $(DEPDIR)/xfs_stage1_5_exec-bios.Po \
@AMDEP_TRUE@ $(DEPDIR)/xfs_stage1_5_exec-char_io.Po \
@AMDEP_TRUE@ $(DEPDIR)/xfs_stage1_5_exec-common.Po \
@AMDEP_TRUE@ $(DEPDIR)/xfs_stage1_5_exec-disk_io.Po \
@AMDEP_TRUE@ $(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po \
@AMDEP_TRUE@ $(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po
ASCOMPILE = $(AS) $(AM_ASFLAGS) $(ASFLAGS)
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -536,16 +613,17 @@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
CFLAGS = @CFLAGS@
DIST_SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) \
$(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) \
$(ffs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) \
$(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) \
$(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) \
$(start_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES)
$(ffs_stage1_5_exec_SOURCES) $(jfs_stage1_5_exec_SOURCES) \
$(minix_stage1_5_exec_SOURCES) $(nbloader_exec_SOURCES) \
$(pre_stage2_exec_SOURCES) $(pxeloader_exec_SOURCES) \
$(reiserfs_stage1_5_exec_SOURCES) $(start_exec_SOURCES) \
$(vstafs_stage1_5_exec_SOURCES) $(xfs_stage1_5_exec_SOURCES)
DATA = $(noinst_DATA) $(pkgdata_DATA)
HEADERS = $(noinst_HEADERS)
DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in
SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) $(start_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES)
SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(jfs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) $(start_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) $(xfs_stage1_5_exec_SOURCES)
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -574,9 +652,11 @@ libgrub_a-gunzip.$(OBJEXT): gunzip.c
libgrub_a-fsys_ffs.$(OBJEXT): fsys_ffs.c
libgrub_a-fsys_ext2fs.$(OBJEXT): fsys_ext2fs.c
libgrub_a-fsys_fat.$(OBJEXT): fsys_fat.c
libgrub_a-fsys_jfs.$(OBJEXT): fsys_jfs.c
libgrub_a-fsys_minix.$(OBJEXT): fsys_minix.c
libgrub_a-fsys_reiserfs.$(OBJEXT): fsys_reiserfs.c
libgrub_a-fsys_vstafs.$(OBJEXT): fsys_vstafs.c
libgrub_a-fsys_xfs.$(OBJEXT): fsys_xfs.c
libgrub_a-stage2.$(OBJEXT): stage2.c
libgrub_a-md5.$(OBJEXT): md5.c
libgrub.a: $(libgrub_a_OBJECTS) $(libgrub_a_DEPENDENCIES)
@@ -598,9 +678,11 @@ diskless_exec-gunzip.$(OBJEXT): gunzip.c
diskless_exec-fsys_ext2fs.$(OBJEXT): fsys_ext2fs.c
diskless_exec-fsys_fat.$(OBJEXT): fsys_fat.c
diskless_exec-fsys_ffs.$(OBJEXT): fsys_ffs.c
diskless_exec-fsys_jfs.$(OBJEXT): fsys_jfs.c
diskless_exec-fsys_minix.$(OBJEXT): fsys_minix.c
diskless_exec-fsys_reiserfs.$(OBJEXT): fsys_reiserfs.c
diskless_exec-fsys_vstafs.$(OBJEXT): fsys_vstafs.c
diskless_exec-fsys_xfs.$(OBJEXT): fsys_xfs.c
diskless_exec-hercules.$(OBJEXT): hercules.c
diskless_exec-serial.$(OBJEXT): serial.c
diskless_exec-smp-imps.$(OBJEXT): smp-imps.c
@@ -642,6 +724,17 @@ ffs_stage1_5_exec-bios.$(OBJEXT): bios.c
ffs_stage1_5.exec$(EXEEXT): $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_DEPENDENCIES)
@rm -f ffs_stage1_5.exec$(EXEEXT)
$(LINK) $(ffs_stage1_5_exec_LDFLAGS) $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_LDADD) $(LIBS)
jfs_stage1_5_exec-start.$(OBJEXT): start.S
jfs_stage1_5_exec-asm.$(OBJEXT): asm.S
jfs_stage1_5_exec-common.$(OBJEXT): common.c
jfs_stage1_5_exec-char_io.$(OBJEXT): char_io.c
jfs_stage1_5_exec-disk_io.$(OBJEXT): disk_io.c
jfs_stage1_5_exec-stage1_5.$(OBJEXT): stage1_5.c
jfs_stage1_5_exec-fsys_jfs.$(OBJEXT): fsys_jfs.c
jfs_stage1_5_exec-bios.$(OBJEXT): bios.c
jfs_stage1_5.exec$(EXEEXT): $(jfs_stage1_5_exec_OBJECTS) $(jfs_stage1_5_exec_DEPENDENCIES)
@rm -f jfs_stage1_5.exec$(EXEEXT)
$(LINK) $(jfs_stage1_5_exec_LDFLAGS) $(jfs_stage1_5_exec_OBJECTS) $(jfs_stage1_5_exec_LDADD) $(LIBS)
minix_stage1_5_exec-start.$(OBJEXT): start.S
minix_stage1_5_exec-asm.$(OBJEXT): asm.S
minix_stage1_5_exec-common.$(OBJEXT): common.c
@@ -669,9 +762,11 @@ pre_stage2_exec-gunzip.$(OBJEXT): gunzip.c
pre_stage2_exec-fsys_ext2fs.$(OBJEXT): fsys_ext2fs.c
pre_stage2_exec-fsys_fat.$(OBJEXT): fsys_fat.c
pre_stage2_exec-fsys_ffs.$(OBJEXT): fsys_ffs.c
pre_stage2_exec-fsys_jfs.$(OBJEXT): fsys_jfs.c
pre_stage2_exec-fsys_minix.$(OBJEXT): fsys_minix.c
pre_stage2_exec-fsys_reiserfs.$(OBJEXT): fsys_reiserfs.c
pre_stage2_exec-fsys_vstafs.$(OBJEXT): fsys_vstafs.c
pre_stage2_exec-fsys_xfs.$(OBJEXT): fsys_xfs.c
pre_stage2_exec-hercules.$(OBJEXT): hercules.c
pre_stage2_exec-serial.$(OBJEXT): serial.c
pre_stage2_exec-smp-imps.$(OBJEXT): smp-imps.c
@@ -710,6 +805,17 @@ vstafs_stage1_5_exec-bios.$(OBJEXT): bios.c
vstafs_stage1_5.exec$(EXEEXT): $(vstafs_stage1_5_exec_OBJECTS) $(vstafs_stage1_5_exec_DEPENDENCIES)
@rm -f vstafs_stage1_5.exec$(EXEEXT)
$(LINK) $(vstafs_stage1_5_exec_LDFLAGS) $(vstafs_stage1_5_exec_OBJECTS) $(vstafs_stage1_5_exec_LDADD) $(LIBS)
xfs_stage1_5_exec-start.$(OBJEXT): start.S
xfs_stage1_5_exec-asm.$(OBJEXT): asm.S
xfs_stage1_5_exec-common.$(OBJEXT): common.c
xfs_stage1_5_exec-char_io.$(OBJEXT): char_io.c
xfs_stage1_5_exec-disk_io.$(OBJEXT): disk_io.c
xfs_stage1_5_exec-stage1_5.$(OBJEXT): stage1_5.c
xfs_stage1_5_exec-fsys_xfs.$(OBJEXT): fsys_xfs.c
xfs_stage1_5_exec-bios.$(OBJEXT): bios.c
xfs_stage1_5.exec$(EXEEXT): $(xfs_stage1_5_exec_OBJECTS) $(xfs_stage1_5_exec_DEPENDENCIES)
@rm -f xfs_stage1_5.exec$(EXEEXT)
$(LINK) $(xfs_stage1_5_exec_LDFLAGS) $(xfs_stage1_5_exec_OBJECTS) $(xfs_stage1_5_exec_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT) core *.core
@@ -727,9 +833,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_ext2fs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_fat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_ffs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_jfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_minix.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_reiserfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_vstafs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-fsys_xfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-gunzip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-hercules.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskless_exec-md5.Po@am__quote@
@@ -754,6 +862,12 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ffs_stage1_5_exec-disk_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/jfs_stage1_5_exec-bios.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/jfs_stage1_5_exec-char_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/jfs_stage1_5_exec-common.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-boot.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-builtins.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-char_io.Po@am__quote@
@@ -763,9 +877,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_ext2fs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_fat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_ffs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_jfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_minix.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_reiserfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_vstafs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-fsys_xfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-gunzip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-md5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libgrub_a-stage2.Po@am__quote@
@@ -785,9 +901,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_fat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_minix.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-gunzip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-hercules.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pre_stage2_exec-md5.Po@am__quote@
@@ -806,6 +924,12 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xfs_stage1_5_exec-bios.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xfs_stage1_5_exec-char_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xfs_stage1_5_exec-common.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po@am__quote@
distclean-depend:
-rm -rf $(DEPDIR)
@@ -858,6 +982,18 @@ ffs_stage1_5_exec-asm.o: asm.S
ffs_stage1_5_exec-asm.obj: asm.S
$(AS) $(ffs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o ffs_stage1_5_exec-asm.obj `cygpath -w asm.S`
jfs_stage1_5_exec-start.o: start.S
$(AS) $(jfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o jfs_stage1_5_exec-start.o `test -f start.S || echo '$(srcdir)/'`start.S
jfs_stage1_5_exec-start.obj: start.S
$(AS) $(jfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o jfs_stage1_5_exec-start.obj `cygpath -w start.S`
jfs_stage1_5_exec-asm.o: asm.S
$(AS) $(jfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o jfs_stage1_5_exec-asm.o `test -f asm.S || echo '$(srcdir)/'`asm.S
jfs_stage1_5_exec-asm.obj: asm.S
$(AS) $(jfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o jfs_stage1_5_exec-asm.obj `cygpath -w asm.S`
minix_stage1_5_exec-start.o: start.S
$(AS) $(minix_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o minix_stage1_5_exec-start.o `test -f start.S || echo '$(srcdir)/'`start.S
@@ -918,6 +1054,18 @@ vstafs_stage1_5_exec-asm.o: asm.S
vstafs_stage1_5_exec-asm.obj: asm.S
$(AS) $(vstafs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o vstafs_stage1_5_exec-asm.obj `cygpath -w asm.S`
xfs_stage1_5_exec-start.o: start.S
$(AS) $(xfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o xfs_stage1_5_exec-start.o `test -f start.S || echo '$(srcdir)/'`start.S
xfs_stage1_5_exec-start.obj: start.S
$(AS) $(xfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o xfs_stage1_5_exec-start.obj `cygpath -w start.S`
xfs_stage1_5_exec-asm.o: asm.S
$(AS) $(xfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o xfs_stage1_5_exec-asm.o `test -f asm.S || echo '$(srcdir)/'`asm.S
xfs_stage1_5_exec-asm.obj: asm.S
$(AS) $(xfs_stage1_5_exec_ASFLAGS) $(ASFLAGS) -c -o xfs_stage1_5_exec-asm.obj `cygpath -w asm.S`
.c.o:
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
@@ -1050,6 +1198,18 @@ libgrub_a-fsys_fat.obj: fsys_fat.c
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_fat.obj `cygpath -w fsys_fat.c`
libgrub_a-fsys_jfs.o: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='libgrub_a-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/libgrub_a-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_jfs.o `test -f fsys_jfs.c || echo '$(srcdir)/'`fsys_jfs.c
libgrub_a-fsys_jfs.obj: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='libgrub_a-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/libgrub_a-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_jfs.obj `cygpath -w fsys_jfs.c`
libgrub_a-fsys_minix.o: fsys_minix.c
@AMDEP_TRUE@ source='fsys_minix.c' object='libgrub_a-fsys_minix.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/libgrub_a-fsys_minix.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_minix.TPo' @AMDEPBACKSLASH@
@@ -1086,6 +1246,18 @@ libgrub_a-fsys_vstafs.obj: fsys_vstafs.c
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_vstafs.obj `cygpath -w fsys_vstafs.c`
libgrub_a-fsys_xfs.o: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='libgrub_a-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/libgrub_a-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_xfs.o `test -f fsys_xfs.c || echo '$(srcdir)/'`fsys_xfs.c
libgrub_a-fsys_xfs.obj: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='libgrub_a-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/libgrub_a-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_xfs.obj `cygpath -w fsys_xfs.c`
libgrub_a-stage2.o: stage2.c
@AMDEP_TRUE@ source='stage2.c' object='libgrub_a-stage2.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/libgrub_a-stage2.Po' tmpdepfile='$(DEPDIR)/libgrub_a-stage2.TPo' @AMDEPBACKSLASH@
@@ -1242,6 +1414,18 @@ diskless_exec-fsys_ffs.obj: fsys_ffs.c
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ffs.obj `cygpath -w fsys_ffs.c`
diskless_exec-fsys_jfs.o: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='diskless_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/diskless_exec-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/diskless_exec-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_jfs.o `test -f fsys_jfs.c || echo '$(srcdir)/'`fsys_jfs.c
diskless_exec-fsys_jfs.obj: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='diskless_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/diskless_exec-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/diskless_exec-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_jfs.obj `cygpath -w fsys_jfs.c`
diskless_exec-fsys_minix.o: fsys_minix.c
@AMDEP_TRUE@ source='fsys_minix.c' object='diskless_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/diskless_exec-fsys_minix.Po' tmpdepfile='$(DEPDIR)/diskless_exec-fsys_minix.TPo' @AMDEPBACKSLASH@
@@ -1278,6 +1462,18 @@ diskless_exec-fsys_vstafs.obj: fsys_vstafs.c
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_vstafs.obj `cygpath -w fsys_vstafs.c`
diskless_exec-fsys_xfs.o: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='diskless_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/diskless_exec-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/diskless_exec-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_xfs.o `test -f fsys_xfs.c || echo '$(srcdir)/'`fsys_xfs.c
diskless_exec-fsys_xfs.obj: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='diskless_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/diskless_exec-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/diskless_exec-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_xfs.obj `cygpath -w fsys_xfs.c`
diskless_exec-hercules.o: hercules.c
@AMDEP_TRUE@ source='hercules.c' object='diskless_exec-hercules.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/diskless_exec-hercules.Po' tmpdepfile='$(DEPDIR)/diskless_exec-hercules.TPo' @AMDEPBACKSLASH@
@@ -1554,6 +1750,78 @@ ffs_stage1_5_exec-bios.obj: bios.c
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-bios.obj `cygpath -w bios.c`
jfs_stage1_5_exec-common.o: common.c
@AMDEP_TRUE@ source='common.c' object='jfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-common.o `test -f common.c || echo '$(srcdir)/'`common.c
jfs_stage1_5_exec-common.obj: common.c
@AMDEP_TRUE@ source='common.c' object='jfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-common.obj `cygpath -w common.c`
jfs_stage1_5_exec-char_io.o: char_io.c
@AMDEP_TRUE@ source='char_io.c' object='jfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-char_io.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-char_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-char_io.o `test -f char_io.c || echo '$(srcdir)/'`char_io.c
jfs_stage1_5_exec-char_io.obj: char_io.c
@AMDEP_TRUE@ source='char_io.c' object='jfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-char_io.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-char_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-char_io.obj `cygpath -w char_io.c`
jfs_stage1_5_exec-disk_io.o: disk_io.c
@AMDEP_TRUE@ source='disk_io.c' object='jfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-disk_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-disk_io.o `test -f disk_io.c || echo '$(srcdir)/'`disk_io.c
jfs_stage1_5_exec-disk_io.obj: disk_io.c
@AMDEP_TRUE@ source='disk_io.c' object='jfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-disk_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-disk_io.obj `cygpath -w disk_io.c`
jfs_stage1_5_exec-stage1_5.o: stage1_5.c
@AMDEP_TRUE@ source='stage1_5.c' object='jfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-stage1_5.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-stage1_5.o `test -f stage1_5.c || echo '$(srcdir)/'`stage1_5.c
jfs_stage1_5_exec-stage1_5.obj: stage1_5.c
@AMDEP_TRUE@ source='stage1_5.c' object='jfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-stage1_5.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-stage1_5.obj `cygpath -w stage1_5.c`
jfs_stage1_5_exec-fsys_jfs.o: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='jfs_stage1_5_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-fsys_jfs.o `test -f fsys_jfs.c || echo '$(srcdir)/'`fsys_jfs.c
jfs_stage1_5_exec-fsys_jfs.obj: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='jfs_stage1_5_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-fsys_jfs.obj `cygpath -w fsys_jfs.c`
jfs_stage1_5_exec-bios.o: bios.c
@AMDEP_TRUE@ source='bios.c' object='jfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-bios.o `test -f bios.c || echo '$(srcdir)/'`bios.c
jfs_stage1_5_exec-bios.obj: bios.c
@AMDEP_TRUE@ source='bios.c' object='jfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/jfs_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/jfs_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-bios.obj `cygpath -w bios.c`
minix_stage1_5_exec-common.o: common.c
@AMDEP_TRUE@ source='common.c' object='minix_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/minix_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/minix_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@
@@ -1758,6 +2026,18 @@ pre_stage2_exec-fsys_ffs.obj: fsys_ffs.c
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ffs.obj `cygpath -w fsys_ffs.c`
pre_stage2_exec-fsys_jfs.o: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='pre_stage2_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_jfs.o `test -f fsys_jfs.c || echo '$(srcdir)/'`fsys_jfs.c
pre_stage2_exec-fsys_jfs.obj: fsys_jfs.c
@AMDEP_TRUE@ source='fsys_jfs.c' object='pre_stage2_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_jfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_jfs.obj `cygpath -w fsys_jfs.c`
pre_stage2_exec-fsys_minix.o: fsys_minix.c
@AMDEP_TRUE@ source='fsys_minix.c' object='pre_stage2_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_minix.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_minix.TPo' @AMDEPBACKSLASH@
@@ -1794,6 +2074,18 @@ pre_stage2_exec-fsys_vstafs.obj: fsys_vstafs.c
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_vstafs.obj `cygpath -w fsys_vstafs.c`
pre_stage2_exec-fsys_xfs.o: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='pre_stage2_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_xfs.o `test -f fsys_xfs.c || echo '$(srcdir)/'`fsys_xfs.c
pre_stage2_exec-fsys_xfs.obj: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='pre_stage2_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_xfs.obj `cygpath -w fsys_xfs.c`
pre_stage2_exec-hercules.o: hercules.c
@AMDEP_TRUE@ source='hercules.c' object='pre_stage2_exec-hercules.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/pre_stage2_exec-hercules.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-hercules.TPo' @AMDEPBACKSLASH@
@@ -1997,6 +2289,78 @@ vstafs_stage1_5_exec-bios.obj: bios.c
@AMDEP_TRUE@ depfile='$(DEPDIR)/vstafs_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/vstafs_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-bios.obj `cygpath -w bios.c`
xfs_stage1_5_exec-common.o: common.c
@AMDEP_TRUE@ source='common.c' object='xfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-common.o `test -f common.c || echo '$(srcdir)/'`common.c
xfs_stage1_5_exec-common.obj: common.c
@AMDEP_TRUE@ source='common.c' object='xfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-common.obj `cygpath -w common.c`
xfs_stage1_5_exec-char_io.o: char_io.c
@AMDEP_TRUE@ source='char_io.c' object='xfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-char_io.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-char_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-char_io.o `test -f char_io.c || echo '$(srcdir)/'`char_io.c
xfs_stage1_5_exec-char_io.obj: char_io.c
@AMDEP_TRUE@ source='char_io.c' object='xfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-char_io.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-char_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-char_io.obj `cygpath -w char_io.c`
xfs_stage1_5_exec-disk_io.o: disk_io.c
@AMDEP_TRUE@ source='disk_io.c' object='xfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-disk_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-disk_io.o `test -f disk_io.c || echo '$(srcdir)/'`disk_io.c
xfs_stage1_5_exec-disk_io.obj: disk_io.c
@AMDEP_TRUE@ source='disk_io.c' object='xfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-disk_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-disk_io.obj `cygpath -w disk_io.c`
xfs_stage1_5_exec-stage1_5.o: stage1_5.c
@AMDEP_TRUE@ source='stage1_5.c' object='xfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-stage1_5.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-stage1_5.o `test -f stage1_5.c || echo '$(srcdir)/'`stage1_5.c
xfs_stage1_5_exec-stage1_5.obj: stage1_5.c
@AMDEP_TRUE@ source='stage1_5.c' object='xfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-stage1_5.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-stage1_5.obj `cygpath -w stage1_5.c`
xfs_stage1_5_exec-fsys_xfs.o: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='xfs_stage1_5_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-fsys_xfs.o `test -f fsys_xfs.c || echo '$(srcdir)/'`fsys_xfs.c
xfs_stage1_5_exec-fsys_xfs.obj: fsys_xfs.c
@AMDEP_TRUE@ source='fsys_xfs.c' object='xfs_stage1_5_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-fsys_xfs.obj `cygpath -w fsys_xfs.c`
xfs_stage1_5_exec-bios.o: bios.c
@AMDEP_TRUE@ source='bios.c' object='xfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-bios.o `test -f bios.c || echo '$(srcdir)/'`bios.c
xfs_stage1_5_exec-bios.obj: bios.c
@AMDEP_TRUE@ source='bios.c' object='xfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/xfs_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/xfs_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-bios.obj `cygpath -w bios.c`
CCDEPMODE = @CCDEPMODE@
uninstall-info-am:
install-pkgdataDATA: $(pkgdata_DATA)
@@ -2208,6 +2572,8 @@ uninstall-am: uninstall-info-am uninstall-pkgdataDATA
mostlyclean mostlyclean-compile mostlyclean-generic tags \
uninstall uninstall-am uninstall-info-am uninstall-pkgdataDATA
-DFSYS_XFS=1 -DUSE_MD5_PASSWORDS=1 \
-DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 -fwritable-strings
stage2_size.h: pre_stage2
-rm -f stage2_size.h
+3 -1
View File
@@ -3643,7 +3643,9 @@ setup_func (char *arg, int flags)
{"ffs", "/ffs_stage1_5"},
{"fat", "/fat_stage1_5"},
{"minix", "/minix_stage1_5"},
{"reiserfs", "/reiserfs_stage1_5"}
{"reiserfs", "/reiserfs_stage1_5"},
{"jfs", "/jfs_stage1_5"},
{"xfs", "/xfs_stage1_5"}
};
tmp_drive = saved_drive;
+6
View File
@@ -62,6 +62,12 @@ struct fsys_entry fsys_table[NUM_FSYS + 1] =
# endif
# ifdef FSYS_VSTAFS
{"vstafs", vstafs_mount, vstafs_read, vstafs_dir, 0, 0},
# endif
# ifdef FSYS_JFS
{"jfs", jfs_mount, jfs_read, jfs_dir, 0, jfs_embed},
# endif
# ifdef FSYS_XFS
{"xfs", xfs_mount, xfs_read, xfs_dir, 0, 0},
# endif
/* XX FFS should come last as it's superblock is commonly crossing tracks
on floppies from track 1 to 2, while others only use 1. */
+21 -1
View File
@@ -77,6 +77,25 @@ int vstafs_dir (char *dirname);
#define FSYS_VSTAFS_NUM 0
#endif
#ifdef FSYS_JFS
#define FSYS_JFS_NUM 1
int jfs_mount (void);
int jfs_read (char *buf, int len);
int jfs_dir (char *dirname);
int jfs_embed (int *start_sector, int needed_sectors);
#else
#define FSYS_JFS_NUM 0
#endif
#ifdef FSYS_XFS
#define FSYS_XFS_NUM 1
int xfs_mount (void);
int xfs_read (char *buf, int len);
int xfs_dir (char *dirname);
#else
#define FSYS_XFS_NUM 0
#endif
#ifdef FSYS_TFTP
#define FSYS_TFTP_NUM 1
int tftp_mount (void);
@@ -90,7 +109,8 @@ void tftp_close (void);
#ifndef NUM_FSYS
#define NUM_FSYS \
(FSYS_FFS_NUM + FSYS_FAT_NUM + FSYS_EXT2FS_NUM + FSYS_MINIX_NUM \
+ FSYS_REISERFS_NUM + FSYS_VSTAFS_NUM + FSYS_TFTP_NUM)
+ FSYS_REISERFS_NUM + FSYS_VSTAFS_NUM + FSYS_JFS_NUM + FSYS_XFS_NUM \
+ FSYS_TFTP_NUM)
#endif
/* defines for the block filesystem info area */
+405
View File
@@ -0,0 +1,405 @@
/* fsys_jfs.c - an implementation for the IBM JFS file system */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2001 Free Software Foundation, Inc.
*
* This program 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef FSYS_JFS
#include "shared.h"
#include "filesys.h"
#include "jfs.h"
#define MAX_LINK_COUNT 8
#define DTTYPE_INLINE 0
#define DTTYPE_PAGE 1
struct jfs_info
{
int bsize;
int l2bsize;
int bdlog;
int xindex;
int xlastindex;
int sindex;
int slastindex;
int de_index;
int dttype;
xad_t *xad;
ldtentry_t *de;
};
static struct jfs_info jfs;
#define xtpage ((xtpage_t *)FSYS_BUF)
#define dtpage ((dtpage_t *)((char *)FSYS_BUF + 4096))
#define fileset ((dinode_t *)((char *)FSYS_BUF + 8192))
#define inode ((dinode_t *)((char *)FSYS_BUF + 8192 + sizeof(dinode_t)))
#define dtroot ((dtroot_t *)(&inode->di_btroot))
static ldtentry_t de_always[2] = {
{1, -1, 2, {'.', '.'}},
{1, -1, 1, {'.'}}
};
static int
isinxt (s64 key, s64 offset, s64 len)
{
return (key >= offset) ? (key < offset + len ? 1 : 0) : 0;
}
static xad_t *
first_extent (dinode_t *di)
{
xtpage_t *xtp;
jfs.xindex = 2;
xtp = (xtpage_t *)&di->di_btroot;
jfs.xad = &xtp->xad[2];
if (xtp->header.flag & BT_LEAF) {
jfs.xlastindex = xtp->header.nextindex;
} else {
do {
devread (addressXAD (jfs.xad) << jfs.bdlog, 0,
sizeof(xtpage_t), (char *)xtpage);
jfs.xad = &xtpage->xad[2];
} while (!(xtpage->header.flag & BT_LEAF));
jfs.xlastindex = xtpage->header.nextindex;
}
return jfs.xad;
}
static xad_t *
next_extent (void)
{
if (++jfs.xindex < jfs.xlastindex) {
} else if (xtpage->header.next) {
devread (xtpage->header.next << jfs.bdlog, 0,
sizeof(xtpage_t), (char *)xtpage);
jfs.xlastindex = xtpage->header.nextindex;
jfs.xindex = XTENTRYSTART;
jfs.xad = &xtpage->xad[XTENTRYSTART];
} else {
return NULL;
}
return ++jfs.xad;
}
static void
di_read (u32 inum, dinode_t *di)
{
s64 key;
u32 xd, ioffset;
s64 offset;
xad_t *xad;
pxd_t pxd;
key = (((inum >> L2INOSPERIAG) << L2INOSPERIAG) + 4096) >> jfs.l2bsize;
xd = (inum & (INOSPERIAG - 1)) >> L2INOSPEREXT;
ioffset = ((inum & (INOSPERIAG - 1)) & (INOSPEREXT - 1)) << L2DISIZE;
xad = first_extent (fileset);
do {
offset = offsetXAD (xad);
if (isinxt (key, offset, lengthXAD (xad))) {
devread ((addressXAD (xad) + key - offset) << jfs.bdlog,
3072 + xd*sizeof(pxd_t), sizeof(pxd_t), (char *)&pxd);
devread (addressPXD (&pxd) << jfs.bdlog,
ioffset, DISIZE, (char *)di);
break;
}
} while ((xad = next_extent ()));
}
static ldtentry_t *
next_dentry (void)
{
ldtentry_t *de;
s8 *stbl;
if (jfs.dttype == DTTYPE_INLINE) {
if (jfs.sindex < jfs.slastindex) {
return (ldtentry_t *)&dtroot->slot[(int)dtroot->header.stbl[jfs.sindex++]];
}
} else {
de = (ldtentry_t *)dtpage->slot;
stbl = (s8 *)&de[(int)dtpage->header.stblindex];
if (jfs.sindex < jfs.slastindex) {
return &de[(int)stbl[jfs.sindex++]];
} else if (dtpage->header.next) {
devread (dtpage->header.next << jfs.bdlog, 0,
sizeof(dtpage_t), (char *)dtpage);
jfs.slastindex = dtpage->header.nextindex;
jfs.sindex = 1;
return &de[(int)((s8 *)&de[(int)dtpage->header.stblindex])[0]];
}
}
return (jfs.de_index < 2) ? &de_always[jfs.de_index++] : NULL;
}
static ldtentry_t *
first_dentry (void)
{
dtroot_t *dtr;
pxd_t *xd;
idtentry_t *de;
dtr = (dtroot_t *)&inode->di_btroot;
jfs.sindex = 0;
jfs.de_index = 0;
de_always[0].inumber = inode->di_parent;
de_always[1].inumber = inode->di_number;
if (dtr->header.flag & BT_LEAF) {
jfs.dttype = DTTYPE_INLINE;
jfs.slastindex = dtr->header.nextindex;
} else {
de = (idtentry_t *)dtpage->slot;
jfs.dttype = DTTYPE_PAGE;
xd = &((idtentry_t *)dtr->slot)[(int)dtr->header.stbl[0]].xd;
for (;;) {
devread (addressPXD (xd) << jfs.bdlog, 0,
sizeof(dtpage_t), (char *)dtpage);
if (dtpage->header.flag & BT_LEAF)
break;
xd = &de[(int)((s8 *)&de[(int)dtpage->header.stblindex])[0]].xd;
}
jfs.slastindex = dtpage->header.nextindex;
}
return next_dentry ();
}
static dtslot_t *
next_dslot (int next)
{
return (jfs.dttype == DTTYPE_INLINE)
? (dtslot_t *)&dtroot->slot[next]
: &((dtslot_t *)dtpage->slot)[next];
}
static void
uni2ansi (UniChar *uni, char *ansi, int len)
{
for (; len; len--, uni++)
*ansi++ = (*uni & 0xff80) ? '?' : *(char *)uni;
}
int
jfs_mount (void)
{
struct jfs_superblock super;
if (part_length < MINJFS >> SECTOR_BITS
|| !devread (SUPER1_OFF >> SECTOR_BITS, 0,
sizeof(struct jfs_superblock), (char *)&super)
|| (super.s_magic != JFS_MAGIC)
|| !devread ((AITBL_OFF >> SECTOR_BITS) + FILESYSTEM_I,
0, DISIZE, (char*)fileset)) {
return 0;
}
jfs.bsize = super.s_bsize;
jfs.l2bsize = super.s_l2bsize;
jfs.bdlog = jfs.l2bsize - SECTOR_BITS;
return 1;
}
int
jfs_read (char *buf, int len)
{
xad_t *xad;
s64 endofprev, endofcur;
s64 offset, xadlen;
int toread, startpos, endpos;
startpos = filepos;
endpos = filepos + len;
endofprev = (1ULL << 62) - 1;
xad = first_extent (inode);
do {
offset = offsetXAD (xad);
xadlen = lengthXAD (xad);
if (isinxt (filepos >> jfs.l2bsize, offset, xadlen)) {
endofcur = (offset + xadlen) << jfs.l2bsize;
toread = (endofcur >= endpos)
? len : (endofcur - filepos);
#ifndef STAGE1_5
disk_read_func = disk_read_hook;
#endif /* STAGE1_5 */
devread (addressXAD (xad) << jfs.bdlog,
filepos - (offset << jfs.l2bsize), toread, buf);
#ifndef STAGE1_5
disk_read_func = NULL;
#endif /* STAGE1_5 */
buf += toread;
len -= toread;
filepos += toread;
} else if (offset > endofprev) {
toread = ((offset << jfs.l2bsize) >= endpos)
? len : ((offset - endofprev) << jfs.l2bsize);
len -= toread;
filepos += toread;
for (; toread; toread--) {
*buf++ = 0;
}
continue;
}
endofprev = offset + xadlen;
xad = next_extent ();
} while (len > 0 && xad);
return filepos - startpos;
}
int
jfs_dir (char *dirname)
{
char *ptr, *rest, ch;
ldtentry_t *de;
dtslot_t *ds;
u32 inum, parent_inum;
s64 di_size;
u32 di_mode;
int namlen, cmp, n, link_count;
char namebuf[JFS_NAME_MAX + 1], linkbuf[JFS_PATH_MAX];
parent_inum = inum = ROOT_I;
link_count = 0;
for (;;) {
di_read (inum, inode);
di_size = inode->di_size;
di_mode = inode->di_mode;
if ((di_mode & IFMT) == IFLNK) {
if (++link_count > MAX_LINK_COUNT) {
errnum = ERR_SYMLINK_LOOP;
return 0;
}
if (di_size < (di_mode & INLINEEA ? 256 : 128)) {
grub_memmove (linkbuf, inode->di_fastsymlink, di_size);
n = di_size;
} else if (di_size < JFS_PATH_MAX - 1) {
filepos = 0;
filemax = di_size;
n = jfs_read (linkbuf, filemax);
} else {
errnum = ERR_FILELENGTH;
return 0;
}
inum = (linkbuf[0] == '/') ? ROOT_I : parent_inum;
while (n < (JFS_PATH_MAX - 1) && (linkbuf[n++] = *dirname++));
linkbuf[n] = 0;
dirname = linkbuf;
continue;
}
if (!*dirname || isspace (*dirname)) {
if ((di_mode & IFMT) != IFREG) {
errnum = ERR_BAD_FILETYPE;
return 0;
}
filepos = 0;
filemax = di_size;
return 1;
}
if ((di_mode & IFMT) != IFDIR) {
errnum = ERR_BAD_FILETYPE;
return 0;
}
for (; *dirname == '/'; dirname++);
for (rest = dirname; (ch = *rest) && !isspace (ch) && ch != '/'; rest++);
*rest = 0;
de = first_dentry ();
for (;;) {
namlen = de->namlen;
if (de->next == -1) {
uni2ansi (de->name, namebuf, namlen);
namebuf[namlen] = 0;
} else {
uni2ansi (de->name, namebuf, DTLHDRDATALEN);
ptr = namebuf;
ptr += DTLHDRDATALEN;
namlen -= DTLHDRDATALEN;
ds = next_dslot (de->next);
while (ds->next != -1) {
uni2ansi (ds->name, ptr, DTSLOTDATALEN);
ptr += DTSLOTDATALEN;
namlen -= DTSLOTDATALEN;
ds = next_dslot (ds->next);
}
uni2ansi (ds->name, ptr, namlen);
ptr += namlen;
*ptr = 0;
}
cmp = (!*dirname) ? -1 : substring (dirname, namebuf);
#ifndef STAGE1_5
if (print_possibilities && ch != '/'
&& cmp <= 0) {
if (print_possibilities > 0)
print_possibilities = -print_possibilities;
print_a_completion (namebuf);
} else
#endif
if (cmp == 0) {
parent_inum = inum;
inum = de->inumber;
*(dirname = rest) = ch;
break;
}
de = next_dentry ();
if (de == NULL) {
if (print_possibilities < 0)
return 1;
errnum = ERR_FILE_NOT_FOUND;
*rest = ch;
return 0;
}
}
}
}
int
jfs_embed (int *start_sector, int needed_sectors)
{
struct jfs_superblock super;
if (needed_sectors > 63
|| !devread (SUPER1_OFF >> SECTOR_BITS, 0,
sizeof (struct jfs_superblock),
(char *)&super)
|| (super.s_magic != JFS_MAGIC)) {
return 0;
}
*start_sector = 1;
return 1;
}
#endif /* FSYS_JFS */
+617
View File
@@ -0,0 +1,617 @@
/* fsys_xfs.c - an implementation for the SGI XFS file system */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2001 Free Software Foundation, Inc.
*
* This program 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef FSYS_XFS
#include "shared.h"
#include "filesys.h"
#include "xfs.h"
#define MAX_LINK_COUNT 8
typedef struct xad {
xfs_fileoff_t offset;
xfs_fsblock_t start;
xfs_filblks_t len;
} xad_t;
struct xfs_info {
int bsize;
int dirbsize;
int isize;
unsigned int agblocks;
int bdlog;
int blklog;
int inopblog;
int agblklog;
int agnolog;
unsigned int nextents;
xfs_daddr_t next;
xfs_daddr_t daddr;
xfs_dablk_t forw;
xfs_dablk_t dablk;
xfs_bmbt_rec_32_t *xt;
xfs_bmbt_ptr_t ptr0;
int btnode_ptr0_off;
int i8param;
int dirpos;
int dirmax;
int blkoff;
int fpos;
xfs_ino_t rootino;
};
static struct xfs_info xfs;
#define dirbuf ((char *)FSYS_BUF)
#define filebuf ((char *)FSYS_BUF + 4096)
#define inode ((xfs_dinode_t *)((char *)FSYS_BUF + 8192))
#define icore (inode->di_core)
#define mask32lo(n) (((__uint32_t)1 << (n)) - 1)
#define XFS_INO_MASK(k) ((__uint32_t)((1ULL << (k)) - 1))
#define XFS_INO_OFFSET_BITS xfs.inopblog
#define XFS_INO_AGBNO_BITS xfs.agblklog
#define XFS_INO_AGINO_BITS (xfs.agblklog + xfs.inopblog)
#define XFS_INO_AGNO_BITS xfs.agnolog
static inline xfs_agblock_t
agino2agbno (xfs_agino_t agino)
{
return agino >> XFS_INO_OFFSET_BITS;
}
static inline xfs_agnumber_t
ino2agno (xfs_ino_t ino)
{
return ino >> XFS_INO_AGINO_BITS;
}
static inline xfs_agino_t
ino2agino (xfs_ino_t ino)
{
return ino & XFS_INO_MASK(XFS_INO_AGINO_BITS);
}
static inline int
ino2offset (xfs_ino_t ino)
{
return ino & XFS_INO_MASK(XFS_INO_OFFSET_BITS);
}
static inline __const__ __uint16_t
le16 (__uint16_t x)
{
__asm__("xchgb %b0,%h0" \
: "=q" (x) \
: "0" (x)); \
return x;
}
static inline __const__ __uint32_t
le32 (__uint32_t x)
{
__asm__("bswap %0" : "=r" (x) : "0" (x));
return x;
}
static inline __const__ __uint64_t
le64 (__uint64_t x)
{
__uint32_t h = x >> 32;
__uint32_t l = x & ((1ULL<<32)-1);
return (((__uint64_t)le32(l)) << 32) | ((__uint64_t)(le32(h)));
}
static xfs_fsblock_t
xt_start (xfs_bmbt_rec_32_t *r)
{
return (((xfs_fsblock_t)(le32 (r->l1) & mask32lo(9))) << 43) |
(((xfs_fsblock_t)le32 (r->l2)) << 11) |
(((xfs_fsblock_t)le32 (r->l3)) >> 21);
}
static xfs_fileoff_t
xt_offset (xfs_bmbt_rec_32_t *r)
{
return (((xfs_fileoff_t)le32 (r->l0) &
mask32lo(31)) << 23) |
(((xfs_fileoff_t)le32 (r->l1)) >> 9);
}
static xfs_filblks_t
xt_len (xfs_bmbt_rec_32_t *r)
{
return le32(r->l3) & mask32lo(21);
}
static inline int
xfs_highbit32(__uint32_t v)
{
int i;
if (--v) {
for (i = 0; i < 31; i++, v >>= 1) {
if (v == 0)
return i;
}
}
return 0;
}
static int
isinxt (xfs_fileoff_t key, xfs_fileoff_t offset, xfs_filblks_t len)
{
return (key >= offset) ? (key < offset + len ? 1 : 0) : 0;
}
static xfs_daddr_t
agb2daddr (xfs_agnumber_t agno, xfs_agblock_t agbno)
{
return ((xfs_fsblock_t)agno*xfs.agblocks + agbno) << xfs.bdlog;
}
static xfs_daddr_t
fsb2daddr (xfs_fsblock_t fsbno)
{
return agb2daddr ((xfs_agnumber_t)(fsbno >> xfs.agblklog),
(xfs_agblock_t)(fsbno & mask32lo(xfs.agblklog)));
}
#undef offsetof
#define offsetof(t,m) ((int)&(((t *)0)->m))
static inline int
btroot_maxrecs (void)
{
int tmp = icore.di_forkoff ? (icore.di_forkoff << 3) : xfs.isize;
return (tmp - sizeof(xfs_bmdr_block_t) - offsetof(xfs_dinode_t, di_u)) /
(sizeof (xfs_bmbt_key_t) + sizeof (xfs_bmbt_ptr_t));
}
static int
di_read (xfs_ino_t ino)
{
xfs_agino_t agino;
xfs_agnumber_t agno;
xfs_agblock_t agbno;
xfs_daddr_t daddr;
int offset;
agno = ino2agno (ino);
agino = ino2agino (ino);
agbno = agino2agbno (agino);
offset = ino2offset (ino);
daddr = agb2daddr (agno, agbno);
devread (daddr, offset*xfs.isize, xfs.isize, (char *)inode);
xfs.ptr0 = *(xfs_bmbt_ptr_t *)
(inode->di_u.di_c + sizeof(xfs_bmdr_block_t)
+ btroot_maxrecs ()*sizeof(xfs_bmbt_key_t));
return 1;
}
static void
init_extents (void)
{
xfs_bmbt_ptr_t ptr0;
xfs_btree_lblock_t h;
switch (icore.di_format) {
case XFS_DINODE_FMT_EXTENTS:
xfs.xt = inode->di_u.di_bmx;
xfs.nextents = le32 (icore.di_nextents);
break;
case XFS_DINODE_FMT_BTREE:
ptr0 = xfs.ptr0;
for (;;) {
xfs.daddr = fsb2daddr (le64(ptr0));
devread (xfs.daddr, 0,
sizeof(xfs_btree_lblock_t), (char *)&h);
if (!h.bb_level) {
xfs.nextents = le16(h.bb_numrecs);
xfs.next = fsb2daddr (le64(h.bb_rightsib));
xfs.fpos = sizeof(xfs_btree_block_t);
return;
}
devread (xfs.daddr, xfs.btnode_ptr0_off,
sizeof(xfs_bmbt_ptr_t), (char *)&ptr0);
}
}
}
static xad_t *
next_extent (void)
{
static xad_t xad;
switch (icore.di_format) {
case XFS_DINODE_FMT_EXTENTS:
if (xfs.nextents == 0)
return NULL;
break;
case XFS_DINODE_FMT_BTREE:
if (xfs.nextents == 0) {
xfs_btree_lblock_t h;
if (xfs.next == 0)
return NULL;
xfs.daddr = xfs.next;
devread (xfs.daddr, 0, sizeof(xfs_btree_lblock_t), (char *)&h);
xfs.nextents = le16(h.bb_numrecs);
xfs.next = fsb2daddr (le64(h.bb_rightsib));
xfs.fpos = sizeof(xfs_btree_block_t);
}
/* Yeah, I know that's slow, but I really don't care */
devread (xfs.daddr, xfs.fpos, sizeof(xfs_bmbt_rec_t), filebuf);
xfs.xt = (xfs_bmbt_rec_32_t *)filebuf;
xfs.fpos += sizeof(xfs_bmbt_rec_32_t);
}
xad.offset = xt_offset (xfs.xt);
xad.start = xt_start (xfs.xt);
xad.len = xt_len (xfs.xt);
++xfs.xt;
--xfs.nextents;
return &xad;
}
/*
* Name lies - the function reads only first 100 bytes
*/
static void
xfs_dabread (void)
{
xad_t *xad;
xfs_fileoff_t offset;;
init_extents ();
while ((xad = next_extent ())) {
offset = xad->offset;
if (isinxt (xfs.dablk, offset, xad->len)) {
devread (fsb2daddr (xad->start + xfs.dablk - offset),
0, 100, dirbuf);
break;
}
}
}
static inline xfs_ino_t
sf_ino (char *sfe, int namelen)
{
void *p = sfe + namelen + 3;
return (xfs.i8param == 0)
? le64(*(xfs_ino_t *)p) : le32(*(__uint32_t *)p);
}
static inline xfs_ino_t
sf_parent_ino (void)
{
return (xfs.i8param == 0)
? le64(*(xfs_ino_t *)(&inode->di_u.di_dir2sf.hdr.parent))
: le32(*(__uint32_t *)(&inode->di_u.di_dir2sf.hdr.parent));
}
static inline int
roundup8 (int n)
{
return ((n+7)&~7);
}
static char *
next_dentry (xfs_ino_t *ino)
{
int namelen = 1;
int toread;
static char *usual[2] = {".", ".."};
static xfs_dir2_sf_entry_t *sfe;
char *name = usual[0];
if (xfs.dirpos >= xfs.dirmax) {
if (xfs.forw == 0)
return NULL;
xfs.dablk = xfs.forw;
xfs_dabread ();
#define h ((xfs_dir2_leaf_hdr_t *)dirbuf)
xfs.dirmax = le16 (h->count) - le16 (h->stale);
xfs.forw = le32 (h->info.forw);
#undef h
xfs.dirpos = 0;
}
switch (icore.di_format) {
case XFS_DINODE_FMT_LOCAL:
switch (xfs.dirpos) {
case -2:
*ino = 0;
break;
case -1:
*ino = sf_parent_ino ();
++name;
++namelen;
sfe = (xfs_dir2_sf_entry_t *)
(inode->di_u.di_c
+ sizeof(xfs_dir2_sf_hdr_t)
- xfs.i8param);
break;
default:
namelen = sfe->namelen;
*ino = sf_ino ((char *)sfe, namelen);
name = sfe->name;
sfe = (xfs_dir2_sf_entry_t *)
((char *)sfe + namelen + 11 - xfs.i8param);
}
break;
case XFS_DINODE_FMT_BTREE:
case XFS_DINODE_FMT_EXTENTS:
#define dau ((xfs_dir2_data_union_t *)dirbuf)
for (;;) {
if (xfs.blkoff >= xfs.dirbsize) {
xfs.blkoff = sizeof(xfs_dir2_data_hdr_t);
filepos &= ~(xfs.dirbsize - 1);
filepos |= xfs.blkoff;
}
xfs_read (dirbuf, 4);
xfs.blkoff += 4;
if (dau->unused.freetag == XFS_DIR2_DATA_FREE_TAG) {
toread = roundup8 (le16(dau->unused.length)) - 4;
xfs.blkoff += toread;
filepos += toread;
continue;
}
break;
}
xfs_read ((char *)dirbuf + 4, 5);
*ino = le64 (dau->entry.inumber);
namelen = dau->entry.namelen;
#undef dau
toread = roundup8 (namelen + 11) - 9;
xfs_read (dirbuf, toread);
name = (char *)dirbuf;
xfs.blkoff += toread + 5;
}
++xfs.dirpos;
name[namelen] = 0;
return name;
}
static char *
first_dentry (xfs_ino_t *ino)
{
xfs.forw = 0;
switch (icore.di_format) {
case XFS_DINODE_FMT_LOCAL:
xfs.dirmax = inode->di_u.di_dir2sf.hdr.count;
xfs.i8param = inode->di_u.di_dir2sf.hdr.i8count ? 0 : 4;
xfs.dirpos = -2;
break;
case XFS_DINODE_FMT_EXTENTS:
case XFS_DINODE_FMT_BTREE:
filepos = 0;
xfs_read (dirbuf, sizeof(xfs_dir2_data_hdr_t));
if (((xfs_dir2_data_hdr_t *)dirbuf)->magic == le32(XFS_DIR2_BLOCK_MAGIC)) {
#define tail ((xfs_dir2_block_tail_t *)dirbuf)
filepos = xfs.dirbsize - sizeof(*tail);
xfs_read (dirbuf, sizeof(*tail));
xfs.dirmax = le32 (tail->count) - le32 (tail->stale);
#undef tail
} else {
xfs.dablk = (1ULL << 35) >> xfs.blklog;
#define h ((xfs_dir2_leaf_hdr_t *)dirbuf)
#define n ((xfs_da_intnode_t *)dirbuf)
for (;;) {
xfs_dabread ();
if ((n->hdr.info.magic == le16(XFS_DIR2_LEAFN_MAGIC))
|| (n->hdr.info.magic == le16(XFS_DIR2_LEAF1_MAGIC))) {
xfs.dirmax = le16 (h->count) - le16 (h->stale);
xfs.forw = le32 (h->info.forw);
break;
}
xfs.dablk = le32 (n->btree[0].before);
}
#undef n
#undef h
}
xfs.blkoff = sizeof(xfs_dir2_data_hdr_t);
filepos = xfs.blkoff;
xfs.dirpos = 0;
}
return next_dentry (ino);
}
int
xfs_mount (void)
{
xfs_sb_t super;
if (!devread (0, 0, sizeof(super), (char *)&super)
|| (le32(super.sb_magicnum) != XFS_SB_MAGIC)
|| ((le16(super.sb_versionnum)
& XFS_SB_VERSION_NUMBITS) != XFS_SB_VERSION_4) ) {
return 0;
}
xfs.bsize = le32 (super.sb_blocksize);
xfs.blklog = super.sb_blocklog;
xfs.bdlog = xfs.blklog - SECTOR_BITS;
xfs.rootino = le64 (super.sb_rootino);
xfs.isize = le16 (super.sb_inodesize);
xfs.agblocks = le32 (super.sb_agblocks);
xfs.dirbsize = xfs.bsize << super.sb_dirblklog;
xfs.inopblog = super.sb_inopblog;
xfs.agblklog = super.sb_agblklog;
xfs.agnolog = xfs_highbit32 (le32(super.sb_agcount));
xfs.btnode_ptr0_off =
((xfs.bsize - sizeof(xfs_btree_block_t)) /
(sizeof (xfs_bmbt_key_t) + sizeof (xfs_bmbt_ptr_t)))
* sizeof(xfs_bmbt_key_t) + sizeof(xfs_btree_block_t);
return 1;
}
int
xfs_read (char *buf, int len)
{
xad_t *xad;
xfs_fileoff_t endofprev, endofcur, offset;
xfs_filblks_t xadlen;
int toread, startpos, endpos;
if (icore.di_format == XFS_DINODE_FMT_LOCAL) {
grub_memmove (buf, inode->di_u.di_c + filepos, len);
filepos += len;
return len;
}
startpos = filepos;
endpos = filepos + len;
endofprev = (xfs_fileoff_t)-1;
init_extents ();
while (len > 0 && (xad = next_extent ())) {
offset = xad->offset;
xadlen = xad->len;
if (isinxt (filepos >> xfs.blklog, offset, xadlen)) {
endofcur = (offset + xadlen) << xfs.blklog;
toread = (endofcur >= endpos)
? len : (endofcur - filepos);
#ifndef STAGE1_5
disk_read_func = disk_read_hook;
#endif /* STAGE1_5 */
devread (fsb2daddr (xad->start),
filepos - (offset << xfs.blklog), toread, buf);
#ifndef STAGE1_5
disk_read_func = NULL;
#endif /* STAGE1_5 */
buf += toread;
len -= toread;
filepos += toread;
} else if (offset > endofprev) {
toread = ((offset << xfs.blklog) >= endpos)
? len : ((offset - endofprev) << xfs.blklog);
len -= toread;
filepos += toread;
for (; toread; toread--) {
*buf++ = 0;
}
continue;
}
endofprev = offset + xadlen;
}
return filepos - startpos;
}
int
xfs_dir (char *dirname)
{
xfs_ino_t ino, parent_ino, new_ino;
xfs_fsize_t di_size;
int di_mode;
int cmp, n, link_count;
char linkbuf[xfs.bsize];
char *rest, *name, ch;
parent_ino = ino = xfs.rootino;
link_count = 0;
for (;;) {
di_read (ino);
di_size = le64 (icore.di_size);
di_mode = le16 (icore.di_mode);
if ((di_mode & IFMT) == IFLNK) {
if (++link_count > MAX_LINK_COUNT) {
errnum = ERR_SYMLINK_LOOP;
return 0;
}
if (di_size < xfs.bsize - 1) {
filepos = 0;
filemax = di_size;
n = xfs_read (linkbuf, filemax);
} else {
errnum = ERR_FILELENGTH;
return 0;
}
ino = (linkbuf[0] == '/') ? xfs.rootino : parent_ino;
while (n < (xfs.bsize - 1) && (linkbuf[n++] = *dirname++));
linkbuf[n] = 0;
dirname = linkbuf;
continue;
}
if (!*dirname || isspace (*dirname)) {
if ((di_mode & IFMT) != IFREG) {
errnum = ERR_BAD_FILETYPE;
return 0;
}
filepos = 0;
filemax = di_size;
return 1;
}
if ((di_mode & IFMT) != IFDIR) {
errnum = ERR_BAD_FILETYPE;
return 0;
}
for (; *dirname == '/'; dirname++);
for (rest = dirname; (ch = *rest) && !isspace (ch) && ch != '/'; rest++);
*rest = 0;
name = first_dentry (&new_ino);
for (;;) {
cmp = (!*dirname) ? -1 : substring (dirname, name);
#ifndef STAGE1_5
if (print_possibilities && ch != '/' && cmp <= 0) {
if (print_possibilities > 0)
print_possibilities = -print_possibilities;
print_a_completion (name);
} else
#endif
if (cmp == 0) {
parent_ino = ino;
if (new_ino)
ino = new_ino;
*(dirname = rest) = ch;
break;
}
name = next_dentry (&new_ino);
if (name == NULL) {
if (print_possibilities < 0)
return 1;
errnum = ERR_FILE_NOT_FOUND;
*rest = ch;
return 0;
}
}
}
}
#endif /* FSYS_XFS */
+601
View File
@@ -0,0 +1,601 @@
/* jfs.h - an extractions from linux/include/linux/jfs/jfs* into one file */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2000 International Business Machines Corp.
* Copyright (C) 2001 Free Software Foundation, Inc.
*
* This program 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
* the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _JFS_H_
#define _JFS_H_
/* those are from jfs_filsys.h */
/*
* file system option (superblock flag)
*/
/* platform option (conditional compilation) */
#define JFS_AIX 0x80000000 /* AIX support */
/* POSIX name/directory support */
#define JFS_OS2 0x40000000 /* OS/2 support */
/* case-insensitive name/directory support */
#define JFS_LINUX 0x10000000 /* Linux support */
/* case-sensitive name/directory support */
/* directory option */
#define JFS_UNICODE 0x00000001 /* unicode name */
/* bba */
#define JFS_SWAP_BYTES 0x00100000 /* running on big endian computer */
/*
* buffer cache configuration
*/
/* page size */
#ifdef PSIZE
#undef PSIZE
#endif
#define PSIZE 4096 /* page size (in byte) */
/*
* fs fundamental size
*
* PSIZE >= file system block size >= PBSIZE >= DISIZE
*/
#define PBSIZE 512 /* physical block size (in byte) */
#define DISIZE 512 /* on-disk inode size (in byte) */
#define L2DISIZE 9
#define INOSPERIAG 4096 /* number of disk inodes per iag */
#define L2INOSPERIAG 12
#define INOSPEREXT 32 /* number of disk inode per extent */
#define L2INOSPEREXT 5
/* Minimum number of bytes supported for a JFS partition */
#define MINJFS (0x1000000)
/*
* fixed byte offset address
*/
#define SUPER1_OFF 0x8000 /* primary superblock */
#define AITBL_OFF (SUPER1_OFF + PSIZE + (PSIZE << 1))
/*
* fixed reserved inode number
*/
/* aggregate inode */
#define AGGREGATE_I 1 /* aggregate inode map inode */
#define FILESYSTEM_I 16 /* 1st/only fileset inode in ait:
* fileset inode map inode
*/
/* per fileset inode */
#define ROOT_I 2 /* fileset root inode */
/*
* directory configuration
*/
#define JFS_NAME_MAX 255
#define JFS_PATH_MAX PSIZE
typedef unsigned char u8;
typedef char s8;
typedef unsigned short u16;
typedef short s16;
typedef unsigned int u32;
typedef int s32;
typedef unsigned long long u64;
typedef long long s64;
typedef u16 UniChar;
/* these from jfs_btree.h */
/* btpaget_t flag */
#define BT_TYPE 0x07 /* B+-tree index */
#define BT_ROOT 0x01 /* root page */
#define BT_LEAF 0x02 /* leaf page */
#define BT_INTERNAL 0x04 /* internal page */
#define BT_RIGHTMOST 0x10 /* rightmost page */
#define BT_LEFTMOST 0x20 /* leftmost page */
/* those are from jfs_types.h */
struct timestruc_t {
u32 tv_sec;
u32 tv_nsec;
};
/*
* physical xd (pxd)
*/
typedef struct {
unsigned len:24;
unsigned addr1:8;
u32 addr2;
} pxd_t;
/* xd_t field extraction */
#define lengthPXD(pxd) ((pxd)->len)
#define addressPXD(pxd) (((s64)((pxd)->addr1)) << 32 | ((pxd)->addr2))
/*
* data extent descriptor (dxd)
*/
typedef struct {
unsigned flag:8; /* 1: flags */
unsigned rsrvd:24; /* 3: */
u32 size; /* 4: size in byte */
unsigned len:24; /* 3: length in unit of fsblksize */
unsigned addr1:8; /* 1: address in unit of fsblksize */
u32 addr2; /* 4: address in unit of fsblksize */
} dxd_t; /* - 16 - */
/*
* DASD limit information - stored in directory inode
*/
typedef struct dasd {
u8 thresh; /* Alert Threshold (in percent) */
u8 delta; /* Alert Threshold delta (in percent) */
u8 rsrvd1;
u8 limit_hi; /* DASD limit (in logical blocks) */
u32 limit_lo; /* DASD limit (in logical blocks) */
u8 rsrvd2[3];
u8 used_hi; /* DASD usage (in logical blocks) */
u32 used_lo; /* DASD usage (in logical blocks) */
} dasd_t;
/* from jfs_superblock.h */
#define JFS_MAGIC 0x3153464A /* "JFS1" */
struct jfs_superblock
{
u32 s_magic; /* 4: magic number */
u32 s_version; /* 4: version number */
s64 s_size; /* 8: aggregate size in hardware/LVM blocks;
* VFS: number of blocks
*/
s32 s_bsize; /* 4: aggregate block size in bytes;
* VFS: fragment size
*/
s16 s_l2bsize; /* 2: log2 of s_bsize */
s16 s_l2bfactor; /* 2: log2(s_bsize/hardware block size) */
s32 s_pbsize; /* 4: hardware/LVM block size in bytes */
s16 s_l2pbsize; /* 2: log2 of s_pbsize */
s16 pad; /* 2: padding necessary for alignment */
u32 s_agsize; /* 4: allocation group size in aggr. blocks */
u32 s_flag; /* 4: aggregate attributes:
* see jfs_filsys.h
*/
u32 s_state; /* 4: mount/unmount/recovery state:
* see jfs_filsys.h
*/
s32 s_compress; /* 4: > 0 if data compression */
pxd_t s_ait2; /* 8: first extent of secondary
* aggregate inode table
*/
pxd_t s_aim2; /* 8: first extent of secondary
* aggregate inode map
*/
u32 s_logdev; /* 4: device address of log */
s32 s_logserial; /* 4: log serial number at aggregate mount */
pxd_t s_logpxd; /* 8: inline log extent */
pxd_t s_fsckpxd; /* 8: inline fsck work space extent */
struct timestruc_t s_time; /* 8: time last updated */
s32 s_fsckloglen; /* 4: Number of filesystem blocks reserved for
* the fsck service log.
* N.B. These blocks are divided among the
* versions kept. This is not a per
* version size.
* N.B. These blocks are included in the
* length field of s_fsckpxd.
*/
s8 s_fscklog; /* 1: which fsck service log is most recent
* 0 => no service log data yet
* 1 => the first one
* 2 => the 2nd one
*/
char s_fpack[11]; /* 11: file system volume name
* N.B. This must be 11 bytes to
* conform with the OS/2 BootSector
* requirements
*/
/* extendfs() parameter under s_state & FM_EXTENDFS */
s64 s_xsize; /* 8: extendfs s_size */
pxd_t s_xfsckpxd; /* 8: extendfs fsckpxd */
pxd_t s_xlogpxd; /* 8: extendfs logpxd */
/* - 128 byte boundary - */
/*
* DFS VFS support (preliminary)
*/
char s_attach; /* 1: VFS: flag: set when aggregate is attached
*/
u8 rsrvd4[7]; /* 7: reserved - set to 0 */
u64 totalUsable; /* 8: VFS: total of 1K blocks which are
* available to "normal" (non-root) users.
*/
u64 minFree; /* 8: VFS: # of 1K blocks held in reserve for
* exclusive use of root. This value can be 0,
* and if it is then totalUsable will be equal
* to # of blocks in aggregate. I believe this
* means that minFree + totalUsable = # blocks.
* In that case, we don't need to store both
* totalUsable and minFree since we can compute
* one from the other. I would guess minFree
* would be the one we should store, and
* totalUsable would be the one we should
* compute. (Just a guess...)
*/
u64 realFree; /* 8: VFS: # of free 1K blocks can be used by
* "normal" users. It may be this is something
* we should compute when asked for instead of
* storing in the superblock. I don't know how
* often this information is needed.
*/
/*
* graffiti area
*/
};
/* from jfs_dtree.h */
/*
* entry segment/slot
*
* an entry consists of type dependent head/only segment/slot and
* additional segments/slots linked vi next field;
* N.B. last/only segment of entry is terminated by next = -1;
*/
/*
* directory page slot
*/
typedef struct {
s8 next; /* 1: */
s8 cnt; /* 1: */
UniChar name[15]; /* 30: */
} dtslot_t; /* (32) */
#define DTSLOTDATALEN 15
/*
* internal node entry head/only segment
*/
typedef struct {
pxd_t xd; /* 8: child extent descriptor */
s8 next; /* 1: */
u8 namlen; /* 1: */
UniChar name[11]; /* 22: 2-byte aligned */
} idtentry_t; /* (32) */
/*
* leaf node entry head/only segment
*
* For legacy filesystems, name contains 13 unichars -- no index field
*/
typedef struct {
u32 inumber; /* 4: 4-byte aligned */
s8 next; /* 1: */
u8 namlen; /* 1: */
UniChar name[11]; /* 22: 2-byte aligned */
u32 index; /* 4: index into dir_table */
} ldtentry_t; /* (32) */
#define DTLHDRDATALEN 11
/*
* dir_table used for directory traversal during readdir
*/
/*
* Maximum entry in inline directory table
*/
typedef struct dir_table_slot {
u8 rsrvd; /* 1: */
u8 flag; /* 1: 0 if free */
u8 slot; /* 1: slot within leaf page of entry */
u8 addr1; /* 1: upper 8 bits of leaf page address */
u32 addr2; /* 4: lower 32 bits of leaf page address -OR-
index of next entry when this entry was deleted */
} dir_table_slot_t; /* (8) */
/*
* directory root page (in-line in on-disk inode):
*
* cf. dtpage_t below.
*/
typedef union {
struct {
dasd_t DASD; /* 16: DASD limit/usage info F226941 */
u8 flag; /* 1: */
s8 nextindex; /* 1: next free entry in stbl */
s8 freecnt; /* 1: free count */
s8 freelist; /* 1: freelist header */
u32 idotdot; /* 4: parent inode number */
s8 stbl[8]; /* 8: sorted entry index table */
} header; /* (32) */
dtslot_t slot[9];
} dtroot_t;
/*
* directory regular page:
*
* entry slot array of 32 byte slot
*
* sorted entry slot index table (stbl):
* contiguous slots at slot specified by stblindex,
* 1-byte per entry
* 512 byte block: 16 entry tbl (1 slot)
* 1024 byte block: 32 entry tbl (1 slot)
* 2048 byte block: 64 entry tbl (2 slot)
* 4096 byte block: 128 entry tbl (4 slot)
*
* data area:
* 512 byte block: 16 - 2 = 14 slot
* 1024 byte block: 32 - 2 = 30 slot
* 2048 byte block: 64 - 3 = 61 slot
* 4096 byte block: 128 - 5 = 123 slot
*
* N.B. index is 0-based; index fields refer to slot index
* except nextindex which refers to entry index in stbl;
* end of entry stot list or freelist is marked with -1.
*/
typedef union {
struct {
s64 next; /* 8: next sibling */
s64 prev; /* 8: previous sibling */
u8 flag; /* 1: */
s8 nextindex; /* 1: next entry index in stbl */
s8 freecnt; /* 1: */
s8 freelist; /* 1: slot index of head of freelist */
u8 maxslot; /* 1: number of slots in page slot[] */
s8 stblindex; /* 1: slot index of start of stbl */
u8 rsrvd[2]; /* 2: */
pxd_t self; /* 8: self pxd */
} header; /* (32) */
dtslot_t slot[128];
} dtpage_t;
/* from jfs_xtree.h */
/*
* extent allocation descriptor (xad)
*/
typedef struct xad {
unsigned flag:8; /* 1: flag */
unsigned rsvrd:16; /* 2: reserved */
unsigned off1:8; /* 1: offset in unit of fsblksize */
u32 off2; /* 4: offset in unit of fsblksize */
unsigned len:24; /* 3: length in unit of fsblksize */
unsigned addr1:8; /* 1: address in unit of fsblksize */
u32 addr2; /* 4: address in unit of fsblksize */
} xad_t; /* (16) */
/* xad_t field extraction */
#define offsetXAD(xad) (((s64)((xad)->off1)) << 32 | ((xad)->off2))
#define addressXAD(xad) (((s64)((xad)->addr1)) << 32 | ((xad)->addr2))
#define lengthXAD(xad) ((xad)->len)
/* possible values for maxentry */
#define XTPAGEMAXSLOT 256
#define XTENTRYSTART 2
/*
* xtree page:
*/
typedef union {
struct xtheader {
s64 next; /* 8: */
s64 prev; /* 8: */
u8 flag; /* 1: */
u8 rsrvd1; /* 1: */
s16 nextindex; /* 2: next index = number of entries */
s16 maxentry; /* 2: max number of entries */
s16 rsrvd2; /* 2: */
pxd_t self; /* 8: self */
} header; /* (32) */
xad_t xad[XTPAGEMAXSLOT]; /* 16 * maxentry: xad array */
} xtpage_t;
/* from jfs_dinode.h */
struct dinode {
/*
* I. base area (128 bytes)
* ------------------------
*
* define generic/POSIX attributes
*/
u32 di_inostamp; /* 4: stamp to show inode belongs to fileset */
s32 di_fileset; /* 4: fileset number */
u32 di_number; /* 4: inode number, aka file serial number */
u32 di_gen; /* 4: inode generation number */
pxd_t di_ixpxd; /* 8: inode extent descriptor */
s64 di_size; /* 8: size */
s64 di_nblocks; /* 8: number of blocks allocated */
u32 di_nlink; /* 4: number of links to the object */
u32 di_uid; /* 4: user id of owner */
u32 di_gid; /* 4: group id of owner */
u32 di_mode; /* 4: attribute, format and permission */
struct timestruc_t di_atime; /* 8: time last data accessed */
struct timestruc_t di_ctime; /* 8: time last status changed */
struct timestruc_t di_mtime; /* 8: time last data modified */
struct timestruc_t di_otime; /* 8: time created */
dxd_t di_acl; /* 16: acl descriptor */
dxd_t di_ea; /* 16: ea descriptor */
s32 di_next_index; /* 4: Next available dir_table index */
s32 di_acltype; /* 4: Type of ACL */
/*
* Extension Areas.
*
* Historically, the inode was partitioned into 4 128-byte areas,
* the last 3 being defined as unions which could have multiple
* uses. The first 96 bytes had been completely unused until
* an index table was added to the directory. It is now more
* useful to describe the last 3/4 of the inode as a single
* union. We would probably be better off redesigning the
* entire structure from scratch, but we don't want to break
* commonality with OS/2's JFS at this time.
*/
union {
struct {
/*
* This table contains the information needed to
* find a directory entry from a 32-bit index.
* If the index is small enough, the table is inline,
* otherwise, an x-tree root overlays this table
*/
dir_table_slot_t _table[12]; /* 96: inline */
dtroot_t _dtroot; /* 288: dtree root */
} _dir; /* (384) */
#define di_dirtable u._dir._table
#define di_dtroot u._dir._dtroot
#define di_parent di_dtroot.header.idotdot
#define di_DASD di_dtroot.header.DASD
struct {
union {
u8 _data[96]; /* 96: unused */
struct {
void *_imap; /* 4: unused */
u32 _gengen; /* 4: generator */
} _imap;
} _u1; /* 96: */
#define di_gengen u._file._u1._imap._gengen
union {
xtpage_t _xtroot;
struct {
u8 unused[16]; /* 16: */
dxd_t _dxd; /* 16: */
union {
u32 _rdev; /* 4: */
u8 _fastsymlink[128];
} _u;
u8 _inlineea[128];
} _special;
} _u2;
} _file;
#define di_xtroot u._file._u2._xtroot
#define di_dxd u._file._u2._special._dxd
#define di_btroot di_xtroot
#define di_inlinedata u._file._u2._special._u
#define di_rdev u._file._u2._special._u._rdev
#define di_fastsymlink u._file._u2._special._u._fastsymlink
#define di_inlineea u._file._u2._special._inlineea
} u;
};
typedef struct dinode dinode_t;
/* di_mode */
#define IFMT 0xF000 /* S_IFMT - mask of file type */
#define IFDIR 0x4000 /* S_IFDIR - directory */
#define IFREG 0x8000 /* S_IFREG - regular file */
#define IFLNK 0xA000 /* S_IFLNK - symbolic link */
/* extended mode bits (on-disk inode di_mode) */
#define INLINEEA 0x00040000 /* inline EA area free */
/* from jfs_imap.h */
#define EXTSPERIAG 128 /* number of disk inode extent per iag */
#define SMAPSZ 4 /* number of words per summary map */
#define MAXAG 128 /* maximum number of allocation groups */
/*
* inode allocation map:
*
* inode allocation map consists of
* . the inode map control page and
* . inode allocation group pages (per 4096 inodes)
* which are addressed by standard JFS xtree.
*/
/*
* inode allocation group page (per 4096 inodes of an AG)
*/
typedef struct {
s64 agstart; /* 8: starting block of ag */
s32 iagnum; /* 4: inode allocation group number */
s32 inofreefwd; /* 4: ag inode free list forward */
s32 inofreeback; /* 4: ag inode free list back */
s32 extfreefwd; /* 4: ag inode extent free list forward */
s32 extfreeback; /* 4: ag inode extent free list back */
s32 iagfree; /* 4: iag free list */
/* summary map: 1 bit per inode extent */
s32 inosmap[SMAPSZ]; /* 16: sum map of mapwords w/ free inodes;
* note: this indicates free and backed
* inodes, if the extent is not backed the
* value will be 1. if the extent is
* backed but all inodes are being used the
* value will be 1. if the extent is
* backed but at least one of the inodes is
* free the value will be 0.
*/
s32 extsmap[SMAPSZ]; /* 16: sum map of mapwords w/ free extents */
s32 nfreeinos; /* 4: number of free inodes */
s32 nfreeexts; /* 4: number of free extents */
/* (72) */
u8 pad[1976]; /* 1976: pad to 2048 bytes */
/* allocation bit map: 1 bit per inode (0 - free, 1 - allocated) */
u32 wmap[EXTSPERIAG]; /* 512: working allocation map */
u32 pmap[EXTSPERIAG]; /* 512: persistent allocation map */
pxd_t inoext[EXTSPERIAG]; /* 1024: inode extent addresses */
} iag_t; /* (4096) */
#endif /* _JFS_H_ */
+6
View File
@@ -207,6 +207,8 @@ extern char *grub_scratch_mem;
#define STAGE2_ID_MINIX_STAGE1_5 4
#define STAGE2_ID_REISERFS_STAGE1_5 5
#define STAGE2_ID_VSTAFS_STAGE1_5 6
#define STAGE2_ID_JFS_STAGE1_5 7
#define STAGE2_ID_XFS_STAGE1_5 8
#ifndef STAGE1_5
# define STAGE2_ID STAGE2_ID_STAGE2
@@ -223,6 +225,10 @@ extern char *grub_scratch_mem;
# define STAGE2_ID STAGE2_ID_REISERFS_STAGE1_5
# elif defined(FSYS_VSTAFS)
# define STAGE2_ID STAGE2_ID_VSTAFS_STAGE1_5
# elif defined(FSYS_JFS)
# define STAGE2_ID STAGE2_ID_JFS_STAGE1_5
# elif defined(FSYS_XFS)
# define STAGE2_ID STAGE2_ID_XFS_STAGE1_5
# else
# error "unknown Stage 2"
# endif
+546
View File
@@ -0,0 +1,546 @@
/* xfs.h - an extraction from xfsprogs-1.3.5/include/xfs* into one file */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved.
* Copyright (C) 2001 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it would be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* Further, this software is distributed without any warranty that it is
* free of the rightful claim of any third person regarding infringement
* or the like. Any license provided herein, whether implied or
* otherwise, applies only to this software file. Patent licenses, if
* any, provided herein do not apply to combinations of this program with
* other software, or any other product whatsoever.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write the Free Software Foundation, Inc., 59
* Temple Place - Suite 330, Boston MA 02111-1307, USA.
*
* Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
* Mountain View, CA 94043, or:
*
* http://www.sgi.com
*
* For further information regarding this notice, see:
*
* http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
*/
#ifndef _BITS_TYPES_H
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef short __int16_t;
typedef unsigned short __uint16_t;
typedef int __int32_t;
typedef unsigned int __uint32_t;
typedef long long __int64_t;
typedef unsigned long long __uint64_t;
#endif
typedef __uint64_t xfs_ino_t;
typedef __uint32_t xfs_agino_t;
typedef __int64_t xfs_daddr_t;
typedef __int64_t xfs_off_t;
typedef __uint8_t uuid_t[16];
/* those are from xfs_types.h */
typedef __uint32_t xfs_agblock_t; /* blockno in alloc. group */
typedef __uint32_t xfs_extlen_t; /* extent length in blocks */
typedef __uint32_t xfs_agnumber_t; /* allocation group number */
typedef __int32_t xfs_extnum_t; /* # of extents in a file */
typedef __int16_t xfs_aextnum_t; /* # extents in an attribute fork */
typedef __int64_t xfs_fsize_t; /* bytes in a file */
typedef __uint32_t xfs_dablk_t; /* dir/attr block number (in file) */
typedef __uint32_t xfs_dahash_t; /* dir/attr hash value */
/*
* Disk based types:
*/
typedef __uint64_t xfs_dfsbno_t; /* blockno in filesystem (agno|agbno) */
typedef __uint64_t xfs_drfsbno_t; /* blockno in filesystem (raw) */
typedef __uint64_t xfs_drtbno_t; /* extent (block) in realtime area */
typedef __uint64_t xfs_dfiloff_t; /* block number in a file */
typedef __uint64_t xfs_fsblock_t; /* blockno in filesystem (agno|agbno) */
typedef __uint64_t xfs_fileoff_t; /* block number in a file */
typedef __uint64_t xfs_filblks_t; /* number of blocks in a file */
/* those are from xfs_sb.h */
#define XFS_SB_MAGIC 0x58465342 /* 'XFSB'*/
#define XFS_SB_VERSION_4 4 /* 6.2+ - bitmask version */
#define XFS_SB_VERSION_NUMBITS 0x000f
typedef struct xfs_sb
{
__uint32_t sb_magicnum; /* magic number == XFS_SB_MAGIC */
__uint32_t sb_blocksize; /* logical block size, bytes */
xfs_drfsbno_t sb_dblocks; /* number of data blocks */
xfs_drfsbno_t sb_rblocks; /* number of realtime blocks */
xfs_drtbno_t sb_rextents; /* number of realtime extents */
uuid_t sb_uuid; /* file system unique id */
xfs_dfsbno_t sb_logstart; /* starting block of log if internal */
xfs_ino_t sb_rootino; /* root inode number */
xfs_ino_t sb_rbmino; /* bitmap inode for realtime extents */
xfs_ino_t sb_rsumino; /* summary inode for rt bitmap */
xfs_agblock_t sb_rextsize; /* realtime extent size, blocks */
xfs_agblock_t sb_agblocks; /* size of an allocation group */
xfs_agnumber_t sb_agcount; /* number of allocation groups */
xfs_extlen_t sb_rbmblocks; /* number of rt bitmap blocks */
xfs_extlen_t sb_logblocks; /* number of log blocks */
__uint16_t sb_versionnum; /* header version == XFS_SB_VERSION */
__uint16_t sb_sectsize; /* volume sector size, bytes */
__uint16_t sb_inodesize; /* inode size, bytes */
__uint16_t sb_inopblock; /* inodes per block */
char sb_fname[12]; /* file system name */
__uint8_t sb_blocklog; /* log2 of sb_blocksize */
__uint8_t sb_sectlog; /* log2 of sb_sectsize */
__uint8_t sb_inodelog; /* log2 of sb_inodesize */
__uint8_t sb_inopblog; /* log2 of sb_inopblock */
__uint8_t sb_agblklog; /* log2 of sb_agblocks (rounded up) */
__uint8_t sb_rextslog; /* log2 of sb_rextents */
__uint8_t sb_inprogress; /* mkfs is in progress, don't mount */
__uint8_t sb_imax_pct; /* max % of fs for inode space */
/* statistics */
/*
* These fields must remain contiguous. If you really
* want to change their layout, make sure you fix the
* code in xfs_trans_apply_sb_deltas().
*/
__uint64_t sb_icount; /* allocated inodes */
__uint64_t sb_ifree; /* free inodes */
__uint64_t sb_fdblocks; /* free data blocks */
__uint64_t sb_frextents; /* free realtime extents */
/*
* End contiguous fields.
*/
xfs_ino_t sb_uquotino; /* user quota inode */
xfs_ino_t sb_gquotino; /* group quota inode */
__uint16_t sb_qflags; /* quota flags */
__uint8_t sb_flags; /* misc. flags */
__uint8_t sb_shared_vn; /* shared version number */
xfs_extlen_t sb_inoalignmt; /* inode chunk alignment, fsblocks */
__uint32_t sb_unit; /* stripe or raid unit */
__uint32_t sb_width; /* stripe or raid width */
__uint8_t sb_dirblklog; /* log2 of dir block size (fsbs) */
__uint8_t sb_dummy[7]; /* padding */
} xfs_sb_t;
/* those are from xfs_btree.h */
/*
* Long form header: bmap btrees.
*/
typedef struct xfs_btree_lblock
{
__uint32_t bb_magic; /* magic number for block type */
__uint16_t bb_level; /* 0 is a leaf */
__uint16_t bb_numrecs; /* current # of data records */
xfs_dfsbno_t bb_leftsib; /* left sibling block or NULLDFSBNO */
xfs_dfsbno_t bb_rightsib; /* right sibling block or NULLDFSBNO */
} xfs_btree_lblock_t;
/*
* Combined header and structure, used by common code.
*/
typedef struct xfs_btree_hdr
{
__uint32_t bb_magic; /* magic number for block type */
__uint16_t bb_level; /* 0 is a leaf */
__uint16_t bb_numrecs; /* current # of data records */
} xfs_btree_hdr_t;
typedef struct xfs_btree_block
{
xfs_btree_hdr_t bb_h; /* header */
union {
struct {
xfs_agblock_t bb_leftsib;
xfs_agblock_t bb_rightsib;
} s; /* short form pointers */
struct {
xfs_dfsbno_t bb_leftsib;
xfs_dfsbno_t bb_rightsib;
} l; /* long form pointers */
} bb_u; /* rest */
} xfs_btree_block_t;
/* those are from xfs_bmap_btree.h */
/*
* Bmap root header, on-disk form only.
*/
typedef struct xfs_bmdr_block
{
__uint16_t bb_level; /* 0 is a leaf */
__uint16_t bb_numrecs; /* current # of data records */
} xfs_bmdr_block_t;
/*
* Bmap btree record and extent descriptor.
* For 32-bit kernels,
* l0:31 is an extent flag (value 1 indicates non-normal).
* l0:0-30 and l1:9-31 are startoff.
* l1:0-8, l2:0-31, and l3:21-31 are startblock.
* l3:0-20 are blockcount.
* For 64-bit kernels,
* l0:63 is an extent flag (value 1 indicates non-normal).
* l0:9-62 are startoff.
* l0:0-8 and l1:21-63 are startblock.
* l1:0-20 are blockcount.
*/
#define BMBT_USE_64 1
typedef struct xfs_bmbt_rec_32
{
__uint32_t l0, l1, l2, l3;
} xfs_bmbt_rec_32_t;
typedef struct xfs_bmbt_rec_64
{
__uint64_t l0, l1;
} xfs_bmbt_rec_64_t;
#if BMBT_USE_64
typedef __uint64_t xfs_bmbt_rec_base_t; /* use this for casts */
typedef xfs_bmbt_rec_64_t xfs_bmbt_rec_t, xfs_bmdr_rec_t;
#else /* !BMBT_USE_64 */
typedef __uint32_t xfs_bmbt_rec_base_t; /* use this for casts */
typedef xfs_bmbt_rec_32_t xfs_bmbt_rec_t, xfs_bmdr_rec_t;
#endif /* BMBT_USE_64 */
/*
* Key structure for non-leaf levels of the tree.
*/
typedef struct xfs_bmbt_key
{
xfs_dfiloff_t br_startoff; /* starting file offset */
} xfs_bmbt_key_t, xfs_bmdr_key_t;
typedef xfs_dfsbno_t xfs_bmbt_ptr_t, xfs_bmdr_ptr_t; /* btree pointer type */
/* btree block header type */
typedef struct xfs_btree_lblock xfs_bmbt_block_t;
/* those are from xfs_dir2.h */
/*
* Directory version 2.
* There are 4 possible formats:
* shortform
* single block - data with embedded leaf at the end
* multiple data blocks, single leaf+freeindex block
* data blocks, node&leaf blocks (btree), freeindex blocks
*
* The shortform format is in xfs_dir2_sf.h.
* The single block format is in xfs_dir2_block.h.
* The data block format is in xfs_dir2_data.h.
* The leaf and freeindex block formats are in xfs_dir2_leaf.h.
* Node blocks are the same as the other version, in xfs_da_btree.h.
*/
/*
* Byte offset in data block and shortform entry.
*/
typedef __uint16_t xfs_dir2_data_off_t;
/*
* Byte offset in a directory.
*/
typedef xfs_off_t xfs_dir2_off_t;
/* those are from xfs_da_btree.h */
/*========================================================================
* Directory Structure when greater than XFS_LBSIZE(mp) bytes.
*========================================================================*/
/*
* This structure is common to both leaf nodes and non-leaf nodes in the Btree.
*
* Is is used to manage a doubly linked list of all blocks at the same
* level in the Btree, and to identify which type of block this is.
*/
#define XFS_DIR2_LEAF1_MAGIC 0xd2f1 /* magic number: v2 dirlf single blks */
#define XFS_DIR2_LEAFN_MAGIC 0xd2ff /* magic number: v2 dirlf multi blks */
typedef struct xfs_da_blkinfo {
xfs_dablk_t forw; /* previous block in list */
xfs_dablk_t back; /* following block in list */
__uint16_t magic; /* validity check on block */
__uint16_t pad; /* unused */
} xfs_da_blkinfo_t;
/*
* This is the structure of the root and intermediate nodes in the Btree.
* The leaf nodes are defined above.
*
* Entries are not packed.
*
* Since we have duplicate keys, use a binary search but always follow
* all match in the block, not just the first match found.
*/
typedef struct xfs_da_intnode {
struct xfs_da_node_hdr { /* constant-structure header block */
xfs_da_blkinfo_t info; /* block type, links, etc. */
__uint16_t count; /* count of active entries */
__uint16_t level; /* level above leaves (leaf == 0) */
} hdr;
struct xfs_da_node_entry {
xfs_dahash_t hashval; /* hash value for this descendant */
xfs_dablk_t before; /* Btree block before this key */
} btree[1]; /* variable sized array of keys */
} xfs_da_intnode_t;
/* those are from xfs_dir2_data.h */
/*
* Directory format 2, data block structures.
*/
/*
* Constants.
*/
#define XFS_DIR2_DATA_FREE_TAG 0xffff
#define XFS_DIR2_DATA_FD_COUNT 3
/*
* Structures.
*/
/*
* Describe a free area in the data block.
* The freespace will be formatted as a xfs_dir2_data_unused_t.
*/
typedef struct xfs_dir2_data_free {
xfs_dir2_data_off_t offset; /* start of freespace */
xfs_dir2_data_off_t length; /* length of freespace */
} xfs_dir2_data_free_t;
/*
* Header for the data blocks.
* Always at the beginning of a directory-sized block.
* The code knows that XFS_DIR2_DATA_FD_COUNT is 3.
*/
typedef struct xfs_dir2_data_hdr {
__uint32_t magic; /* XFS_DIR2_DATA_MAGIC */
/* or XFS_DIR2_BLOCK_MAGIC */
xfs_dir2_data_free_t bestfree[XFS_DIR2_DATA_FD_COUNT];
} xfs_dir2_data_hdr_t;
/*
* Active entry in a data block. Aligned to 8 bytes.
* Tag appears as the last 2 bytes.
*/
typedef struct xfs_dir2_data_entry {
xfs_ino_t inumber; /* inode number */
__uint8_t namelen; /* name length */
__uint8_t name[1]; /* name bytes, no null */
/* variable offset */
xfs_dir2_data_off_t tag; /* starting offset of us */
} xfs_dir2_data_entry_t;
/*
* Unused entry in a data block. Aligned to 8 bytes.
* Tag appears as the last 2 bytes.
*/
typedef struct xfs_dir2_data_unused {
__uint16_t freetag; /* XFS_DIR2_DATA_FREE_TAG */
xfs_dir2_data_off_t length; /* total free length */
/* variable offset */
xfs_dir2_data_off_t tag; /* starting offset of us */
} xfs_dir2_data_unused_t;
typedef union {
xfs_dir2_data_entry_t entry;
xfs_dir2_data_unused_t unused;
} xfs_dir2_data_union_t;
/* those are from xfs_dir2_leaf.h */
/*
* Directory version 2, leaf block structures.
*/
/*
* Leaf block header.
*/
typedef struct xfs_dir2_leaf_hdr {
xfs_da_blkinfo_t info; /* header for da routines */
__uint16_t count; /* count of entries */
__uint16_t stale; /* count of stale entries */
} xfs_dir2_leaf_hdr_t;
/* those are from xfs_dir2_block.h */
/*
* xfs_dir2_block.h
* Directory version 2, single block format structures
*/
/*
* The single block format is as follows:
* xfs_dir2_data_hdr_t structure
* xfs_dir2_data_entry_t and xfs_dir2_data_unused_t structures
* xfs_dir2_leaf_entry_t structures
* xfs_dir2_block_tail_t structure
*/
#define XFS_DIR2_BLOCK_MAGIC 0x58443242 /* XD2B: for one block dirs */
typedef struct xfs_dir2_block_tail {
__uint32_t count; /* count of leaf entries */
__uint32_t stale; /* count of stale lf entries */
} xfs_dir2_block_tail_t;
/* those are from xfs_dir2_sf.h */
/*
* Directory layout when stored internal to an inode.
*
* Small directories are packed as tightly as possible so as to
* fit into the literal area of the inode.
*/
/*
* Inode number stored as 8 8-bit values.
*/
typedef struct { __uint8_t i[8]; } xfs_dir2_ino8_t;
/*
* Inode number stored as 4 8-bit values.
* Works a lot of the time, when all the inode numbers in a directory
* fit in 32 bits.
*/
typedef struct { __uint8_t i[4]; } xfs_dir2_ino4_t;
typedef union {
xfs_dir2_ino8_t i8;
xfs_dir2_ino4_t i4;
} xfs_dir2_inou_t;
/*
* Normalized offset (in a data block) of the entry, really xfs_dir2_data_off_t.
* Only need 16 bits, this is the byte offset into the single block form.
*/
typedef struct { __uint8_t i[2]; } xfs_dir2_sf_off_t;
/*
* The parent directory has a dedicated field, and the self-pointer must
* be calculated on the fly.
*
* Entries are packed toward the top as tightly as possible. The header
* and the elements must be bcopy()'d out into a work area to get correct
* alignment for the inode number fields.
*/
typedef struct xfs_dir2_sf_hdr {
__uint8_t count; /* count of entries */
__uint8_t i8count; /* count of 8-byte inode #s */
xfs_dir2_inou_t parent; /* parent dir inode number */
} xfs_dir2_sf_hdr_t;
typedef struct xfs_dir2_sf_entry {
__uint8_t namelen; /* actual name length */
xfs_dir2_sf_off_t offset; /* saved offset */
__uint8_t name[1]; /* name, variable size */
xfs_dir2_inou_t inumber; /* inode number, var. offset */
} xfs_dir2_sf_entry_t;
typedef struct xfs_dir2_sf {
xfs_dir2_sf_hdr_t hdr; /* shortform header */
xfs_dir2_sf_entry_t list[1]; /* shortform entries */
} xfs_dir2_sf_t;
/* those are from xfs_dinode.h */
#define XFS_DINODE_VERSION_1 1
#define XFS_DINODE_VERSION_2 2
#define XFS_DINODE_MAGIC 0x494e /* 'IN' */
/*
* Disk inode structure.
* This is just the header; the inode is expanded to fill a variable size
* with the last field expanding. It is split into the core and "other"
* because we only need the core part in the in-core inode.
*/
typedef struct xfs_timestamp {
__int32_t t_sec; /* timestamp seconds */
__int32_t t_nsec; /* timestamp nanoseconds */
} xfs_timestamp_t;
/*
* Note: Coordinate changes to this structure with the XFS_DI_* #defines
* below and the offsets table in xfs_ialloc_log_di().
*/
typedef struct xfs_dinode_core
{
__uint16_t di_magic; /* inode magic # = XFS_DINODE_MAGIC */
__uint16_t di_mode; /* mode and type of file */
__int8_t di_version; /* inode version */
__int8_t di_format; /* format of di_c data */
__uint16_t di_onlink; /* old number of links to file */
__uint32_t di_uid; /* owner's user id */
__uint32_t di_gid; /* owner's group id */
__uint32_t di_nlink; /* number of links to file */
__uint16_t di_projid; /* owner's project id */
__uint8_t di_pad[10]; /* unused, zeroed space */
xfs_timestamp_t di_atime; /* time last accessed */
xfs_timestamp_t di_mtime; /* time last modified */
xfs_timestamp_t di_ctime; /* time created/inode modified */
xfs_fsize_t di_size; /* number of bytes in file */
xfs_drfsbno_t di_nblocks; /* # of direct & btree blocks used */
xfs_extlen_t di_extsize; /* basic/minimum extent size for file */
xfs_extnum_t di_nextents; /* number of extents in data fork */
xfs_aextnum_t di_anextents; /* number of extents in attribute fork*/
__uint8_t di_forkoff; /* attr fork offs, <<3 for 64b align */
__int8_t di_aformat; /* format of attr fork's data */
__uint32_t di_dmevmask; /* DMIG event mask */
__uint16_t di_dmstate; /* DMIG state info */
__uint16_t di_flags; /* random flags, XFS_DIFLAG_... */
__uint32_t di_gen; /* generation number */
} xfs_dinode_core_t;
typedef struct xfs_dinode
{
xfs_dinode_core_t di_core;
xfs_agino_t di_next_unlinked;/* agi unlinked list ptr */
union {
xfs_bmdr_block_t di_bmbt; /* btree root block */
xfs_bmbt_rec_32_t di_bmx[1]; /* extent list */
xfs_dir2_sf_t di_dir2sf; /* shortform directory v2 */
char di_c[1]; /* local contents */
} di_u;
} xfs_dinode_t;
/*
* Values for di_format
*/
typedef enum xfs_dinode_fmt
{
XFS_DINODE_FMT_DEV, /* CHR, BLK: di_dev */
XFS_DINODE_FMT_LOCAL, /* DIR, REG: di_c */
/* LNK: di_symlink */
XFS_DINODE_FMT_EXTENTS, /* DIR, REG, LNK: di_bmx */
XFS_DINODE_FMT_BTREE, /* DIR, REG, LNK: di_bmbt */
XFS_DINODE_FMT_UUID /* MNT: di_uuid */
} xfs_dinode_fmt_t;
/*
* File types (mode field)
*/
#define IFMT 0170000 /* type of file */
#define IFDIR 0040000 /* directory */
#define IFREG 0100000 /* regular */
#define IFLNK 0120000 /* symbolic link */