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

* stage2/char_io.c [!GRUB_UTIL] (memcpy): New function. It is
	defined as an alias of grub_memmove. This is copied from GRUB 2.

	* stage2/disk_io.c (print_completions): Simplified conditionals
	to make it easier to edit the file with Emacs.
	Added support for (cd).
	(set_device): Likewise.

	* stage2/common.c (init_bios_info): Check if BOOT_DRIVE is a
	CDROM drive. If it is true, set CDROM_DRIVE to BOOT_DRIVE.
	(cdrom_drive): New variable.

	From Leonid Lisovskiy <lly@pisem.net>:
	* stage2/start_eltorito.S: New file.

	* stage2/stage2.c (run_menu): Use GRUB_INVALID_DRIVE instead of
	0xFF.

	* stage2/shared.h (STAGE2_ID_ISO9660_STAGE1_5): New macro.
	[FSYS_ISO9660] (STAGE2_ID): Set to STAGE2_ID_ISO9660_STAGE1_5.
	(struct geometry): Added a new member ``sector_size''.
	(BIOSDISK_FLAG_CDROM): New macro.
	(cdrom_drive): Declared.

	* stage2/fsys_iso9660.c: New file.
	* stage2/iso9660.h: Likewise.

	* stage2/filesys.h (FSYS_ISO9660_NUM): New macro.
	[FSYS_ISO9660] (iso9660_mount): Declared.
	[FSYS_ISO9660] (iso9660_read): Likewise.
	[FSYS_ISO9660] (iso9660_dir): Likewise.
	(NUM_FSYS): Added FSYS_ISO9660_NUM.

	* stage2/disk_io.c (fsys_table) [FSYS_ISO9660]: Added iso9660.
	(current_drive): Use GRUB_INVALID_DRIVE.
	(log2): New function.
	(rawread): Use BUF_GEOM.SECTOR_SIZE instead of SECTOR_SIZE.
	Change the type of BUFADDR from int to char *.
	Use a virtual track to make sure that one track fits in the
	buffer.
	(sane_partition): Allow CURRENT_DRIVE to be CDROM_DRIVE, because
	a bios drive for a CD-ROM is often assigned to greater than
	0x88.
	(set_device): Use GRUB_INVALID_DRIVE instead of 0xFF.
	(setup_part): Likewise.

	* stage2/cmdline.c (init_cmdline): Use GRUB_INVALID_DRIVE.

	* stage2/builtins.c (install_func): Use GRUB_INVALID_DRIVE.
	(setup_func): Added iso9660_stage1_5.

	* stage2/bios.c (biosdisk): Don't fall back to the CHS mode
	if the drive is a CDROM.
	(get_cdinfo): New function.
	(get_diskinfo): Call get_cdinfo if the drive is greater than or
	equal to 0x88 or the drive supports LBA.
	Set the sector size to SECTOR_SIZE if it is not a CD-ROM.

	* stage2/asm.S (biosdisk_int13_extensions): Take a word
	argument AX instead of a byte argument AH.
	(get_diskinfo_int13_extensions): Removed.

	* stage2/Makefile.am (noinst_HEADERS): Added iso9660.h.
	(libgrub_a_SOURCES): Added fsys_iso9660.c.
	(libgrub_a_CFLAGS): Added -DFSYS_ISO9660=1.
	(pkgdata_DATA): Added iso9660_stage1_5 and stage2_eltorito.
	(noinst_PROGRAMS): Added iso9660_stage1_5.exec and
	start_eltorito.exec.
	(noinst_DATA): Added start_eltorito.
	(pre_stage2_exec_SOURCES): Added fsys_iso9660.c.
	(START_ELTORITO_LINK): New variable.
	(start_eltorito_exec_SOURCES): Likewise.
	(start_eltorito_exec_CCASFLAGS): Likewise.
	(start_eltorito_exec_LDFLAGS): Likewise.
	(start_eltorito_exec-start.$(OBJEXT)): New dependency.
	(stage2_eltorito): New target.
	(iso9660_stage1_5_exec_SOURCES): New variable.
	(iso9660_stage1_5_exec_CFLAGS): Likewise.
	(iso9660_stage1_5_exec_CCASFLAGS): Likewise.
	(iso9660_stage1_5_exec_LDFLAGS): Likewise.

	* stage1/stage1.h (GRUB_INVALID_DRIVE): New macro.

	* stage1/stage1.S (boot_drive): Use the macro GRUB_INVALID_DRIVE.
	(real_start): Likewise.

	* lib/device.c (get_drive_geometry): Set GEOM->SECTOR_SIZE to
	SECTOR_SIZE by default.

	* configure.ac (--disable-iso9660): New option.
This commit is contained in:
okuji committed 2004-03-27 17:02:54 +00:00
1 parent a1d48b992f
commit 4f29a8af45
28 files changed
+1700 -188

No files matched your search

+48 -28
View File
@@ -5,9 +5,9 @@ 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 jfs.h mb_header.h mb_info.h md5.h nbi.h \
pc_slice.h serial.h shared.h smp-imps.h term.h terminfo.h \
tparm.h nbi.h vstafs.h xfs.h
imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \
nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \
terminfo.h tparm.h nbi.h vstafs.h xfs.h
EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS)
# For <stage1.h>.
@@ -16,13 +16,13 @@ INCLUDES = -I$(top_srcdir)/stage1
# The library for /sbin/grub.
noinst_LIBRARIES = libgrub.a
libgrub_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \
disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_jfs.c \
fsys_minix.c fsys_reiserfs.c fsys_vstafs.c fsys_xfs.c gunzip.c \
md5.c serial.c stage2.c terminfo.c tparm.c
disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \
fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_vstafs.c \
fsys_xfs.c gunzip.c md5.c serial.c stage2.c terminfo.c tparm.c
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
-DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \
-DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DFSYS_VSTAFS=1 \
-DFSYS_XFS=1 -DUSE_MD5_PASSWORDS=1 \
-DFSYS_ISO9660=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.
@@ -31,24 +31,24 @@ pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
EXTRA_PROGRAMS = nbloader.exec pxeloader.exec diskless.exec
if DISKLESS_SUPPORT
pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
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 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
pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \
ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \
reiserfs_stage1_5 vstafs_stage1_5 xfs_stage1_5 nbgrub pxegrub
noinst_DATA = pre_stage2 start start_eltorito nbloader pxeloader diskless
noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \
e2fs_stage1_5.exec fat_stage1_5.exec ffs_stage1_5.exec \
iso9660_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 \
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 jfs_stage1_5.exec \
minix_stage1_5.exec reiserfs_stage1_5.exec \
vstafs_stage1_5.exec xfs_stage1_5.exec
pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \
ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \
reiserfs_stage1_5 vstafs_stage1_5 xfs_stage1_5
noinst_DATA = pre_stage2 start start_eltorito
noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \
e2fs_stage1_5.exec fat_stage1_5.exec ffs_stage1_5.exec \
iso9660_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)
@@ -56,6 +56,7 @@ PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200
START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0
PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
if NETBOOT_SUPPORT
NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1
@@ -84,9 +85,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 char_io.c \
cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \
fsys_fat.c fsys_ffs.c fsys_jfs.c fsys_minix.c fsys_reiserfs.c \
fsys_vstafs.c fsys_xfs.c gunzip.c hercules.c md5.c serial.c \
smp-imps.c stage2.c terminfo.c tparm.c
fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \
fsys_reiserfs.c fsys_vstafs.c fsys_xfs.c gunzip.c hercules.c \
md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK)
@@ -122,6 +123,16 @@ stage2: pre_stage2 start
-rm -f stage2
cat start pre_stage2 > stage2
start_eltorito_exec_SOURCES = start_eltorito.S
start_eltorito_exec_CCASFLAGS = $(STAGE2_COMPILE)
start_eltorito_exec_LDFLAGS = $(START_ELTORITO_LINK)
start_eltorito_exec-start.$(OBJEXT): stage2_size.h
stage2_eltorito: pre_stage2 start_eltorito
-rm -f stage2_eltorito
cat start_eltorito pre_stage2 > stage2_eltorito
# For e2fs_stage1_5 target.
e2fs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
stage1_5.c fsys_ext2fs.c bios.c
@@ -194,6 +205,15 @@ xfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \
-DNO_BLOCK_FILES=1
xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For iso9660_stage1_5 target.
iso9660_stage1_5_exec_SOURCES = start_eltorito.S asm.S common.c char_io.c \
disk_io.c stage1_5.c fsys_iso9660.c bios.c
iso9660_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \
-DNO_BLOCK_FILES=1
iso9660_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \
-DNO_BLOCK_FILES=1
iso9660_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For diskless target.
diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES)
diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \
+323 -35
View File
@@ -151,9 +151,9 @@ 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 jfs.h mb_header.h mb_info.h md5.h nbi.h \
pc_slice.h serial.h shared.h smp-imps.h term.h terminfo.h \
tparm.h nbi.h vstafs.h xfs.h
imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \
nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \
terminfo.h tparm.h nbi.h vstafs.h xfs.h
EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS)
@@ -163,39 +163,39 @@ INCLUDES = -I$(top_srcdir)/stage1
# The library for /sbin/grub.
noinst_LIBRARIES = libgrub.a
libgrub_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \
disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_jfs.c \
fsys_minix.c fsys_reiserfs.c fsys_vstafs.c fsys_xfs.c gunzip.c \
md5.c serial.c stage2.c terminfo.c tparm.c
disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \
fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_vstafs.c \
fsys_xfs.c gunzip.c md5.c serial.c stage2.c terminfo.c tparm.c
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
-DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \
-DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DFSYS_VSTAFS=1 \
-DFSYS_XFS=1 -DUSE_MD5_PASSWORDS=1 \
-DFSYS_ISO9660=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
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@ jfs_stage1_5 minix_stage1_5 reiserfs_stage1_5 vstafs_stage1_5 \
@DISKLESS_SUPPORT_TRUE@ xfs_stage1_5 nbgrub pxegrub
@DISKLESS_SUPPORT_TRUE@pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \
@DISKLESS_SUPPORT_TRUE@ ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \
@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5 vstafs_stage1_5 xfs_stage1_5 nbgrub pxegrub
@DISKLESS_SUPPORT_FALSE@pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_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_FALSE@pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \
@DISKLESS_SUPPORT_FALSE@ ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \
@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5 vstafs_stage1_5 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 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_TRUE@noinst_DATA = pre_stage2 start start_eltorito nbloader pxeloader diskless
@DISKLESS_SUPPORT_FALSE@noinst_DATA = pre_stage2 start start_eltorito
@DISKLESS_SUPPORT_TRUE@noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \
@DISKLESS_SUPPORT_TRUE@ e2fs_stage1_5.exec fat_stage1_5.exec ffs_stage1_5.exec \
@DISKLESS_SUPPORT_TRUE@ iso9660_stage1_5.exec jfs_stage1_5.exec minix_stage1_5.exec \
@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5.exec vstafs_stage1_5.exec xfs_stage1_5.exec \
@DISKLESS_SUPPORT_TRUE@ nbloader.exec 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 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
@DISKLESS_SUPPORT_FALSE@noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \
@DISKLESS_SUPPORT_FALSE@ e2fs_stage1_5.exec fat_stage1_5.exec ffs_stage1_5.exec \
@DISKLESS_SUPPORT_FALSE@ iso9660_stage1_5.exec jfs_stage1_5.exec minix_stage1_5.exec \
@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5.exec vstafs_stage1_5.exec xfs_stage1_5.exec
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
@@ -203,12 +203,13 @@ PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200
START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0
PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
@NETBOOT_SUPPORT_TRUE@NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1
@NETBOOT_SUPPORT_FALSE@NETBOOT_FLAGS =
@SERIAL_SUPPORT_FALSE@SERIAL_FLAGS =
@SERIAL_SUPPORT_TRUE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1
@SERIAL_SUPPORT_FALSE@SERIAL_FLAGS =
@HERCULES_SUPPORT_FALSE@HERCULES_FLAGS =
@HERCULES_SUPPORT_TRUE@HERCULES_FLAGS = -DSUPPORT_HERCULES=1
@@ -223,9 +224,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 char_io.c \
cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \
fsys_fat.c fsys_ffs.c fsys_jfs.c fsys_minix.c fsys_reiserfs.c \
fsys_vstafs.c fsys_xfs.c gunzip.c hercules.c md5.c serial.c \
smp-imps.c stage2.c terminfo.c tparm.c
fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \
fsys_reiserfs.c fsys_vstafs.c fsys_xfs.c gunzip.c hercules.c \
md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
@@ -242,6 +243,10 @@ start_exec_SOURCES = start.S
start_exec_CCASFLAGS = $(STAGE2_COMPILE)
start_exec_LDFLAGS = $(START_LINK)
start_eltorito_exec_SOURCES = start_eltorito.S
start_eltorito_exec_CCASFLAGS = $(STAGE2_COMPILE)
start_eltorito_exec_LDFLAGS = $(START_ELTORITO_LINK)
# For e2fs_stage1_5 target.
e2fs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
stage1_5.c fsys_ext2fs.c bios.c
@@ -338,6 +343,18 @@ xfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \
xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For iso9660_stage1_5 target.
iso9660_stage1_5_exec_SOURCES = start_eltorito.S asm.S common.c char_io.c \
disk_io.c stage1_5.c fsys_iso9660.c bios.c
iso9660_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \
-DNO_BLOCK_FILES=1
iso9660_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \
-DNO_BLOCK_FILES=1
iso9660_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
# For diskless target.
diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES)
diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \
@@ -371,7 +388,8 @@ am_libgrub_a_OBJECTS = libgrub_a-boot.$(OBJEXT) \
libgrub_a-cmdline.$(OBJEXT) libgrub_a-common.$(OBJEXT) \
libgrub_a-disk_io.$(OBJEXT) libgrub_a-fsys_ext2fs.$(OBJEXT) \
libgrub_a-fsys_fat.$(OBJEXT) libgrub_a-fsys_ffs.$(OBJEXT) \
libgrub_a-fsys_jfs.$(OBJEXT) libgrub_a-fsys_minix.$(OBJEXT) \
libgrub_a-fsys_iso9660.$(OBJEXT) libgrub_a-fsys_jfs.$(OBJEXT) \
libgrub_a-fsys_minix.$(OBJEXT) \
libgrub_a-fsys_reiserfs.$(OBJEXT) \
libgrub_a-fsys_vstafs.$(OBJEXT) libgrub_a-fsys_xfs.$(OBJEXT) \
libgrub_a-gunzip.$(OBJEXT) libgrub_a-md5.$(OBJEXT) \
@@ -382,9 +400,11 @@ EXTRA_PROGRAMS = nbloader.exec$(EXEEXT) pxeloader.exec$(EXEEXT) \
diskless.exec$(EXEEXT)
@DISKLESS_SUPPORT_TRUE@noinst_PROGRAMS = pre_stage2.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ start.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ start_eltorito.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@ iso9660_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) \
@@ -395,9 +415,11 @@ EXTRA_PROGRAMS = nbloader.exec$(EXEEXT) pxeloader.exec$(EXEEXT) \
@DISKLESS_SUPPORT_TRUE@ diskless.exec$(EXEEXT)
@DISKLESS_SUPPORT_FALSE@noinst_PROGRAMS = pre_stage2.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ start.exec$(EXEEXT) \
@DISKLESS_SUPPORT_FALSE@ start_eltorito.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@ iso9660_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) \
@@ -413,6 +435,7 @@ am__objects_1 = diskless_exec-asm.$(OBJEXT) diskless_exec-bios.$(OBJEXT) \
diskless_exec-fsys_ext2fs.$(OBJEXT) \
diskless_exec-fsys_fat.$(OBJEXT) \
diskless_exec-fsys_ffs.$(OBJEXT) \
diskless_exec-fsys_iso9660.$(OBJEXT) \
diskless_exec-fsys_jfs.$(OBJEXT) \
diskless_exec-fsys_minix.$(OBJEXT) \
diskless_exec-fsys_reiserfs.$(OBJEXT) \
@@ -458,6 +481,18 @@ 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_iso9660_stage1_5_exec_OBJECTS = \
iso9660_stage1_5_exec-start_eltorito.$(OBJEXT) \
iso9660_stage1_5_exec-asm.$(OBJEXT) \
iso9660_stage1_5_exec-common.$(OBJEXT) \
iso9660_stage1_5_exec-char_io.$(OBJEXT) \
iso9660_stage1_5_exec-disk_io.$(OBJEXT) \
iso9660_stage1_5_exec-stage1_5.$(OBJEXT) \
iso9660_stage1_5_exec-fsys_iso9660.$(OBJEXT) \
iso9660_stage1_5_exec-bios.$(OBJEXT)
iso9660_stage1_5_exec_OBJECTS = $(am_iso9660_stage1_5_exec_OBJECTS)
iso9660_stage1_5_exec_LDADD = $(LDADD)
iso9660_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) \
@@ -495,6 +530,7 @@ 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_iso9660.$(OBJEXT) \
pre_stage2_exec-fsys_jfs.$(OBJEXT) \
pre_stage2_exec-fsys_minix.$(OBJEXT) \
pre_stage2_exec-fsys_reiserfs.$(OBJEXT) \
@@ -531,6 +567,11 @@ am_start_exec_OBJECTS = start_exec-start.$(OBJEXT)
start_exec_OBJECTS = $(am_start_exec_OBJECTS)
start_exec_LDADD = $(LDADD)
start_exec_DEPENDENCIES =
am_start_eltorito_exec_OBJECTS = \
start_eltorito_exec-start_eltorito.$(OBJEXT)
start_eltorito_exec_OBJECTS = $(am_start_eltorito_exec_OBJECTS)
start_eltorito_exec_LDADD = $(LDADD)
start_eltorito_exec_DEPENDENCIES =
am_vstafs_stage1_5_exec_OBJECTS = vstafs_stage1_5_exec-start.$(OBJEXT) \
vstafs_stage1_5_exec-asm.$(OBJEXT) \
vstafs_stage1_5_exec-common.$(OBJEXT) \
@@ -570,6 +611,7 @@ am__depfiles_maybe = depfiles
@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_iso9660.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 \
@@ -601,6 +643,12 @@ am__depfiles_maybe = depfiles
@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)/iso9660_stage1_5_exec-bios.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/iso9660_stage1_5_exec-common.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/iso9660_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 \
@@ -616,6 +664,7 @@ am__depfiles_maybe = depfiles
@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_iso9660.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 \
@@ -644,6 +693,7 @@ am__depfiles_maybe = depfiles
@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_iso9660.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 \
@@ -682,17 +732,18 @@ CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
DIST_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) \
$(ffs_stage1_5_exec_SOURCES) $(iso9660_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) $(start_eltorito_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) $(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)
SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(iso9660_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) $(start_eltorito_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) $(xfs_stage1_5_exec_SOURCES)
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -728,6 +779,9 @@ fat_stage1_5.exec$(EXEEXT): $(fat_stage1_5_exec_OBJECTS) $(fat_stage1_5_exec_DEP
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)
iso9660_stage1_5.exec$(EXEEXT): $(iso9660_stage1_5_exec_OBJECTS) $(iso9660_stage1_5_exec_DEPENDENCIES)
@rm -f iso9660_stage1_5.exec$(EXEEXT)
$(LINK) $(iso9660_stage1_5_exec_LDFLAGS) $(iso9660_stage1_5_exec_OBJECTS) $(iso9660_stage1_5_exec_LDADD) $(LIBS)
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)
@@ -749,6 +803,9 @@ reiserfs_stage1_5.exec$(EXEEXT): $(reiserfs_stage1_5_exec_OBJECTS) $(reiserfs_st
start.exec$(EXEEXT): $(start_exec_OBJECTS) $(start_exec_DEPENDENCIES)
@rm -f start.exec$(EXEEXT)
$(LINK) $(start_exec_LDFLAGS) $(start_exec_OBJECTS) $(start_exec_LDADD) $(LIBS)
start_eltorito.exec$(EXEEXT): $(start_eltorito_exec_OBJECTS) $(start_eltorito_exec_DEPENDENCIES)
@rm -f start_eltorito.exec$(EXEEXT)
$(LINK) $(start_eltorito_exec_LDFLAGS) $(start_eltorito_exec_OBJECTS) $(start_eltorito_exec_LDADD) $(LIBS)
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)
@@ -773,6 +830,7 @@ 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_iso9660.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@
@@ -804,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)/iso9660_stage1_5_exec-bios.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-common.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_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@
@@ -819,6 +883,7 @@ 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_iso9660.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@
@@ -847,6 +912,7 @@ 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_iso9660.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@
@@ -930,6 +996,18 @@ ffs_stage1_5_exec-asm.o: asm.S
ffs_stage1_5_exec-asm.obj: asm.S
$(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi`
iso9660_stage1_5_exec-start_eltorito.o: start_eltorito.S
$(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-start_eltorito.o `test -f 'start_eltorito.S' || echo '$(srcdir)/'`start_eltorito.S
iso9660_stage1_5_exec-start_eltorito.obj: start_eltorito.S
$(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-start_eltorito.obj `if test -f 'start_eltorito.S'; then $(CYGPATH_W) 'start_eltorito.S'; else $(CYGPATH_W) '$(srcdir)/start_eltorito.S'; fi`
iso9660_stage1_5_exec-asm.o: asm.S
$(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S
iso9660_stage1_5_exec-asm.obj: asm.S
$(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi`
jfs_stage1_5_exec-start.o: start.S
$(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S
@@ -990,6 +1068,12 @@ start_exec-start.o: start.S
start_exec-start.obj: start.S
$(CCAS) $(start_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi`
start_eltorito_exec-start_eltorito.o: start_eltorito.S
$(CCAS) $(start_eltorito_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_eltorito_exec-start_eltorito.o `test -f 'start_eltorito.S' || echo '$(srcdir)/'`start_eltorito.S
start_eltorito_exec-start_eltorito.obj: start_eltorito.S
$(CCAS) $(start_eltorito_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_eltorito_exec-start_eltorito.obj `if test -f 'start_eltorito.S'; then $(CYGPATH_W) 'start_eltorito.S'; else $(CYGPATH_W) '$(srcdir)/start_eltorito.S'; fi`
vstafs_stage1_5_exec-start.o: start.S
$(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S
@@ -1234,6 +1318,28 @@ libgrub_a-fsys_ffs.obj: fsys_ffs.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`
libgrub_a-fsys_iso9660.o: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o libgrub_a-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" "$(DEPDIR)/libgrub_a-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='libgrub_a-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libgrub_a-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c
libgrub_a-fsys_iso9660.obj: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o libgrub_a-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" "$(DEPDIR)/libgrub_a-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='libgrub_a-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/libgrub_a-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`
libgrub_a-fsys_jfs.o: fsys_jfs.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" \
@am__fastdepCC_TRUE@ -c -o libgrub_a-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \
@@ -1718,6 +1824,28 @@ diskless_exec-fsys_ffs.obj: fsys_ffs.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`
diskless_exec-fsys_iso9660.o: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o diskless_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" "$(DEPDIR)/diskless_exec-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='diskless_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/diskless_exec-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/diskless_exec-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c
diskless_exec-fsys_iso9660.obj: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o diskless_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" "$(DEPDIR)/diskless_exec-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='diskless_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/diskless_exec-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/diskless_exec-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`
diskless_exec-fsys_jfs.o: fsys_jfs.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" \
@am__fastdepCC_TRUE@ -c -o diskless_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \
@@ -2400,6 +2528,138 @@ ffs_stage1_5_exec-bios.obj: bios.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`
iso9660_stage1_5_exec-common.o: common.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-common.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='iso9660_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c
iso9660_stage1_5_exec-common.obj: common.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-common.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='iso9660_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`
iso9660_stage1_5_exec-char_io.o: char_io.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='iso9660_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-char_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c
iso9660_stage1_5_exec-char_io.obj: char_io.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='iso9660_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-char_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`
iso9660_stage1_5_exec-disk_io.o: disk_io.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='iso9660_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-disk_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c
iso9660_stage1_5_exec-disk_io.obj: disk_io.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='iso9660_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-disk_io.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`
iso9660_stage1_5_exec-stage1_5.o: stage1_5.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='iso9660_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c
iso9660_stage1_5_exec-stage1_5.obj: stage1_5.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='iso9660_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`
iso9660_stage1_5_exec-fsys_iso9660.o: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='iso9660_stage1_5_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c
iso9660_stage1_5_exec-fsys_iso9660.obj: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='iso9660_stage1_5_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`
iso9660_stage1_5_exec-bios.o: bios.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-bios.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='iso9660_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c
iso9660_stage1_5_exec-bios.obj: bios.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" \
@am__fastdepCC_TRUE@ -c -o iso9660_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-bios.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='iso9660_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/iso9660_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/iso9660_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`
jfs_stage1_5_exec-common.o: common.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" \
@am__fastdepCC_TRUE@ -c -o jfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \
@@ -2906,6 +3166,28 @@ pre_stage2_exec-fsys_ffs.obj: fsys_ffs.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`
pre_stage2_exec-fsys_iso9660.o: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o pre_stage2_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='pre_stage2_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c
pre_stage2_exec-fsys_iso9660.obj: fsys_iso9660.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" \
@am__fastdepCC_TRUE@ -c -o pre_stage2_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \
@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po"; \
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo"; exit 1; \
@am__fastdepCC_TRUE@ fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='pre_stage2_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_iso9660.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`
pre_stage2_exec-fsys_jfs.o: fsys_jfs.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" \
@am__fastdepCC_TRUE@ -c -o pre_stage2_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \
@@ -3875,6 +4157,12 @@ stage2: pre_stage2 start
-rm -f stage2
cat start pre_stage2 > stage2
start_eltorito_exec-start.$(OBJEXT): stage2_size.h
stage2_eltorito: pre_stage2 start_eltorito
-rm -f stage2_eltorito
cat start_eltorito pre_stage2 > stage2_eltorito
diskless_size.h: diskless
-rm -f $@
set dummy `ls -l $^`; \
+7 -51
View File
@@ -938,9 +938,9 @@ realcseg:
/*
* int biosdisk_int13_extensions (int ah, int drive, void *dap)
* int biosdisk_int13_extensions (int ax, int drive, void *dap)
*
* Call IBM/MS INT13 Extensions (int 13 %ah=AH) for DRIVE. DAP
* Call IBM/MS INT13 Extensions (int 13 %ax=AX) for DRIVE. DAP
* is passed for disk address packet. If an error occurs, return
* non-zero, otherwise zero.
*/
@@ -950,6 +950,7 @@ ENTRY(biosdisk_int13_extensions)
movl %esp, %ebp
pushl %esi
pushl %ebx
/* compute the address of disk_address_packet */
movl 0x10(%ebp), %eax
@@ -960,13 +961,13 @@ ENTRY(biosdisk_int13_extensions)
/* drive */
movb 0xc(%ebp), %dl
/* ah */
movb 0x8(%ebp), %dh
/* ax */
movw 0x8(%ebp), %bx
/* enter real mode */
call EXT_C(prot_to_real)
.code16
movb %dh, %ah
movw %bx, %ax
movw %cx, %ds
int $0x13 /* do the operation */
movb %ah, %dl /* save return value */
@@ -979,6 +980,7 @@ ENTRY(biosdisk_int13_extensions)
movb %dl, %al /* return value in %eax */
popl %ebx
popl %esi
popl %ebp
@@ -1107,52 +1109,6 @@ ENTRY(check_int13_extensions)
ret
/*
* int get_diskinfo_int13_extensions (int drive, void *drp)
*
* Return the geometry of DRIVE in a drive parameters, DRP. If an error
* occurs, then return non-zero, otherwise zero.
*/
ENTRY(get_diskinfo_int13_extensions)
pushl %ebp
movl %esp, %ebp
pushl %ebx
pushl %esi
/* compute the address of drive parameters */
movl 0xc(%ebp), %eax
movw %ax, %si
xorw %ax, %ax
shrl $4, %eax
movw %ax, %bx /* save the segment into %bx */
/* drive */
movb 0x8(%ebp), %dl
/* enter real mode */
call EXT_C(prot_to_real)
.code16
movb $0x48, %ah
movw %bx, %ds
int $0x13 /* do the operation */
movb %ah, %bl /* save return value in %bl */
/* clear the data segment */
xorw %ax, %ax
movw %ax, %ds
/* back to protected mode */
DATA32 call EXT_C(real_to_prot)
.code32
movb %bl, %al /* return value in %eax */
popl %esi
popl %ebx
popl %ebp
ret
/*
* int get_diskinfo_standard (int drive, unsigned long *cylinders,
* unsigned long *heads, unsigned long *sectors)
+76 -7
View File
@@ -1,7 +1,7 @@
/* bios.c - implement C part of low-level BIOS disk input and output */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2003 Free Software Foundation, Inc.
* Copyright (C) 1999,2000,2003,2004 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
@@ -23,12 +23,11 @@
/* These are defined in asm.S, and never be used elsewhere, so declare the
prototypes here. */
extern int biosdisk_int13_extensions (int ah, int drive, void *dap);
extern int biosdisk_int13_extensions (int ax, int drive, void *dap);
extern int biosdisk_standard (int ah, int drive,
int coff, int hoff, int soff,
int nsec, int segment);
extern int check_int13_extensions (int drive);
extern int get_diskinfo_int13_extensions (int drive, void *drp);
extern int get_diskinfo_standard (int drive,
unsigned long *cylinders,
unsigned long *heads,
@@ -61,7 +60,7 @@ biosdisk (int read, int drive, struct geometry *geometry,
unsigned short blocks;
unsigned long buffer;
unsigned long long block;
} dap;
} __attribute__ ((packed)) dap;
/* XXX: Don't check the geometry by default, because some buggy
BIOSes don't return the number of total sectors correctly,
@@ -81,12 +80,15 @@ biosdisk (int read, int drive, struct geometry *geometry,
SEGMENT:ADDRESS. */
dap.buffer = segment << 16;
err = biosdisk_int13_extensions (read + 0x42, drive, &dap);
err = biosdisk_int13_extensions ((read + 0x42) << 8, drive, &dap);
/* #undef NO_INT13_FALLBACK */
#ifndef NO_INT13_FALLBACK
if (err)
{
if (geometry->flags & BIOSDISK_FLAG_CDROM)
return err;
geometry->flags &= ~BIOSDISK_FLAG_LBA_EXTENSION;
geometry->total_sectors = (geometry->cylinders
* geometry->heads
@@ -119,6 +121,63 @@ biosdisk (int read, int drive, struct geometry *geometry,
return err;
}
/* Check bootable CD-ROM emulation status. */
static int
get_cdinfo (int drive, struct geometry *geometry)
{
int err;
struct iso_spec_packet
{
unsigned char size;
unsigned char media_type;
unsigned char drive_no;
unsigned char controller_no;
unsigned long image_lba;
unsigned short device_spec;
unsigned short cache_seg;
unsigned short load_seg;
unsigned short length_sec512;
unsigned char cylinders;
unsigned char sectors;
unsigned char heads;
unsigned char dummy[16];
} __attribute__ ((packed)) cdrp;
grub_memset (&cdrp, 0, sizeof (cdrp));
cdrp.size = sizeof (cdrp) - sizeof (cdrp.dummy);
err = biosdisk_int13_extensions (0x4B01, drive, &cdrp);
if (! err && cdrp.drive_no == drive)
{
if ((cdrp.media_type & 0x0F) == 0)
{
/* No emulation bootable CD-ROM */
geometry->flags = BIOSDISK_FLAG_LBA_EXTENSION | BIOSDISK_FLAG_CDROM;
geometry->cylinders = 0;
geometry->heads = 1;
geometry->sectors = 15;
geometry->sector_size = 2048;
geometry->total_sectors = MAXINT;
return 1;
}
else
{
/* Floppy or hard-disk emulation */
geometry->cylinders
= ((unsigned int) cdrp.cylinders
+ (((unsigned int) (cdrp.sectors & 0xC0)) << 2));
geometry->heads = cdrp.heads;
geometry->sectors = cdrp.sectors & 0x3F;
geometry->sector_size = SECTOR_SIZE;
geometry->total_sectors = (geometry->cylinders
* geometry->heads
* geometry->sectors);
return -1;
}
}
return 0;
}
/* Return the geometry of DRIVE in GEOMETRY. If an error occurs, return
non-zero, otherwise zero. */
int
@@ -131,11 +190,19 @@ get_diskinfo (int drive, struct geometry *geometry)
if (drive & 0x80)
{
/* hard disk */
/* hard disk or CD-ROM */
int version;
unsigned long total_sectors = 0;
version = check_int13_extensions (drive);
if (drive >= 0x88 || version)
{
/* Possible CD-ROM - check the status. */
if (get_cdinfo (drive, geometry))
return 0;
}
if (version)
{
struct drive_parameters
@@ -177,7 +244,7 @@ get_diskinfo (int drive, struct geometry *geometry)
bytes. */
drp.size = sizeof (drp) - sizeof (drp.dummy);
err = get_diskinfo_int13_extensions (drive, &drp);
err = biosdisk_int13_extensions (0x4800, drive, &drp);
if (! err)
{
/* Set the LBA flag. */
@@ -216,6 +283,7 @@ get_diskinfo (int drive, struct geometry *geometry)
* geometry->sectors);
}
geometry->total_sectors = total_sectors;
geometry->sector_size = SECTOR_SIZE;
}
else
{
@@ -242,6 +310,7 @@ get_diskinfo (int drive, struct geometry *geometry)
geometry->total_sectors = (geometry->cylinders
* geometry->heads
* geometry->sectors);
geometry->sector_size = SECTOR_SIZE;
}
return 0;
+3 -2
View File
@@ -1720,7 +1720,7 @@ install_func (char *arg, int flags)
/* XXX: Probably SECTOR_SIZE is reasonable. */
char *config_filename = stage2_second_buffer + SECTOR_SIZE;
char *dummy = config_filename + SECTOR_SIZE;
int new_drive = 0xFF;
int new_drive = GRUB_INVALID_DRIVE;
int dest_drive, dest_partition, dest_sector;
int src_drive, src_partition, src_part_start;
int i;
@@ -2051,7 +2051,7 @@ install_func (char *arg, int flags)
/* If the drive where the Stage 2 resides is the same as
the one where the Stage 1.5 resides, do not embed the
drive number. */
current_drive = 0xFF;
current_drive = GRUB_INVALID_DRIVE;
}
device = (current_drive << 24) | current_partition;
@@ -3748,6 +3748,7 @@ setup_func (char *arg, int flags)
{"ext2fs", "/e2fs_stage1_5"},
{"fat", "/fat_stage1_5"},
{"ffs", "/ffs_stage1_5"},
{"iso9660", "/iso9660_stage1_5"},
{"jfs", "/jfs_stage1_5"},
{"minix", "/minix_stage1_5"},
{"reiserfs", "/reiserfs_stage1_5"},
+6
View File
@@ -1265,3 +1265,9 @@ grub_strcpy (char *dest, const char *src)
return dest;
}
#endif /* ! STAGE1_5 */
#ifndef GRUB_UTIL
# undef memcpy
/* GCC emits references to memcpy() for struct copies etc. */
void *memcpy (void *dest, const void *src, int n) __attribute__ ((alias ("grub_memmove")));
#endif
+2 -2
View File
@@ -1,7 +1,7 @@
/* cmdline.c - the device-independent GRUB text command line */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002 Free Software Foundation, Inc.
* Copyright (C) 1999,2000,2001,2002,2004 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
@@ -101,7 +101,7 @@ init_cmdline (void)
/* Initialization. */
saved_drive = boot_drive;
saved_partition = install_partition;
current_drive = 0xFF;
current_drive = GRUB_INVALID_DRIVE;
errnum = 0;
count_lines = -1;
+14 -1
View File
@@ -1,7 +1,7 @@
/* common.c - miscellaneous shared variables and routines */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002 Free Software Foundation, Inc.
* Copyright (C) 1999,2000,2001,2002,2004 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
@@ -32,6 +32,7 @@
struct multiboot_info mbi;
unsigned long saved_drive;
unsigned long saved_partition;
unsigned long cdrom_drive;
#ifndef STAGE1_5
unsigned long saved_mem_upper;
@@ -319,6 +320,18 @@ init_bios_info (void)
saved_drive = boot_drive;
saved_partition = install_partition;
/* Set cdrom drive. */
{
struct geometry geom;
/* Get the geometry. */
if (get_diskinfo (boot_drive, &geom)
|| ! (geom.flags & BIOSDISK_FLAG_CDROM))
cdrom_drive = GRUB_INVALID_DRIVE;
else
cdrom_drive = boot_drive;
}
/* Start main routine here. */
cmain ();
}
+89 -44
View File
@@ -1,7 +1,7 @@
/* disk_io.c - implement abstract BIOS disk input and output */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
* Copyright (C) 1999,2000,2001,2002,2003,2004 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
@@ -72,6 +72,9 @@ struct fsys_entry fsys_table[NUM_FSYS + 1] =
# ifdef FSYS_XFS
{"xfs", xfs_mount, xfs_read, xfs_dir, 0, 0},
# endif
#ifdef FSYS_ISO9660
{ "iso9660", iso9660_mount, iso9660_read, iso9660_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. */
# ifdef FSYS_FFS
@@ -83,7 +86,7 @@ struct fsys_entry fsys_table[NUM_FSYS + 1] =
/* These have the same format as "boot_drive" and "install_partition", but
are meant to be working values. */
unsigned long current_drive = 0xFF;
unsigned long current_drive = GRUB_INVALID_DRIVE;
unsigned long current_partition;
#ifndef STAGE1_5
@@ -121,17 +124,28 @@ struct geometry buf_geom;
int filepos;
int filemax;
static inline unsigned long
log2 (unsigned long word)
{
asm volatile ("bsfl %1,%0"
: "=r" (word)
: "r" (word));
return word;
}
int
rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
{
int slen = (byte_offset + byte_len + SECTOR_SIZE - 1) >> SECTOR_BITS;
int slen, sectors_per_vtrack;
int sector_size_bits = log2 (buf_geom.sector_size);
if (byte_len <= 0)
return 1;
while (byte_len > 0 && !errnum)
{
int soff, num_sect, bufaddr, track, size = byte_len;
int soff, num_sect, track, size = byte_len;
char *bufaddr;
/*
* Check track buffer. If it isn't valid or it is from the
@@ -146,6 +160,7 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
}
buf_drive = drive;
buf_track = -1;
sector_size_bits = log2 (buf_geom.sector_size);
}
/* Make sure that SECTOR is valid. */
@@ -155,15 +170,25 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
return 0;
}
/* Get first sector of track */
soff = sector % buf_geom.sectors;
slen = ((byte_offset + byte_len + buf_geom.sector_size - 1)
>> sector_size_bits);
/* Eliminate a buffer overflow. */
if ((buf_geom.sectors << sector_size_bits) > BUFFERLEN)
sectors_per_vtrack = (BUFFERLEN >> sector_size_bits);
else
sectors_per_vtrack = buf_geom.sectors;
/* Get the first sector of track. */
soff = sector % sectors_per_vtrack;
track = sector - soff;
num_sect = buf_geom.sectors - soff;
bufaddr = BUFFERADDR + (soff * SECTOR_SIZE) + byte_offset;
num_sect = sectors_per_vtrack - soff;
bufaddr = ((char *) BUFFERADDR
+ (soff << sector_size_bits) + byte_offset);
if (track != buf_track)
{
int bios_err, read_start = track, read_len = buf_geom.sectors;
int bios_err, read_start = track, read_len = sectors_per_vtrack;
/*
* If there's more than one read in this entire loop, then
@@ -174,7 +199,7 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
{
read_start = sector;
read_len = num_sect;
bufaddr = BUFFERADDR + byte_offset;
bufaddr = (char *) BUFFERADDR + byte_offset;
}
bios_err = biosdisk (BIOSDISK_READ, drive, &buf_geom,
@@ -196,7 +221,7 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
sector, slen, BUFFERSEG))
errnum = ERR_READ;
bufaddr = BUFFERADDR + byte_offset;
bufaddr = (char *) BUFFERADDR + byte_offset;
}
}
else
@@ -213,7 +238,8 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
{
/* We already read the sector 1, copy it to sector 0 */
memmove ((char *) BUFFERADDR,
(char *) BUFFERADDR + SECTOR_SIZE, SECTOR_SIZE);
(char *) BUFFERADDR + buf_geom.sector_size,
buf_geom.sector_size);
}
else
{
@@ -224,8 +250,8 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
}
}
if (size > ((num_sect * SECTOR_SIZE) - byte_offset))
size = (num_sect * SECTOR_SIZE) - byte_offset;
if (size > ((num_sect << sector_size_bits) - byte_offset))
size = (num_sect << sector_size_bits) - byte_offset;
/*
* Instrumentation to tell which sectors were read and used.
@@ -233,28 +259,27 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf)
if (disk_read_func)
{
int sector_num = sector;
int length = SECTOR_SIZE - byte_offset;
int length = buf_geom.sector_size - byte_offset;
if (length > size)
length = size;
(*disk_read_func) (sector_num++, byte_offset, length);
length = size - length;
if (length > 0)
{
while (length > SECTOR_SIZE)
while (length > buf_geom.sector_size)
{
(*disk_read_func) (sector_num++, 0, SECTOR_SIZE);
length -= SECTOR_SIZE;
(*disk_read_func) (sector_num++, 0, buf_geom.sector_size);
length -= buf_geom.sector_size;
}
(*disk_read_func) (sector_num, 0, length);
}
}
memmove (buf, (char *) bufaddr, size);
grub_memmove (buf, bufaddr, size);
buf += size;
byte_len -= size;
sector += num_sect;
slen -= num_sect;
byte_offset = 0;
}
@@ -371,7 +396,8 @@ sane_partition (void)
return 1;
if (!(current_partition & 0xFF000000uL)
&& (current_drive & 0xFFFFFF7F) < 8
&& ((current_drive & 0xFFFFFF7F) < 8
|| current_drive == cdrom_drive)
&& (current_partition & 0xFF) == 0xFF
&& ((current_partition & 0xFF00) == 0xFF00
|| (current_partition & 0xFF00) < 0x800)
@@ -918,8 +944,8 @@ set_device (char *device)
int drive = (dev >> 24) & 0xFF;
int partition = dev & 0xFFFFFF;
/* If DRIVE is disabled (0xFF), use SAVED_DRIVE instead. */
if (drive == 0xFF)
/* If DRIVE is disabled, use SAVED_DRIVE instead. */
if (drive == GRUB_INVALID_DRIVE)
current_drive = saved_drive;
else
current_drive = drive;
@@ -949,10 +975,12 @@ set_device (char *device)
{
char ch = *device;
#ifdef SUPPORT_NETBOOT
if (*device == 'f' || *device == 'h' ||
(*device == 'n' && network_ready))
if (*device == 'f' || *device == 'h'
|| (*device == 'n' && network_ready)
|| (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE))
#else
if (*device == 'f' || *device == 'h')
if (*device == 'f' || *device == 'h'
|| (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE))
#endif /* SUPPORT_NETBOOT */
{
/* user has given '([fhn]', check for resp. add 'd' and
@@ -968,26 +996,31 @@ set_device (char *device)
return device + 2;
}
if ((*device == 'f'
|| *device == 'h'
#ifdef SUPPORT_NETBOOT
if ((*device == 'f' || *device == 'h' ||
(*device == 'n' && network_ready))
#else
if ((*device == 'f' || *device == 'h')
#endif /* SUPPORT_NETBOOT */
|| (*device == 'n' && network_ready)
#endif
|| (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE))
&& (device += 2, (*(device - 1) != 'd')))
errnum = ERR_NUMBER_PARSING;
#ifdef SUPPORT_NETBOOT
if (ch == 'n' && network_ready)
current_drive = NETWORK_DRIVE;
else
#endif /* SUPPORT_NETBOOT */
{
safe_parse_maxint (&device, (int *) &current_drive);
disk_choice = 0;
if (ch == 'h')
current_drive += 0x80;
if (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE)
current_drive = cdrom_drive;
else
{
safe_parse_maxint (&device, (int *) &current_drive);
disk_choice = 0;
if (ch == 'h')
current_drive += 0x80;
}
}
}
@@ -1145,7 +1178,7 @@ setup_part (char *filename)
if (! (filename = set_device (filename)))
{
current_drive = 0xFF;
current_drive = GRUB_INVALID_DRIVE;
return 0;
}
@@ -1162,7 +1195,7 @@ setup_part (char *filename)
{
if ((filename = set_device (filename)) == 0)
{
current_drive = 0xFF;
current_drive = GRUB_INVALID_DRIVE;
return 0;
}
# ifndef NO_BLOCK_FILES
@@ -1337,9 +1370,12 @@ print_completions (int is_filename, int is_completion)
if (! is_completion)
grub_printf (" Possible disks are: ");
if (!ptr
|| *(ptr-1) != 'd'
#ifdef SUPPORT_NETBOOT
if (!ptr || *(ptr-1) != 'd' || *(ptr-2) != 'n')
|| *(ptr-2) != 'n'
#endif /* SUPPORT_NETBOOT */
|| *(ptr-2) != 'c')
{
for (i = (ptr && (*(ptr-1) == 'd' && *(ptr-2) == 'h') ? 1:0);
i < (ptr && (*(ptr-1) == 'd' && *(ptr-2) == 'f') ? 1:2);
@@ -1359,11 +1395,20 @@ print_completions (int is_filename, int is_completion)
}
}
}
if (cdrom_drive != GRUB_INVALID_DRIVE
&& (disk_choice || cdrom_drive == current_drive)
&& (!ptr
|| *(ptr-1) == '('
|| (*(ptr-1) == 'd' && *(ptr-2) == 'c')))
print_a_completion ("cd");
# ifdef SUPPORT_NETBOOT
if (network_ready &&
(disk_choice || NETWORK_DRIVE == current_drive) &&
(!ptr || *(ptr-1) == '(' ||
(*(ptr-1) == 'd' && *(ptr-2) == 'n')))
if (network_ready
&& (disk_choice || NETWORK_DRIVE == current_drive)
&& (!ptr
|| *(ptr-1) == '('
|| (*(ptr-1) == 'd' && *(ptr-2) == 'n')))
print_a_completion ("nd");
# endif /* SUPPORT_NETBOOT */
+11 -2
View File
@@ -1,7 +1,7 @@
/* filesys.h - abstract filesystem interface */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
* Copyright (C) 1999,2000,2001,2004 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
@@ -105,11 +105,20 @@ void tftp_close (void);
#define FSYS_TFTP_NUM 0
#endif
#ifdef FSYS_ISO9660
#define FSYS_ISO9660_NUM 1
int iso9660_mount (void);
int iso9660_read (char *buf, int len);
int iso9660_dir (char *dirname);
#else
#define FSYS_ISO9660_NUM 0
#endif
#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_JFS_NUM + FSYS_XFS_NUM \
+ FSYS_TFTP_NUM)
+ FSYS_TFTP_NUM + FSYS_ISO9660_NUM)
#endif
/* defines for the block filesystem info area */
+442
View File
@@ -0,0 +1,442 @@
/*
* ISO 9660 filesystem backend for GRUB (GRand Unified Bootloader)
* including Rock Ridge Extensions support
*
* Copyright (C) 1998, 1999 Kousuke Takai <tak@kmc.kyoto-u.ac.jp>
*
* 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.
*/
/*
* References:
* linux/fs/isofs/rock.[ch]
* mkisofs-1.11.1/diag/isoinfo.c
* mkisofs-1.11.1/iso9660.h
* (all are written by Eric Youngdale)
*
* Modifications by:
* Leonid Lisovskiy <lly@pisem.net> 2003
*/
#ifdef FSYS_ISO9660
#include "shared.h"
#include "filesys.h"
#include "iso9660.h"
/* iso9660 super-block data in memory */
struct iso_sb_info {
unsigned long vol_sector;
};
/* iso fs inode data in memory */
struct iso_inode_info {
unsigned long file_start;
};
#define ISO_SUPER \
((struct iso_sb_info *)(FSYS_BUF))
#define INODE \
((struct iso_inode_info *)(FSYS_BUF+sizeof(struct iso_sb_info)))
#define PRIMDESC ((struct iso_primary_descriptor *)(FSYS_BUF + 2048))
#define DIRREC ((struct iso_directory_record *)(FSYS_BUF + 4096))
#define RRCONT_BUF ((unsigned char *)(FSYS_BUF + 6144))
#define NAME_BUF ((unsigned char *)(FSYS_BUF + 8192))
static inline unsigned long
log2 (unsigned long word)
{
asm volatile ("bsfl %1,%0"
: "=r" (word)
: "r" (word));
return word;
}
static int
iso9660_devread (int sector, int byte_offset, int byte_len, char *buf)
{
unsigned short sector_size_lg2 = log2(buf_geom.sector_size);
/*
* We have to use own devread() function since BIOS return wrong geometry
*/
if (sector < 0)
{
errnum = ERR_OUTSIDE_PART;
return 0;
}
if (byte_len <= 0)
return 1;
sector += (byte_offset >> sector_size_lg2);
byte_offset &= (buf_geom.sector_size - 1);
asm volatile ("shl%L0 %1,%0"
: "=r"(sector)
: "Ic"((int8_t)(ISO_SECTOR_BITS - sector_size_lg2)),
"0"(sector));
#if !defined(STAGE1_5)
if (disk_read_hook && debug)
printf ("<%d, %d, %d>", sector, byte_offset, byte_len);
#endif /* !STAGE1_5 */
return rawread(current_drive, part_start + sector, byte_offset, byte_len, buf);
}
int
iso9660_mount (void)
{
unsigned int sector;
/*
* Because there is no defined slice type ID for ISO-9660 filesystem,
* this test will pass only either (1) if entire disk is used, or
* (2) if current partition is BSD style sub-partition whose ID is
* ISO-9660.
*/
if ((current_partition != 0xFFFFFF)
&& !IS_PC_SLICE_TYPE_BSD_WITH_FS(current_slice, FS_ISO9660))
return 0;
/*
* Currently, only FIRST session of MultiSession disks are supported !!!
*/
for (sector = 16 ; sector < 32 ; sector++)
{
if (!iso9660_devread(sector, 0, sizeof(*PRIMDESC), (char *)PRIMDESC))
break;
/* check ISO_VD_PRIMARY and ISO_STANDARD_ID */
if (PRIMDESC->type.l == ISO_VD_PRIMARY
&& !__builtin_memcmp(PRIMDESC->id, ISO_STANDARD_ID, sizeof(PRIMDESC->id)))
{
ISO_SUPER->vol_sector = sector;
INODE->file_start = 0;
fsmax = PRIMDESC->volume_space_size.l;
return 1;
}
}
return 0;
}
int
iso9660_dir (char *dirname)
{
struct iso_directory_record *idr;
RR_ptr_t rr_ptr;
struct rock_ridge *ce_ptr;
unsigned int pathlen;
int size;
unsigned int extent;
unsigned char file_type;
unsigned int rr_len;
unsigned char rr_flag;
idr = &PRIMDESC->root_directory_record;
INODE->file_start = 0;
do
{
while (*dirname == '/') /* skip leading slashes */
dirname++;
/* pathlen = strcspn(dirname, "/\n\t "); */
for (pathlen = 0 ;
dirname[pathlen]
&& !isspace(dirname[pathlen]) && dirname[pathlen] != '/' ;
pathlen++)
;
size = idr->size.l;
extent = idr->extent.l;
while (size > 0)
{
if (!iso9660_devread(extent, 0, ISO_SECTOR_SIZE, (char *)DIRREC))
{
errnum = ERR_FSYS_CORRUPT;
return 0;
}
extent++;
idr = (struct iso_directory_record *)DIRREC;
for (; idr->length.l > 0;
idr = (struct iso_directory_record *)((char *)idr + idr->length.l) )
{
const char *name = idr->name;
unsigned int name_len = idr->name_len.l;
file_type = (idr->flags.l & 2) ? ISO_DIRECTORY : ISO_REGULAR;
if (name_len == 1)
{
if ((name[0] == 0) || /* self */
(name[0] == 1)) /* parent */
continue;
}
if (name_len > 2 && CHECK2(name + name_len - 2, ';', '1'))
{
name_len -= 2; /* truncate trailing file version */
if (name_len > 1 && name[name_len - 1] == '.')
name_len--; /* truncate trailing dot */
}
/*
* Parse Rock-Ridge extension
*/
rr_len = (idr->length.l - idr->name_len.l
- sizeof(struct iso_directory_record)
+ sizeof(idr->name));
rr_ptr.ptr = ((unsigned char *)idr + idr->name_len.l
+ sizeof(struct iso_directory_record)
- sizeof(idr->name));
if (rr_ptr.i & 1)
rr_ptr.i++, rr_len--;
ce_ptr = NULL;
rr_flag = RR_FLAG_NM | RR_FLAG_PX /*| RR_FLAG_SL*/;
while (rr_len >= 4)
{
if (rr_ptr.rr->version != 1)
{
#ifndef STAGE1_5
if (debug)
printf(
"Non-supported version (%d) RockRidge chunk "
"`%c%c'\n", rr_ptr.rr->version,
rr_ptr.rr->signature & 0xFF,
rr_ptr.rr->signature >> 8);
#endif
}
else
{
switch (rr_ptr.rr->signature)
{
case RRMAGIC('R', 'R'):
if ( rr_ptr.rr->len >= (4+sizeof(struct RR)))
rr_flag &= rr_ptr.rr->u.rr.flags.l;
break;
case RRMAGIC('N', 'M'):
name = rr_ptr.rr->u.nm.name;
name_len = rr_ptr.rr->len - (4+sizeof(struct NM));
rr_flag &= ~RR_FLAG_NM;
break;
case RRMAGIC('P', 'X'):
if (rr_ptr.rr->len >= (4+sizeof(struct PX)))
{
file_type = ((rr_ptr.rr->u.px.mode.l & POSIX_S_IFMT)
== POSIX_S_IFREG
? ISO_REGULAR
: ((rr_ptr.rr->u.px.mode.l & POSIX_S_IFMT)
== POSIX_S_IFDIR
? ISO_DIRECTORY : ISO_OTHER));
rr_flag &= ~RR_FLAG_PX;
}
break;
case RRMAGIC('C', 'E'):
if (rr_ptr.rr->len >= (4+sizeof(struct CE)))
ce_ptr = rr_ptr.rr;
break;
#if 0 // RockRidge symlinks are not supported yet
case RRMAGIC('S', 'L'):
{
int slen;
unsigned char rootflag, prevflag;
char *rpnt = NAME_BUF+1024;
struct SL_component *slp;
slen = rr_ptr.rr->len - (4+1);
slp = &rr_ptr.rr->u.sl.link;
while (slen > 1)
{
rootflag = 0;
switch (slp->flags.l)
{
case 0:
memcpy(rpnt, slp->text, slp->len);
rpnt += slp->len;
break;
case 4:
*rpnt++ = '.';
/* fallthru */
case 2:
*rpnt++ = '.';
break;
case 8:
rootflag = 1;
*rpnt++ = '/';
break;
default:
printf("Symlink component flag not implemented (%d)\n",
slp->flags.l);
slen = 0;
break;
}
slen -= slp->len + 2;
prevflag = slp->flags.l;
slp = (struct SL_component *) ((char *) slp + slp->len + 2);
if (slen < 2)
{
/*
* If there is another SL record, and this component
* record isn't continued, then add a slash.
*/
if ((!rootflag) && (rr_ptr.rr->u.sl.flags.l & 1) && !(prevflag & 1))
*rpnt++='/';
break;
}
/*
* If this component record isn't continued, then append a '/'.
*/
if (!rootflag && !(prevflag & 1))
*rpnt++ = '/';
}
*rpnt++ = '\0';
grub_putstr(NAME_BUF+1024);// debug print!
}
rr_flag &= ~RR_FLAG_SL;
break;
#endif
default:
break;
}
}
if (!rr_flag)
/*
* There is no more extension we expects...
*/
break;
rr_len -= rr_ptr.rr->len;
rr_ptr.ptr += rr_ptr.rr->len;
if (rr_len < 4 && ce_ptr != NULL)
{
/* preserve name before loading new extent. */
if( RRCONT_BUF <= (unsigned char *)name
&& (unsigned char *)name < RRCONT_BUF + ISO_SECTOR_SIZE )
{
memcpy(NAME_BUF, name, name_len);
name = NAME_BUF;
}
rr_ptr.ptr = RRCONT_BUF + ce_ptr->u.ce.offset.l;
rr_len = ce_ptr->u.ce.size.l;
if (!iso9660_devread(ce_ptr->u.ce.extent.l, 0, ISO_SECTOR_SIZE, RRCONT_BUF))
{
errnum = 0; /* this is not fatal. */
break;
}
ce_ptr = NULL;
}
} /* rr_len >= 4 */
filemax = MAXINT;
if (name_len >= pathlen
&& !__builtin_memcmp(name, dirname, pathlen))
{
if (dirname[pathlen] == '/' || !print_possibilities)
{
/*
* DIRNAME is directory component of pathname,
* or we are to open a file.
*/
if (pathlen == name_len)
{
if (dirname[pathlen] == '/')
{
if (file_type != ISO_DIRECTORY)
{
errnum = ERR_BAD_FILETYPE;
return 0;
}
goto next_dir_level;
}
if (file_type != ISO_REGULAR)
{
errnum = ERR_BAD_FILETYPE;
return 0;
}
INODE->file_start = idr->extent.l;
filepos = 0;
filemax = idr->size.l;
return 1;
}
}
else /* Completion */
{
#ifndef STAGE1_5
if (print_possibilities > 0)
print_possibilities = -print_possibilities;
memcpy(NAME_BUF, name, name_len);
NAME_BUF[name_len] = '\0';
print_a_completion (NAME_BUF);
#endif
}
}
} /* for */
size -= ISO_SECTOR_SIZE;
} /* size>0 */
if (dirname[pathlen] == '/' || print_possibilities >= 0)
{
errnum = ERR_FILE_NOT_FOUND;
return 0;
}
next_dir_level:
dirname += pathlen;
} while (*dirname == '/');
return 1;
}
int
iso9660_read (char *buf, int len)
{
int sector, blkoffset, size, ret;
if (INODE->file_start == 0)
return 0;
ret = 0;
blkoffset = filepos & (ISO_SECTOR_SIZE - 1);
sector = filepos >> ISO_SECTOR_BITS;
while (len > 0)
{
size = ISO_SECTOR_SIZE - blkoffset;
if (size > len)
size = len;
disk_read_func = disk_read_hook;
if (!iso9660_devread(INODE->file_start + sector, blkoffset, size, buf))
return 0;
disk_read_func = NULL;
len -= size;
buf += size;
ret += size;
filepos += size;
sector++;
blkoffset = 0;
}
return ret;
}
#endif /* FSYS_ISO9660 */
+206
View File
@@ -0,0 +1,206 @@
/*
* ISO 9660 filesystem backend for GRUB (GRand Unified Bootloader)
* including Rock Ridge Extensions support
*
* Copyright (C) 1998, 1999 Kousuke Takai <tak@kmc.kyoto-u.ac.jp>
*
* 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.
*/
/*
* References:
* linux/fs/isofs/rock.[ch]
* mkisofs-1.11.1/diag/isoinfo.c
* mkisofs-1.11.1/iso9660.h
* (all are written by Eric Youngdale)
*/
#ifndef _ISO9660_H_
#define _ISO9660_H_
#define ISO_SECTOR_BITS (11)
#define ISO_SECTOR_SIZE (1<<ISO_SECTOR_BITS)
#define ISO_REGULAR 1 /* regular file */
#define ISO_DIRECTORY 2 /* directory */
#define ISO_OTHER 0 /* other file (with Rock Ridge) */
#define RR_FLAG_PX 0x01 /* have POSIX file attributes */
#define RR_FLAG_PN 0x02 /* POSIX devices */
#define RR_FLAG_SL 0x04 /* Symbolic link */
#define RR_FLAG_NM 0x08 /* have alternate file name */
#define RR_FLAG_CL 0x10 /* Child link */
#define RR_FLAG_PL 0x20 /* Parent link */
#define RR_FLAG_RE 0x40 /* Relocation directory */
#define RR_FLAG_TF 0x80 /* Timestamps */
/* POSIX file attributes for Rock Ridge extensions */
#define POSIX_S_IFMT 0xF000
#define POSIX_S_IFREG 0x8000
#define POSIX_S_IFDIR 0x4000
/* volume descriptor types */
#define ISO_VD_PRIMARY 1
#define ISO_VD_END 255
#define ISO_STANDARD_ID "CD001"
#ifndef ASM_FILE
#ifndef __BIT_TYPES_DEFINED__
typedef int int8_t __attribute__((mode(QI)));
typedef unsigned int u_int8_t __attribute__((mode(QI)));
typedef int int16_t __attribute__((mode(HI)));
typedef unsigned int u_int16_t __attribute__((mode(HI)));
typedef int int32_t __attribute__((mode(SI)));
typedef unsigned int u_int32_t __attribute__((mode(SI)));
#endif
typedef union {
u_int8_t l,b;
} iso_8bit_t;
typedef struct __iso_16bit {
u_int16_t l, b;
} iso_16bit_t __attribute__ ((packed));
typedef struct __iso_32bit {
u_int32_t l, b;
} iso_32bit_t __attribute__ ((packed));
typedef u_int8_t iso_date_t[7];
struct iso_directory_record {
iso_8bit_t length;
iso_8bit_t ext_attr_length;
iso_32bit_t extent;
iso_32bit_t size;
iso_date_t date;
iso_8bit_t flags;
iso_8bit_t file_unit_size;
iso_8bit_t interleave;
iso_16bit_t volume_seq_number;
iso_8bit_t name_len;
u_int8_t name[1];
} __attribute__ ((packed));
struct iso_primary_descriptor {
iso_8bit_t type;
u_int8_t id[5];
iso_8bit_t version;
u_int8_t _unused1[1];
u_int8_t system_id[32];
u_int8_t volume_id[32];
u_int8_t _unused2[8];
iso_32bit_t volume_space_size;
u_int8_t _unused3[32];
iso_16bit_t volume_set_size;
iso_16bit_t volume_seq_number;
iso_16bit_t logical_block_size;
iso_32bit_t path_table_size;
u_int8_t type_l_path_table[4];
u_int8_t opt_type_l_path_table[4];
u_int8_t type_m_path_table[4];
u_int8_t opt_type_m_path_table[4];
struct iso_directory_record root_directory_record;
u_int8_t volume_set_id[128];
u_int8_t publisher_id[128];
u_int8_t preparer_id[128];
u_int8_t application_id[128];
u_int8_t copyright_file_id[37];
u_int8_t abstract_file_id[37];
u_int8_t bibliographic_file_id[37];
u_int8_t creation_date[17];
u_int8_t modification_date[17];
u_int8_t expiration_date[17];
u_int8_t effective_date[17];
iso_8bit_t file_structure_version;
u_int8_t _unused4[1];
u_int8_t application_data[512];
u_int8_t _unused5[653];
} __attribute__ ((packed));
struct rock_ridge {
u_int16_t signature;
u_int8_t len;
u_int8_t version;
union {
struct SP {
u_int16_t magic;
u_int8_t skip;
} sp;
struct CE {
iso_32bit_t extent;
iso_32bit_t offset;
iso_32bit_t size;
} ce;
struct ER {
u_int8_t len_id;
u_int8_t len_des;
u_int8_t len_src;
u_int8_t ext_ver;
u_int8_t data[0];
} er;
struct RR {
iso_8bit_t flags;
} rr;
struct PX {
iso_32bit_t mode;
iso_32bit_t nlink;
iso_32bit_t uid;
iso_32bit_t gid;
} px;
struct PN {
iso_32bit_t dev_high;
iso_32bit_t dev_low;
} pn;
struct SL {
iso_8bit_t flags;
struct SL_component {
iso_8bit_t flags;
u_int8_t len;
u_int8_t text[0];
} link;
} sl;
struct NM {
iso_8bit_t flags;
u_int8_t name[0];
} nm;
struct CL {
iso_32bit_t location;
} cl;
struct PL {
iso_32bit_t location;
} pl;
struct TF {
iso_8bit_t flags;
iso_date_t times[0];
} tf;
} u;
} __attribute__ ((packed));
typedef union RR_ptr {
struct rock_ridge *rr;
char *ptr;
int i;
} RR_ptr_t;
#define RRMAGIC(c1, c2) ((c1)|(c2) << 8)
#define CHECK2(ptr, c1, c2) \
(*(unsigned short *)(ptr) == (((c1) | (c2) << 8) & 0xFFFF))
#endif /* !ASM_FILE */
#endif /* _ISO9660_H_ */
+11 -4
View File
@@ -73,10 +73,11 @@ extern char *grub_scratch_mem;
/*
* BIOS disk defines
*/
#define BIOSDISK_READ 0x0
#define BIOSDISK_WRITE 0x1
#define BIOSDISK_ERROR_GEOMETRY 0x100
#define BIOSDISK_FLAG_LBA_EXTENSION 0x1
#define BIOSDISK_READ 0x0
#define BIOSDISK_WRITE 0x1
#define BIOSDISK_ERROR_GEOMETRY 0x100
#define BIOSDISK_FLAG_LBA_EXTENSION 0x1
#define BIOSDISK_FLAG_CDROM 0x2
/*
* This is the filesystem (not raw device) buffer.
@@ -205,6 +206,7 @@ extern char *grub_scratch_mem;
#define STAGE2_ID_VSTAFS_STAGE1_5 6
#define STAGE2_ID_JFS_STAGE1_5 7
#define STAGE2_ID_XFS_STAGE1_5 8
#define STAGE2_ID_ISO9660_STAGE1_5 9
#ifndef STAGE1_5
# define STAGE2_ID STAGE2_ID_STAGE2
@@ -225,6 +227,8 @@ extern char *grub_scratch_mem;
# define STAGE2_ID STAGE2_ID_JFS_STAGE1_5
# elif defined(FSYS_XFS)
# define STAGE2_ID STAGE2_ID_XFS_STAGE1_5
# elif defined(FSYS_ISO9660)
# define STAGE2_ID STAGE2_ID_ISO9660_STAGE1_5
# else
# error "unknown Stage 2"
# endif
@@ -634,6 +638,8 @@ struct geometry
unsigned long sectors;
/* The total number of sectors */
unsigned long total_sectors;
/* Device sector size */
unsigned long sector_size;
/* Flags */
unsigned long flags;
};
@@ -658,6 +664,7 @@ extern int filemax;
extern struct multiboot_info mbi;
extern unsigned long saved_drive;
extern unsigned long saved_partition;
extern unsigned long cdrom_drive;
#ifndef STAGE1_5
extern unsigned long saved_mem_upper;
extern unsigned long extended_memory;
+2 -2
View File
@@ -1,6 +1,6 @@
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
* Copyright (C) 2000,2001,2002,2004 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
@@ -661,7 +661,7 @@ restart:
saved_drive = boot_drive;
saved_partition = install_partition;
current_drive = 0xFF;
current_drive = GRUB_INVALID_DRIVE;
if (! get_cmdline (PACKAGE " edit> ", new_heap,
NEW_HEAPSIZE + 1, 0, 1))
+326
View File
@@ -0,0 +1,326 @@
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1994-2002 H. Peter Anvin
* Copyright (C) 1999,2000,2001,2004 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.
*
*/
/*
Most of this file was originally "isolinux.asm" from SYSLINUX package.
It has been very heavily modified.
*/
#define ASM_FILE
#include "stage1.h"
#include "shared.h"
#include "iso9660.h"
#ifndef STAGE1_5
#include "stage2_size.h"
#endif
/* Absolute addresses
This makes the assembler generate the address without support
from the linker. (ELF can't relocate 16-bit addresses!) */
#define ABS(x) (x-_start+BOOTSEC_LOCATION)
#ifdef STAGE1_5
# define STAGE_ADDR 0x2000
#else
# define STAGE_ADDR 0x8000
#endif /* STAGE1_5 */
/* Print message string */
#define MSG(x) mov $ABS(x), %si; call message;
.file "start_eltorito.S"
.text
/* Tell GAS to generate 16-bit instructions so that this code works
in real mode. */
.code16
.globl start, _start
/*
* Primary entry point. Because BIOSes are buggy, we only load the first
* CD-ROM sector (2K) of the file, so the number one priority is actually
* loading the rest.
*/
start:
_start:
cli
ljmp $0, $ABS(real_start)
. = _start + 8 /* Pad to file offset 8 */
/* This table gets filled in by mkisofs using the
-boot-info-table option */
bi_pvd: .long 0xDEADBEEF /* LBA of primary volume descript */
bi_file: .long 0xDEADBEEF /* LBA of boot file */
bi_length: .long 0xDEADBEEF /* Length of boot file */
bi_csum: .long 0xDEADBEEF /* Checksum of boot file */
bi_reserved: .space (10*4) /* Reserved */
real_start:
xor %ax, %ax
mov %ax, %ss
mov %ax, %ds
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
mov $STAGE1_STACKSEG, %sp /* set up the REAL stack */
sti
cld
/* save drive reference first thing! */
mov %dl, ABS(BootDrive)
/* print a notification message on the screen */
MSG(notification_string)
load_image:
/* Set up boot file sector, size, load address */
mov ABS(bi_length), %eax
add $(ISO_SECTOR_SIZE-1), %eax
shr $ISO_SECTOR_BITS, %eax /* dwords->sectors */
mov %ax, %bp /* boot file sectors */
mov $(STAGE_ADDR >> 4), %bx
mov %bx, %es
xor %bx, %bx
mov ABS(bi_file), %eax
call getlinsec
mov %ds, %ax
mov %ax, %es
MSG(notification_done)
bootit:
/* save the sector number of the second sector in %ebp */
mov $ABS(firstlist - BOOTSEC_LISTSIZE), %si
mov (%si), %ebp
mov ABS(BootDrive), %dl /* this makes sure %dl is our "boot" drive */
ljmp $0, $(STAGE_ADDR+SECTOR_SIZE) /* jump to main() in asm.S */
/* go here when you need to stop the machine hard after an error condition */
stop: jmp stop
/*
* Get linear sectors - EBIOS LBA addressing, 2048-byte sectors.
*
* Note that we can't always do this as a single request, because at least
* Phoenix BIOSes has a 127-sector limit. To be on the safe side, stick
* to 16 sectors (32K) per request.
*
* Input:
* EAX - Linear sector number
* ES:BX - Target buffer
* BP - Sector count
*/
getlinsec:
mov $ABS(dapa), %si /* Load up the DAPA */
mov %bx, 4(%si)
mov %es, %bx
mov %bx, 6(%si)
mov %eax, 8(%si)
1:
push %bp
push %si
cmp ABS(MaxTransfer), %bp
jbe 2f
mov ABS(MaxTransfer), %bp
2:
mov %bp, 2(%si)
mov ABS(BootDrive), %dl
mov $0x42, %ah /* Extended Read */
call xint13
pop %si
pop %bp
movzwl 2(%si), %eax /* Sectors we read */
add %eax, 8(%si) /* Advance sector pointer */
sub %ax, %bp /* Sectors left */
shl $(ISO_SECTOR_BITS-4), %ax /* 2048-byte sectors -> segment */
add %ax, 6(%si) /* Advance buffer pointer */
pushal
MSG(notification_step)
popal
cmp $0, %bp
ja 1b
mov 8(%si), %eax /* Return next sector */
ret
/*
* INT 13h with retry
*/
xint13:
movb $6, ABS(RetryCount)
pushal
.try:
int $0x13
jc 1f
add $(8*4), %sp /* Clean up stack */
ret
1:
mov %ah, %dl /* Save error code */
decb ABS(RetryCount)
jz .real_error
mov ABS(RetryCount), %al
mov ABS(dapa+2), %ah /* Sector transfer count */
cmp $2, %al /* Only 2 attempts left */
ja 2f
mov $1, %ah /* Drop transfer size to 1 */
jmp .setmaxtr
2:
cmp $3, %al
ja 3f /* First time, just try again */
shr $1, %ah /* Otherwise, try to reduce */
adc $0, %ah /* the max transfer size, but not */
.setmaxtr:
mov %ah, ABS(MaxTransfer)
mov %ah, ABS(dapa+2)
3:
popal
jmp .try
.real_error:
MSG(read_error_string)
mov %dl, %al
call printhex2
popal
jmp stop
/*
* message: write the string pointed to by %si
*
* WARNING: trashes %si, %ax, and %bx
*/
/*
* Use BIOS "int 10H Function 0Eh" to write character in teletype mode
* %ah = 0xe %al = character
* %bh = page %bl = foreground color (graphics modes)
*/
1:
mov $0x0001, %bx
mov $0x0E, %ah
int $0x10 /* display a byte */
message:
lodsb
or %al, %al
jne 1b /* if not end of string, jmp to display */
ret
/*
* printhex[248]: Write a hex number in (AL, AX, EAX) to the console
*/
printhex2:
pushal
rol $24, %eax
mov $2, %cx
jmp 1f
printhex4:
pushal
rol $16, %eax
mov $4, %cx
jmp 1f
printhex8:
pushal
mov $8, %cx
1:
rol $4, %eax
push %eax
and $0x0F, %al
cmp $10, %al
jae .high
.low: add $('0'), %al
jmp 2f
.high: add $('A'-10), %al
2:
mov $0x0001, %bx
mov $0x0E, %ah
int $0x10 /* display a char */
pop %eax
loop 1b
popal
ret
/**************************************************************************/
#ifdef STAGE1_5
notification_string: .string "Loading stage1.5 "
#else
notification_string: .string "Loading stage2 "
#endif
notification_step: .string "."
notification_done: .string "\r\n"
read_error_string: .string "Read error 0x"
/*
* EBIOS disk address packet
*/
.align 8
dapa: .byte 16 /* Packet size */
.byte 0 /* reserved */
.word 0 /* +2 Block count */
.word 0 /* +4 Offset of buffer */
.word 0 /* +6 Segment of buffer */
.long 0 /* +8 LBA (LSW) */
.long 0 /* +C LBA (MSW) */
VARIABLE(BootDrive)
.byte 0xFF
VARIABLE(MaxTransfer)
.word 16 /* Max sectors per transfer (32Kb) */
VARIABLE(RetryCount)
.byte 0
/*
* This area is an empty space between the main body of code below which
* grows up (fixed after compilation, but between releases it may change
* in size easily), and the lists of sectors to read, which grows down
* from a fixed top location.
*/
.word 0
.word 0
. = _start + SECTOR_SIZE - BOOTSEC_LISTSIZE
/* fill the first data listing with the default */
blocklist_default_start:/* this is the sector start parameter, in logical
sectors from the start of the disk, sector 0 */
.long 0
blocklist_default_len: /* this is the number of sectors to read */
#ifdef STAGE1_5
.word 0
#else
.word (STAGE2_SIZE + ISO_SECTOR_SIZE - 1) >> ISO_SECTOR_BITS
#endif
blocklist_default_seg: /* this is the segment of the starting address
to load the data into */
.word (STAGE_ADDR + SECTOR_SIZE) >> 4
firstlist: /* this label has to be after the list data!!! */