now stage1 supports both LBA and CHS.
This commit is contained in:
parent
bd47df86dc
commit
3764236446
14 changed files with 761 additions and 691 deletions
79
ChangeLog
79
ChangeLog
|
@ -1,3 +1,82 @@
|
|||
1999-10-10 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
|
||||
|
||||
* stage2/asm.S [!STAGE1_5] (start): New label to force ld quiet.
|
||||
[!STAGE1_5] (_start): Likewise.
|
||||
* stage2/builtins.c (install_func): Rewritten heavily almost
|
||||
from scratch. As the blocklist was moved to the first sector of
|
||||
Stage 2, always write sectors of Stage 2 to the disk.
|
||||
* stage1/stage1.h (STAGE1_STAGE2_SECTOR): 0x40 -> 0x41.
|
||||
(STAGE1_STAGE2_ADDRESS): 0x44 -> 0x45.
|
||||
(STAGE1_STAGE2_SEGMENT): 0x46 -> 0x47.
|
||||
(STAGE1_BOOT_DRIVE): 0x3f -> 0x40.
|
||||
|
||||
1999-10-09 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
|
||||
|
||||
Stage1 supports both the CHS mode and the LBA mode.
|
||||
|
||||
* stage1/Makefile.am (nodist_pkgdata_DATA): Removed stage1_lba.
|
||||
(BUILT_SOURCES): Deleted.
|
||||
(CLEANFILES): Likewise.
|
||||
(noinst_PROGRAMS): Removed stage1_lba.exec.
|
||||
(stage1_exec_SOURCES): Removed stage2_size.h.
|
||||
(stage2_size.h): Deleted.
|
||||
(stage1_lba_exec_SOURCES): Likewise.
|
||||
* stage1/stage1.S: Rewritten from scratch.
|
||||
* stage1/stage1_lba.S: Deleted.
|
||||
* stage1/stage1.h (COMPAT_VERSION_MAJOR): Set to 3.
|
||||
(COMPAT_VERSION_MINOR): Set to 0.
|
||||
(STAGE1_VER_MAJ_OFFS): Set to 0x3e.
|
||||
(STAGE1_FIRSTLIST): Deleted.
|
||||
(STAGE1_INSTALLSEG): Likewise.
|
||||
(STAGE1_INSTALLADDR): Likewise.
|
||||
(STAGE1_MINPARAMSIZE): Likewise.
|
||||
(STAGE1_LISTSIZE): Likewise.
|
||||
(STAGE1_ID_OFFSET): Likewise.
|
||||
(STAGE1_ID_CHS): Likewise.
|
||||
(STAGE1_ID_LBA): Likewise.
|
||||
(STAGE1_STAGE2_SECTOR): New macro.
|
||||
(STAGE1_STAGE2_ADDRESS): Likewise.
|
||||
(STAGE1_STAGE2_SEGMENT): Likewise.
|
||||
(STAGE1_BOOT_DRIVE): Likewise.
|
||||
* stage2/start.S: New file.
|
||||
* stage2/Makefile.am (noinst_DATA): New variable.
|
||||
(CLEANFILES): Set to "$(nodist_pkgdata_DATA) $(noinst_DATA)
|
||||
$(BUILT_SOURCES)".
|
||||
(noinst_PROGRAMS): Removed stage2.exec, and added start.exec and
|
||||
pre_stage2.exec.
|
||||
(STAGE2_LINK): Deleted.
|
||||
(PRE_STAGE2_LINK): New variable.
|
||||
(START_LINK): Likewise.
|
||||
(stage2_exec_SOURCES): Deleted.
|
||||
(stage2_exec_CFLAGS): Likewise.
|
||||
(stage2_exec_LDFLAGS): Likewise.
|
||||
[NETBOOT_SUPPORT] (stage2_exec_LDADD): Likewise.
|
||||
(pre_stage2_exec_SOURCES): New variable.
|
||||
(pre_stage2_exec_CFLAGS): Likewise.
|
||||
(pre_stage2_exec_LDFLAGS): Likewise.
|
||||
[NETBOOT_SUPPORT] (pre_stage2_exec_LDADD): Likewise.
|
||||
(BUILT_SOURCES): Likewise.
|
||||
(start_exec_SOURCES): Likewise.
|
||||
(start_exec_CFLAGS): Likewise.
|
||||
(start_exec_LDFLAGS): Likewise.
|
||||
(start_exec_DEPENDENCIES): Likewise.
|
||||
(stage2_size.h): New rule.
|
||||
(stage2): Likewise.
|
||||
(e2fs_stage1_5_exec_SOURCES): Added start.S.
|
||||
(fat_stage1_5_exec_SOURCES): Likewise.
|
||||
(ffs_stage1_5_exec_SOURCES): Likewise.
|
||||
(minix_stage1_5_exec_SOURCES): Likewise.
|
||||
* stage2/asm.S (start): Renamed to ...
|
||||
(main): ... this.
|
||||
[STAGE1_5] (main): Jump to (codestart - EXT_C(main) + 0x2200)
|
||||
instead of (codestart - EXT_C(start) + 0x2000).
|
||||
[!STAGE1_5] (main): Jump to (codestart - EXT_C(main) + 0x8200)
|
||||
instead of (codestart - EXT_C(start) + 0x8000).
|
||||
[STAGE1_5] (chain_stage2): Use main instead of start.
|
||||
* stage2/shared.h (BOOTSEC_LISTSIZE): New macro.
|
||||
* stage2/stage1_5.c: Change the second argument for chain_stage2
|
||||
to 0x8200.
|
||||
|
||||
1999-10-08 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
|
||||
|
||||
* configure.in (--with-binutils): New option to specify a
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# Stage 1 is built after Stage 2, so that the size of Stage 2 is
|
||||
# encoded into Stage 1.
|
||||
# Do not change this order if you don't know what you are doing.
|
||||
SUBDIRS = netboot stage2 stage1 lib grub docs debian
|
||||
EXTRA_DIST = BUGS
|
||||
|
||||
|
|
|
@ -81,8 +81,7 @@ host_cpu = @host_cpu@
|
|||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
|
||||
# Stage 1 is built after Stage 2, so that the size of Stage 2 is
|
||||
# encoded into Stage 1.
|
||||
# Do not change this order if you don't know what you are doing.
|
||||
|
||||
|
||||
SUBDIRS = netboot stage2 stage1 lib grub docs debian
|
||||
|
|
|
@ -1,21 +1,12 @@
|
|||
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
||||
nodist_pkgdata_DATA = stage1 stage1_lba
|
||||
|
||||
BUILT_SOURCES = stage2_size.h
|
||||
CLEANFILES = $(pkgdata_DATA) $(BUILT_SOURCES)
|
||||
nodist_pkgdata_DATA = stage1
|
||||
|
||||
# We can't use builtins or standard includes.
|
||||
AM_CFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc
|
||||
LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
|
||||
|
||||
noinst_PROGRAMS = stage1.exec stage1_lba.exec
|
||||
stage1_exec_SOURCES = stage1.S stage1.h stage2_size.h
|
||||
stage1_lba_exec_SOURCES = stage1_lba.S stage1.h stage2_size.h
|
||||
|
||||
stage2_size.h: ../stage2/stage2
|
||||
-rm -f stage2_size.h
|
||||
set dummy `ls -l ../stage2/stage2`; \
|
||||
echo "#define STAGE2_SIZE $$6" > stage2_size.h
|
||||
noinst_PROGRAMS = stage1.exec
|
||||
stage1_exec_SOURCES = stage1.S stage1.h
|
||||
|
||||
%: %.exec
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
|
|
@ -81,18 +81,14 @@ install_sh = @install_sh@
|
|||
|
||||
|
||||
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
||||
nodist_pkgdata_DATA = stage1 stage1_lba
|
||||
|
||||
BUILT_SOURCES = stage2_size.h
|
||||
CLEANFILES = $(pkgdata_DATA) $(BUILT_SOURCES)
|
||||
nodist_pkgdata_DATA = stage1
|
||||
|
||||
# We can't use builtins or standard includes.
|
||||
AM_CFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc
|
||||
LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
|
||||
|
||||
noinst_PROGRAMS = stage1.exec stage1_lba.exec
|
||||
stage1_exec_SOURCES = stage1.S stage1.h stage2_size.h
|
||||
stage1_lba_exec_SOURCES = stage1_lba.S stage1.h stage2_size.h
|
||||
noinst_PROGRAMS = stage1.exec
|
||||
stage1_exec_SOURCES = stage1.S stage1.h
|
||||
subdir = stage1
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
|
@ -108,16 +104,11 @@ stage1_exec_OBJECTS = $(am_stage1_exec_OBJECTS)
|
|||
stage1_exec_LDADD = $(LDADD)
|
||||
stage1_exec_DEPENDENCIES =
|
||||
stage1_exec_LDFLAGS =
|
||||
am_stage1_lba_exec_OBJECTS = stage1_lba.o
|
||||
stage1_lba_exec_OBJECTS = $(am_stage1_lba_exec_OBJECTS)
|
||||
stage1_lba_exec_LDADD = $(LDADD)
|
||||
stage1_lba_exec_DEPENDENCIES =
|
||||
stage1_lba_exec_LDFLAGS =
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CFLAGS = @CFLAGS@
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DIST_SOURCES = $(stage1_exec_SOURCES) $(stage1_lba_exec_SOURCES)
|
||||
DIST_SOURCES = $(stage1_exec_SOURCES)
|
||||
DATA = $(nodist_pkgdata_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
|
@ -126,9 +117,9 @@ DIST_COMMON = Makefile.am Makefile.in
|
|||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
GZIP_ENV = --best
|
||||
DEP_FILES = .deps/stage1.P .deps/stage1_lba.P
|
||||
SOURCES = $(stage1_exec_SOURCES) $(stage1_lba_exec_SOURCES)
|
||||
OBJECTS = $(am_stage1_exec_OBJECTS) $(am_stage1_lba_exec_OBJECTS)
|
||||
DEP_FILES = .deps/stage1.P
|
||||
SOURCES = $(stage1_exec_SOURCES)
|
||||
OBJECTS = $(am_stage1_exec_OBJECTS)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
|
@ -163,10 +154,6 @@ maintainer-clean-compile:
|
|||
stage1.exec: $(stage1_exec_OBJECTS) $(stage1_exec_DEPENDENCIES)
|
||||
@rm -f stage1.exec
|
||||
$(LINK) $(stage1_exec_LDFLAGS) $(stage1_exec_OBJECTS) $(stage1_exec_LDADD) $(LIBS)
|
||||
|
||||
stage1_lba.exec: $(stage1_lba_exec_OBJECTS) $(stage1_lba_exec_DEPENDENCIES)
|
||||
@rm -f stage1_lba.exec
|
||||
$(LINK) $(stage1_lba_exec_LDFLAGS) $(stage1_lba_exec_OBJECTS) $(stage1_lba_exec_LDADD) $(LIBS)
|
||||
.S.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
|
@ -282,14 +269,12 @@ installdirs:
|
|||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
|
||||
mostlyclean-tags mostlyclean-depend mostlyclean-generic
|
||||
|
||||
|
@ -328,11 +313,6 @@ installdirs mostlyclean-generic distclean-generic clean-generic \
|
|||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
stage2_size.h: ../stage2/stage2
|
||||
-rm -f stage2_size.h
|
||||
set dummy `ls -l ../stage2/stage2`; \
|
||||
echo "#define STAGE2_SIZE $$6" > stage2_size.h
|
||||
|
||||
%: %.exec
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
||||
|
|
275
stage1/stage1.S
275
stage1/stage1.S
|
@ -19,7 +19,6 @@
|
|||
*/
|
||||
|
||||
#include <stage1.h>
|
||||
#include <stage2_size.h>
|
||||
|
||||
/*
|
||||
* defines for the code go here
|
||||
|
@ -51,7 +50,7 @@
|
|||
* parameter block.
|
||||
*/
|
||||
|
||||
jmp after_BPB
|
||||
jmp after_BPB
|
||||
nop /* do I care about this ??? */
|
||||
|
||||
/*
|
||||
|
@ -63,6 +62,9 @@
|
|||
. = _start + 4
|
||||
|
||||
/* scratch space */
|
||||
mode:
|
||||
.byte 0
|
||||
disk_address_packet:
|
||||
sectors:
|
||||
.long 0
|
||||
heads:
|
||||
|
@ -83,8 +85,17 @@ cylinder_start:
|
|||
* End of BIOS parameter block.
|
||||
*/
|
||||
|
||||
stage1_id:
|
||||
.byte STAGE1_ID_CHS
|
||||
stage1_version:
|
||||
.byte COMPAT_VERSION_MAJOR, COMPAT_VERSION_MINOR
|
||||
boot_drive:
|
||||
.byte 0xff /* the disk to load stage2 from */
|
||||
/* 0xff means use the boot drive */
|
||||
stage2_sector:
|
||||
.long 1
|
||||
stage2_address:
|
||||
.word 0x8000
|
||||
stage2_segment:
|
||||
.word 0x800
|
||||
|
||||
after_BPB:
|
||||
|
||||
|
@ -104,7 +115,7 @@ after_BPB:
|
|||
/*
|
||||
* Check if we have a forced disk reference here
|
||||
*/
|
||||
movb ABS(firstlist), %al
|
||||
movb ABS(boot_drive), %al
|
||||
cmpb $0xff, %al
|
||||
je 1f
|
||||
movb %al, %dl
|
||||
|
@ -112,6 +123,82 @@ after_BPB:
|
|||
/* save drive reference first thing! */
|
||||
pushw %dx
|
||||
|
||||
/* print a notification message on the screen */
|
||||
MSG(notification_string)
|
||||
|
||||
/* do not probe LBA if the drive is a floppy */
|
||||
testb $STAGE1_BIOS_HD_FLAG, %dl
|
||||
jz chs_mode
|
||||
|
||||
/* check if LBA is supported */
|
||||
movb $0x41, %ah
|
||||
movw $0x55aa, %bx
|
||||
int $0x13
|
||||
|
||||
/* use CHS if fails */
|
||||
jc chs_mode
|
||||
cmpw $0xaa55, %bx
|
||||
jne chs_mode
|
||||
|
||||
/* get the geometry (limited to 2TB!) */
|
||||
movb $0x48, %ah
|
||||
movw $STAGE1_DRP_ADDR, %si
|
||||
movw $STAGE1_DRP_SIZE, (%si)
|
||||
int $0x13
|
||||
|
||||
/* use CHS if fails */
|
||||
jc chs_mode
|
||||
|
||||
lba_mode:
|
||||
/* save the total number of sectors */
|
||||
movl 0x10(%si), %ecx
|
||||
|
||||
/* set %si to the disk address packet */
|
||||
movw $ABS(disk_address_packet), %si
|
||||
|
||||
/* set the mode to non-zero */
|
||||
movb $1, -1(%si)
|
||||
|
||||
movl ABS(stage2_sector), %ebx
|
||||
|
||||
cmpl %ecx, %ebx
|
||||
jge geometry_error
|
||||
|
||||
/* the size and the reserved byte */
|
||||
movw $0x0010, (%si)
|
||||
|
||||
/* the blocks */
|
||||
movw $1, 2(%si)
|
||||
|
||||
/* the absolute address (low 32 bits) */
|
||||
movl %ebx, 8(%si)
|
||||
|
||||
/* the segment of buffer address */
|
||||
movw $STAGE1_BUFFERSEG, 6(%si)
|
||||
|
||||
xorl %eax, %eax
|
||||
movw %ax, 4(%si)
|
||||
movl %eax, 12(%si)
|
||||
|
||||
/*
|
||||
* BIOS call "INT 0x13 Function 0x42" to read sectors from disk into memory
|
||||
* Call with %ah = 0x42
|
||||
* %dl = drive number
|
||||
* %ds:%si = segment:offset of disk address packet
|
||||
* Return:
|
||||
* %al = 0x0 on success; err code on failure
|
||||
*/
|
||||
|
||||
movb $0x42, %ah
|
||||
int $0x13
|
||||
|
||||
/* should use CHS instead? */
|
||||
jc read_error
|
||||
|
||||
movw $STAGE1_BUFFERSEG, %bx
|
||||
jmp copy_buffer
|
||||
|
||||
chs_mode:
|
||||
/*
|
||||
* Determine the hard disk geometry from the BIOS!
|
||||
* We do this first, so that LS-120 IDE floppies work correctly.
|
||||
|
@ -130,9 +217,12 @@ after_BPB:
|
|||
jmp hd_probe_error
|
||||
|
||||
final_init:
|
||||
/* set %si to sectors */
|
||||
|
||||
movw $ABS(sectors), %si
|
||||
|
||||
/* set the mode to zero */
|
||||
movb $0, -1(%si)
|
||||
|
||||
/* save number of heads */
|
||||
xorl %eax, %eax
|
||||
movb %dh, %al
|
||||
|
@ -156,22 +246,9 @@ final_init:
|
|||
/* save number of sectors */
|
||||
movl %eax, (%si)
|
||||
|
||||
/* this sets up for the first run through "bootloop" */
|
||||
movw $ABS(firstlist - STAGE1_LISTSIZE), %di
|
||||
|
||||
|
||||
/* this is the loop for reading the secondary boot-loader in */
|
||||
bootloop:
|
||||
|
||||
/* check the number of sectors to read */
|
||||
cmpw $0, 4(%di)
|
||||
|
||||
/* if zero, go to the start function */
|
||||
je bootit
|
||||
|
||||
setup_sectors:
|
||||
/* load logical sector start (bottom half) */
|
||||
movl (%di), %eax
|
||||
movl ABS(stage2_sector), %eax
|
||||
|
||||
/* zero %edx */
|
||||
xorl %edx, %edx
|
||||
|
@ -195,29 +272,6 @@ setup_sectors:
|
|||
cmpw 8(%si), %ax
|
||||
jge geometry_error
|
||||
|
||||
/* determine the maximum sector length of this read */
|
||||
movw (%si), %ax /* get number of sectors per track/head */
|
||||
|
||||
/* subtract sector start */
|
||||
subb 10(%si), %al
|
||||
|
||||
/* how many do we really want to read? */
|
||||
cmpw %ax, 4(%di) /* compare against total number of sectors */
|
||||
|
||||
|
||||
/* which is greater? */
|
||||
jg more_sectors
|
||||
|
||||
/* if less than, set to total */
|
||||
movw 4(%di), %ax
|
||||
|
||||
more_sectors:
|
||||
/* subtract from total */
|
||||
subw %ax, 4(%di)
|
||||
|
||||
/* add into logical sector start */
|
||||
addl %eax, (%di)
|
||||
|
||||
/*
|
||||
* This is the loop for taking care of BIOS geometry translation (ugh!)
|
||||
*/
|
||||
|
@ -235,13 +289,10 @@ more_sectors:
|
|||
|
||||
/* restore %dx */
|
||||
popw %dx
|
||||
pushw %dx
|
||||
|
||||
|
||||
/* head number */
|
||||
movb 11(%si), %dh
|
||||
|
||||
pushw %ax /* save %ax from destruction! */
|
||||
|
||||
/*
|
||||
* BIOS call "INT 0x13 Function 0x2" to read sectors from disk into memory
|
||||
* Call with %ah = 0x2
|
||||
|
@ -259,59 +310,40 @@ more_sectors:
|
|||
movw %bx, %es /* load %es segment with disk buffer */
|
||||
|
||||
xorw %bx, %bx /* %bx = 0, put it at 0 in the segment */
|
||||
movb $0x2, %ah /* function 2 */
|
||||
movw $0x0201, %ax /* function 2 */
|
||||
int $0x13
|
||||
|
||||
jc read_error
|
||||
|
||||
/* save source segment */
|
||||
movw %es, %dx
|
||||
movw %es, %bx
|
||||
|
||||
copy_buffer:
|
||||
movw ABS(stage2_segment), %es
|
||||
|
||||
/* load addresses for copy from disk buffer to destination */
|
||||
movw 6(%di), %es /* load destination segment */
|
||||
|
||||
/* restore %ax */
|
||||
popw %ax
|
||||
|
||||
/* determine the next possible destination address (presuming
|
||||
512 byte sectors!) */
|
||||
shlw $5, %ax /* shift %ax five bits to the left */
|
||||
addw %ax, 6(%di) /* add the corrected value to the destination
|
||||
address for next time */
|
||||
|
||||
/* get the copy length */
|
||||
shlw $4, %ax
|
||||
movw %ax, %cx
|
||||
|
||||
/* save addressing regs */
|
||||
/*
|
||||
* We need to save %cx and %si because the startup code in
|
||||
* stage2 uses them without initializing them.
|
||||
*/
|
||||
pushw %cx
|
||||
pushw %ds
|
||||
pushw %si
|
||||
pushw %di
|
||||
|
||||
movw $0x200, %cx
|
||||
movw %bx, %ds
|
||||
xorw %si, %si
|
||||
xorw %di, %di
|
||||
|
||||
cld
|
||||
|
||||
rep
|
||||
movsb
|
||||
|
||||
xorw %di, %di /* zero offset of destination addresses */
|
||||
xorw %si, %si /* zero offset of source addresses */
|
||||
movw %dx, %ds /* restore the source segment */
|
||||
|
||||
cld /* sets the copy direction to forward */
|
||||
|
||||
/* perform copy */
|
||||
rep /* sets a repeat */
|
||||
movsb /* this runs the actual copy */
|
||||
|
||||
/* restore addressing regs */
|
||||
popw %di
|
||||
popw %si
|
||||
popw %ds
|
||||
popw %cx
|
||||
|
||||
/* check if finished with this dataset */
|
||||
cmpw $0, 4(%di)
|
||||
jne setup_sectors
|
||||
|
||||
/* update position to load from */
|
||||
subw $STAGE1_LISTSIZE, %di
|
||||
|
||||
/* jump to bootloop */
|
||||
jmp bootloop
|
||||
/* boot stage2 */
|
||||
jmp *(stage2_address)
|
||||
|
||||
/* END OF MAIN LOOP */
|
||||
|
||||
|
@ -341,6 +373,7 @@ general_error:
|
|||
/* go here when you need to stop the machine hard after an error condition */
|
||||
stop: jmp stop
|
||||
|
||||
notification_string: .string "stage1"
|
||||
geometry_error_string: .string "Geom"
|
||||
hd_probe_error_string: .string "Hard Disk"
|
||||
read_error_string: .string "Read"
|
||||
|
@ -368,70 +401,6 @@ message:
|
|||
cmpb $0, %al
|
||||
jne 1b /* if not end of string, jmp to display */
|
||||
ret
|
||||
lastlist:
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This data area is for keeping general parameters.
|
||||
*/
|
||||
. = _start + STAGE1_PARTSTART - STAGE1_MINPARAMSIZE - STAGE1_LISTSIZE
|
||||
|
||||
/* this next data area before the partition area is specifically
|
||||
sized, you should update "STAGE1_MINPARAMSIZ" to reflect any
|
||||
additions or deletions to this area. */
|
||||
|
||||
.word 0
|
||||
.word 0
|
||||
|
||||
/* fill the first data listing with the default */
|
||||
#ifdef FFS_STAGE1_5
|
||||
blocklist_default_start:
|
||||
.long 2 /* this is the sector start parameter, in logical
|
||||
sectors from the start of the disk, sector 0 */
|
||||
blocklist_default_len:
|
||||
.word 14 /* this is the number of sectors to read */
|
||||
blocklist_default_seg:
|
||||
.word 0x0200 /* this is the segment of the starting address
|
||||
to load the data into */
|
||||
#else
|
||||
blocklist_default_start:
|
||||
.long 1 /* this is the sector start parameter, in logical
|
||||
sectors from the start of the disk, sector 0 */
|
||||
blocklist_default_len:
|
||||
/* this is the number of sectors to read */
|
||||
.word (STAGE2_SIZE + 511) >> 9
|
||||
blocklist_default_seg:
|
||||
.word 0x0800 /* this is the segment of the starting address
|
||||
to load the data into */
|
||||
#endif
|
||||
firstlist: /* this label has to be after the list data!!! */
|
||||
|
||||
.byte 0xff /* the disk to load stage2 from */
|
||||
/* 0xff means use the boot drive */
|
||||
|
||||
/*
|
||||
* Jump here when all data loading is done. This
|
||||
* goes to the second stage bootloader.
|
||||
*/
|
||||
|
||||
bootit:
|
||||
popw %dx /* this makes sure %dl is our "boot" drive */
|
||||
ljmp $0, $0x8000 /* FIXME: make 0x2000 for stage1_5 */
|
||||
|
||||
/*
|
||||
* This is the compatibility version number.
|
||||
* See stage1.h for COMPAT_VERSION_* definitions used
|
||||
* in stage2 and stage1_5 modules.
|
||||
*
|
||||
* DO NOT MOVE THIS!!!
|
||||
*/
|
||||
.byte COMPAT_VERSION_MAJOR, COMPAT_VERSION_MINOR
|
||||
|
||||
/*
|
||||
* This is where an MBR would go if on a hard disk. The code
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
|
||||
|
||||
/* Define the version numbers here, so that Stage 1 can know them. */
|
||||
#define COMPAT_VERSION_MAJOR 2
|
||||
#define COMPAT_VERSION_MINOR 2
|
||||
#define COMPAT_VERSION_MAJOR 3
|
||||
#define COMPAT_VERSION_MINOR 0
|
||||
#define COMPAT_VERSION ((COMPAT_VERSION_MINOR << 8) \
|
||||
| COMPAT_VERSION_MAJOR)
|
||||
|
||||
|
@ -33,17 +33,20 @@
|
|||
/* The offset of the end of BPB (BIOS Parameter Block). */
|
||||
#define STAGE1_BPBEND 0x3e
|
||||
|
||||
/* The offset of FIRSTLIST. */
|
||||
#define STAGE1_FIRSTLIST 0x1b5
|
||||
/* The offset of STAGE2_SECTOR. */
|
||||
#define STAGE1_STAGE2_SECTOR 0x41
|
||||
|
||||
/* The offset of STAGE2_ADDRESS. */
|
||||
#define STAGE1_STAGE2_ADDRESS 0x45
|
||||
|
||||
/* The offset of STAGE2_SEGMENT. */
|
||||
#define STAGE1_STAGE2_SEGMENT 0x47
|
||||
|
||||
/* The offset of the major version. */
|
||||
#define STAGE1_VER_MAJ_OFFS 0x1bc
|
||||
#define STAGE1_VER_MAJ_OFFS 0x3e
|
||||
|
||||
/* The offset of the install segment. */
|
||||
#define STAGE1_INSTALLSEG 0x1ba
|
||||
|
||||
/* The offset of the install address. */
|
||||
#define STAGE1_INSTALLADDR 0x1b8
|
||||
/* The offset of BOOT_DRIVE. */
|
||||
#define STAGE1_BOOT_DRIVE 0x40
|
||||
|
||||
/* The offset of the start of the partition table. */
|
||||
#define STAGE1_PARTSTART 0x1be
|
||||
|
@ -51,12 +54,6 @@
|
|||
/* The offset of the end of the partition table. */
|
||||
#define STAGE1_PARTEND 0x1fe
|
||||
|
||||
/* The size of extra data parameters. */
|
||||
#define STAGE1_MINPARAMSIZE 13
|
||||
|
||||
/* The size of sector list. */
|
||||
#define STAGE1_LISTSIZE 8
|
||||
|
||||
/* The stack segment. */
|
||||
#define STAGE1_STACKSEG 0x2000
|
||||
|
||||
|
@ -74,15 +71,4 @@
|
|||
floppy. */
|
||||
#define STAGE1_BIOS_HD_FLAG 0x80
|
||||
|
||||
/* Stage 1 identifiers */
|
||||
/* The offset of the id. */
|
||||
#define STAGE1_ID_OFFSET STAGE1_BPBEND
|
||||
|
||||
/* The id for the ``normal'' stage1. */
|
||||
#define STAGE1_ID_CHS 0x10
|
||||
|
||||
/* The id for the LBA version of stage1. */
|
||||
#define STAGE1_ID_LBA 0x20
|
||||
|
||||
|
||||
#endif /* ! STAGE1_HEADER */
|
||||
|
|
|
@ -23,44 +23,62 @@ libgrub_a_CFLAGS = $(GRUB_CFLAGS) -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 \
|
|||
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
||||
nodist_pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
|
||||
minix_stage1_5
|
||||
CLEANFILES = $(pkgdata_DATA)
|
||||
noinst_PROGRAMS = stage2.exec e2fs_stage1_5.exec fat_stage1_5.exec \
|
||||
noinst_DATA = pre_stage2 start
|
||||
noinst_PROGRAMS = pre_stage2.exec start.exec \
|
||||
e2fs_stage1_5.exec fat_stage1_5.exec \
|
||||
ffs_stage1_5.exec minix_stage1_5.exec
|
||||
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
|
||||
|
||||
STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
|
||||
PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200
|
||||
START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
|
||||
STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc
|
||||
|
||||
STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000
|
||||
STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
|
||||
|
||||
# asm.S absolutely needs to come first!
|
||||
# For stage2 target.
|
||||
stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
|
||||
pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
|
||||
char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \
|
||||
fsys_fat.c fsys_ffs.c fsys_minix.c smp-imps.c stage2.c
|
||||
stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
|
||||
stage2_exec_LDFLAGS = $(STAGE2_LINK)
|
||||
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
|
||||
pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK)
|
||||
|
||||
if NETBOOT_SUPPORT
|
||||
stage2_exec_LDADD = ../netboot/libdrivers.a
|
||||
pre_stage2_exec_LDADD = ../netboot/libdrivers.a
|
||||
endif
|
||||
|
||||
BUILT_SOURCES = stage2_size.h
|
||||
CLEANFILES = $(nodist_pkgdata_DATA) $(noinst_DATA) $(BUILT_SOURCES)
|
||||
|
||||
stage2_size.h: pre_stage2
|
||||
-rm -f stage2_size.h
|
||||
set dummy `ls -l ../stage2/stage2`; \
|
||||
echo "#define STAGE2_SIZE $$6" > stage2_size.h
|
||||
|
||||
start_exec_SOURCES = start.S
|
||||
start_exec_CFLAGS = $(STAGE2_COMPILE)
|
||||
start_exec_LDFLAGS = $(START_LINK)
|
||||
start_exec_DEPENDENCIES = stage2_size.h
|
||||
|
||||
stage2: pre_stage2 start
|
||||
-rm -f stage2
|
||||
cat start pre_stage2 > stage2
|
||||
|
||||
# For e2fs_stage1_5 target.
|
||||
e2fs_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
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
|
||||
e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \
|
||||
-DNO_BLOCK_FILES=1
|
||||
e2fs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
|
||||
|
||||
# For fat_stage1_5 target.
|
||||
fat_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
fat_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
|
||||
stage1_5.c fsys_fat.c bios.c
|
||||
fat_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1
|
||||
fat_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
|
||||
|
||||
# For ffs_stage1_5 target.
|
||||
ffs_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
ffs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
|
||||
stage1_5.c fsys_ffs.c bios.c
|
||||
|
||||
ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \
|
||||
|
@ -68,7 +86,7 @@ ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \
|
|||
ffs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
|
||||
|
||||
# For minix_stage1_5 target.
|
||||
minix_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
minix_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
|
||||
stage1_5.c fsys_minix.c bios.c
|
||||
minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \
|
||||
-DNO_BLOCK_FILES=1
|
||||
|
|
|
@ -110,31 +110,40 @@ pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
|||
nodist_pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
|
||||
minix_stage1_5
|
||||
|
||||
CLEANFILES = $(pkgdata_DATA)
|
||||
noinst_PROGRAMS = stage2.exec e2fs_stage1_5.exec fat_stage1_5.exec \
|
||||
noinst_DATA = pre_stage2 start
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
noinst_PROGRAMS = pre_stage2.exec start.exec \
|
||||
e2fs_stage1_5.exec fat_stage1_5.exec \
|
||||
ffs_stage1_5.exec minix_stage1_5.exec
|
||||
|
||||
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
|
||||
|
||||
STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
|
||||
PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200
|
||||
START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
|
||||
STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc
|
||||
|
||||
STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000
|
||||
STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
|
||||
|
||||
# asm.S absolutely needs to come first!
|
||||
# For stage2 target.
|
||||
stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
|
||||
pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
|
||||
char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \
|
||||
fsys_fat.c fsys_ffs.c fsys_minix.c smp-imps.c stage2.c
|
||||
|
||||
stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
|
||||
stage2_exec_LDFLAGS = $(STAGE2_LINK)
|
||||
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
|
||||
pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK)
|
||||
|
||||
@NETBOOT_SUPPORT_TRUE@stage2_exec_LDADD = @NETBOOT_SUPPORT_TRUE@../netboot/libdrivers.a
|
||||
@NETBOOT_SUPPORT_TRUE@pre_stage2_exec_LDADD = @NETBOOT_SUPPORT_TRUE@../netboot/libdrivers.a
|
||||
|
||||
BUILT_SOURCES = stage2_size.h
|
||||
|
||||
start_exec_SOURCES = start.S
|
||||
start_exec_CFLAGS = $(STAGE2_COMPILE)
|
||||
start_exec_LDFLAGS = $(START_LINK)
|
||||
start_exec_DEPENDENCIES = stage2_size.h
|
||||
|
||||
# For e2fs_stage1_5 target.
|
||||
e2fs_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
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
|
||||
|
||||
e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \
|
||||
|
@ -143,14 +152,14 @@ e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \
|
|||
e2fs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
|
||||
|
||||
# For fat_stage1_5 target.
|
||||
fat_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
fat_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
|
||||
stage1_5.c fsys_fat.c bios.c
|
||||
|
||||
fat_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1
|
||||
fat_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
|
||||
|
||||
# For ffs_stage1_5 target.
|
||||
ffs_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
ffs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
|
||||
stage1_5.c fsys_ffs.c bios.c
|
||||
|
||||
|
||||
|
@ -160,7 +169,7 @@ ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \
|
|||
ffs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK)
|
||||
|
||||
# For minix_stage1_5 target.
|
||||
minix_stage1_5_exec_SOURCES = asm.S common.c char_io.c disk_io.c \
|
||||
minix_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \
|
||||
stage1_5.c fsys_minix.c bios.c
|
||||
|
||||
minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \
|
||||
|
@ -189,43 +198,52 @@ libgrub_a_OBJECTS = $(am_libgrub_a_OBJECTS)
|
|||
AR = ar
|
||||
PROGRAMS = $(noinst_PROGRAMS)
|
||||
|
||||
am_e2fs_stage1_5_exec_OBJECTS = e2fs_stage1_5_exec-asm.o \
|
||||
e2fs_stage1_5_exec-common.o e2fs_stage1_5_exec-char_io.o \
|
||||
e2fs_stage1_5_exec-disk_io.o e2fs_stage1_5_exec-stage1_5.o \
|
||||
e2fs_stage1_5_exec-fsys_ext2fs.o e2fs_stage1_5_exec-bios.o
|
||||
am_e2fs_stage1_5_exec_OBJECTS = e2fs_stage1_5_exec-start.o \
|
||||
e2fs_stage1_5_exec-asm.o e2fs_stage1_5_exec-common.o \
|
||||
e2fs_stage1_5_exec-char_io.o e2fs_stage1_5_exec-disk_io.o \
|
||||
e2fs_stage1_5_exec-stage1_5.o e2fs_stage1_5_exec-fsys_ext2fs.o \
|
||||
e2fs_stage1_5_exec-bios.o
|
||||
e2fs_stage1_5_exec_OBJECTS = $(am_e2fs_stage1_5_exec_OBJECTS)
|
||||
e2fs_stage1_5_exec_LDADD = $(LDADD)
|
||||
e2fs_stage1_5_exec_DEPENDENCIES =
|
||||
am_fat_stage1_5_exec_OBJECTS = fat_stage1_5_exec-asm.o \
|
||||
fat_stage1_5_exec-common.o fat_stage1_5_exec-char_io.o \
|
||||
fat_stage1_5_exec-disk_io.o fat_stage1_5_exec-stage1_5.o \
|
||||
fat_stage1_5_exec-fsys_fat.o fat_stage1_5_exec-bios.o
|
||||
am_fat_stage1_5_exec_OBJECTS = fat_stage1_5_exec-start.o \
|
||||
fat_stage1_5_exec-asm.o fat_stage1_5_exec-common.o \
|
||||
fat_stage1_5_exec-char_io.o fat_stage1_5_exec-disk_io.o \
|
||||
fat_stage1_5_exec-stage1_5.o fat_stage1_5_exec-fsys_fat.o \
|
||||
fat_stage1_5_exec-bios.o
|
||||
fat_stage1_5_exec_OBJECTS = $(am_fat_stage1_5_exec_OBJECTS)
|
||||
fat_stage1_5_exec_LDADD = $(LDADD)
|
||||
fat_stage1_5_exec_DEPENDENCIES =
|
||||
am_ffs_stage1_5_exec_OBJECTS = ffs_stage1_5_exec-asm.o \
|
||||
ffs_stage1_5_exec-common.o ffs_stage1_5_exec-char_io.o \
|
||||
ffs_stage1_5_exec-disk_io.o ffs_stage1_5_exec-stage1_5.o \
|
||||
ffs_stage1_5_exec-fsys_ffs.o ffs_stage1_5_exec-bios.o
|
||||
am_ffs_stage1_5_exec_OBJECTS = ffs_stage1_5_exec-start.o \
|
||||
ffs_stage1_5_exec-asm.o ffs_stage1_5_exec-common.o \
|
||||
ffs_stage1_5_exec-char_io.o ffs_stage1_5_exec-disk_io.o \
|
||||
ffs_stage1_5_exec-stage1_5.o ffs_stage1_5_exec-fsys_ffs.o \
|
||||
ffs_stage1_5_exec-bios.o
|
||||
ffs_stage1_5_exec_OBJECTS = $(am_ffs_stage1_5_exec_OBJECTS)
|
||||
ffs_stage1_5_exec_LDADD = $(LDADD)
|
||||
ffs_stage1_5_exec_DEPENDENCIES =
|
||||
am_minix_stage1_5_exec_OBJECTS = minix_stage1_5_exec-asm.o \
|
||||
minix_stage1_5_exec-common.o minix_stage1_5_exec-char_io.o \
|
||||
minix_stage1_5_exec-disk_io.o minix_stage1_5_exec-stage1_5.o \
|
||||
minix_stage1_5_exec-fsys_minix.o minix_stage1_5_exec-bios.o
|
||||
am_minix_stage1_5_exec_OBJECTS = minix_stage1_5_exec-start.o \
|
||||
minix_stage1_5_exec-asm.o minix_stage1_5_exec-common.o \
|
||||
minix_stage1_5_exec-char_io.o minix_stage1_5_exec-disk_io.o \
|
||||
minix_stage1_5_exec-stage1_5.o minix_stage1_5_exec-fsys_minix.o \
|
||||
minix_stage1_5_exec-bios.o
|
||||
minix_stage1_5_exec_OBJECTS = $(am_minix_stage1_5_exec_OBJECTS)
|
||||
minix_stage1_5_exec_LDADD = $(LDADD)
|
||||
minix_stage1_5_exec_DEPENDENCIES =
|
||||
am_stage2_exec_OBJECTS = stage2_exec-asm.o stage2_exec-bios.o \
|
||||
stage2_exec-boot.o stage2_exec-builtins.o stage2_exec-common.o \
|
||||
stage2_exec-char_io.o stage2_exec-cmdline.o stage2_exec-disk_io.o \
|
||||
stage2_exec-gunzip.o stage2_exec-fsys_ext2fs.o stage2_exec-fsys_fat.o \
|
||||
stage2_exec-fsys_ffs.o stage2_exec-fsys_minix.o stage2_exec-smp-imps.o \
|
||||
stage2_exec-stage2.o
|
||||
stage2_exec_OBJECTS = $(am_stage2_exec_OBJECTS)
|
||||
@NETBOOT_SUPPORT_TRUE@stage2_exec_DEPENDENCIES = \
|
||||
am_pre_stage2_exec_OBJECTS = pre_stage2_exec-asm.o \
|
||||
pre_stage2_exec-bios.o pre_stage2_exec-boot.o \
|
||||
pre_stage2_exec-builtins.o pre_stage2_exec-common.o \
|
||||
pre_stage2_exec-char_io.o pre_stage2_exec-cmdline.o \
|
||||
pre_stage2_exec-disk_io.o pre_stage2_exec-gunzip.o \
|
||||
pre_stage2_exec-fsys_ext2fs.o pre_stage2_exec-fsys_fat.o \
|
||||
pre_stage2_exec-fsys_ffs.o pre_stage2_exec-fsys_minix.o \
|
||||
pre_stage2_exec-smp-imps.o pre_stage2_exec-stage2.o
|
||||
pre_stage2_exec_OBJECTS = $(am_pre_stage2_exec_OBJECTS)
|
||||
@NETBOOT_SUPPORT_TRUE@pre_stage2_exec_DEPENDENCIES = \
|
||||
@NETBOOT_SUPPORT_TRUE@../netboot/libdrivers.a
|
||||
am_start_exec_OBJECTS = start_exec-start.o
|
||||
start_exec_OBJECTS = $(am_start_exec_OBJECTS)
|
||||
start_exec_LDADD = $(LDADD)
|
||||
SCRIPTS = $(noinst_SCRIPTS)
|
||||
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
|
@ -234,12 +252,14 @@ CCLD = $(CC)
|
|||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DIST_SOURCES = $(libgrub_a_SOURCES) $(e2fs_stage1_5_exec_SOURCES) \
|
||||
$(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) \
|
||||
$(minix_stage1_5_exec_SOURCES) $(stage2_exec_SOURCES)
|
||||
DATA = $(nodist_pkgdata_DATA)
|
||||
$(minix_stage1_5_exec_SOURCES) $(pre_stage2_exec_SOURCES) \
|
||||
$(start_exec_SOURCES)
|
||||
DATA = $(nodist_pkgdata_DATA) $(noinst_DATA)
|
||||
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
|
||||
DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in compile
|
||||
DIST_COMMON = $(noinst_DATA) $(noinst_HEADERS) Makefile.am Makefile.in \
|
||||
compile
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
@ -249,9 +269,9 @@ DEP_FILES = .deps/asm.P .deps/bios.P .deps/boot.P .deps/builtins.P \
|
|||
.deps/char_io.P .deps/cmdline.P .deps/common.P .deps/disk_io.P \
|
||||
.deps/fsys_ext2fs.P .deps/fsys_fat.P .deps/fsys_ffs.P \
|
||||
.deps/fsys_minix.P .deps/gunzip.P .deps/smp-imps.P .deps/stage1_5.P \
|
||||
.deps/stage2.P
|
||||
SOURCES = $(libgrub_a_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(stage2_exec_SOURCES)
|
||||
OBJECTS = $(am_libgrub_a_OBJECTS) $(am_e2fs_stage1_5_exec_OBJECTS) $(am_fat_stage1_5_exec_OBJECTS) $(am_ffs_stage1_5_exec_OBJECTS) $(am_minix_stage1_5_exec_OBJECTS) $(am_stage2_exec_OBJECTS)
|
||||
.deps/stage2.P .deps/start.P
|
||||
SOURCES = $(libgrub_a_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(pre_stage2_exec_SOURCES) $(start_exec_SOURCES)
|
||||
OBJECTS = $(am_libgrub_a_OBJECTS) $(am_e2fs_stage1_5_exec_OBJECTS) $(am_fat_stage1_5_exec_OBJECTS) $(am_ffs_stage1_5_exec_OBJECTS) $(am_minix_stage1_5_exec_OBJECTS) $(am_pre_stage2_exec_OBJECTS) $(am_start_exec_OBJECTS)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
|
@ -308,6 +328,8 @@ clean-noinstPROGRAMS:
|
|||
distclean-noinstPROGRAMS:
|
||||
|
||||
maintainer-clean-noinstPROGRAMS:
|
||||
e2fs_stage1_5_exec-start.o: start.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-start.o $<
|
||||
e2fs_stage1_5_exec-asm.o: asm.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-asm.o $<
|
||||
e2fs_stage1_5_exec-common.o: common.c
|
||||
|
@ -320,6 +342,8 @@ e2fs_stage1_5_exec-bios.o: bios.c
|
|||
e2fs_stage1_5.exec: $(e2fs_stage1_5_exec_OBJECTS) $(e2fs_stage1_5_exec_DEPENDENCIES)
|
||||
@rm -f e2fs_stage1_5.exec
|
||||
$(LINK) $(e2fs_stage1_5_exec_LDFLAGS) $(e2fs_stage1_5_exec_OBJECTS) $(e2fs_stage1_5_exec_LDADD) $(LIBS)
|
||||
fat_stage1_5_exec-start.o: start.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-start.o $<
|
||||
fat_stage1_5_exec-asm.o: asm.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-asm.o $<
|
||||
fat_stage1_5_exec-common.o: common.c
|
||||
|
@ -332,6 +356,8 @@ fat_stage1_5_exec-bios.o: bios.c
|
|||
fat_stage1_5.exec: $(fat_stage1_5_exec_OBJECTS) $(fat_stage1_5_exec_DEPENDENCIES)
|
||||
@rm -f fat_stage1_5.exec
|
||||
$(LINK) $(fat_stage1_5_exec_LDFLAGS) $(fat_stage1_5_exec_OBJECTS) $(fat_stage1_5_exec_LDADD) $(LIBS)
|
||||
ffs_stage1_5_exec-start.o: start.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-start.o $<
|
||||
ffs_stage1_5_exec-asm.o: asm.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-asm.o $<
|
||||
ffs_stage1_5_exec-common.o: common.c
|
||||
|
@ -344,6 +370,8 @@ ffs_stage1_5_exec-bios.o: bios.c
|
|||
ffs_stage1_5.exec: $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_DEPENDENCIES)
|
||||
@rm -f ffs_stage1_5.exec
|
||||
$(LINK) $(ffs_stage1_5_exec_LDFLAGS) $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_LDADD) $(LIBS)
|
||||
minix_stage1_5_exec-start.o: start.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-start.o $<
|
||||
minix_stage1_5_exec-asm.o: asm.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-asm.o $<
|
||||
minix_stage1_5_exec-common.o: common.c
|
||||
|
@ -356,26 +384,32 @@ minix_stage1_5_exec-bios.o: bios.c
|
|||
minix_stage1_5.exec: $(minix_stage1_5_exec_OBJECTS) $(minix_stage1_5_exec_DEPENDENCIES)
|
||||
@rm -f minix_stage1_5.exec
|
||||
$(LINK) $(minix_stage1_5_exec_LDFLAGS) $(minix_stage1_5_exec_OBJECTS) $(minix_stage1_5_exec_LDADD) $(LIBS)
|
||||
stage2_exec-asm.o: asm.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o stage2_exec-asm.o $<
|
||||
stage2_exec-bios.o: bios.c
|
||||
stage2_exec-boot.o: boot.c
|
||||
stage2_exec-builtins.o: builtins.c
|
||||
stage2_exec-common.o: common.c
|
||||
stage2_exec-char_io.o: char_io.c
|
||||
stage2_exec-cmdline.o: cmdline.c
|
||||
stage2_exec-disk_io.o: disk_io.c
|
||||
stage2_exec-gunzip.o: gunzip.c
|
||||
stage2_exec-fsys_ext2fs.o: fsys_ext2fs.c
|
||||
stage2_exec-fsys_fat.o: fsys_fat.c
|
||||
stage2_exec-fsys_ffs.o: fsys_ffs.c
|
||||
stage2_exec-fsys_minix.o: fsys_minix.c
|
||||
stage2_exec-smp-imps.o: smp-imps.c
|
||||
stage2_exec-stage2.o: stage2.c
|
||||
pre_stage2_exec-asm.o: asm.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-asm.o $<
|
||||
pre_stage2_exec-bios.o: bios.c
|
||||
pre_stage2_exec-boot.o: boot.c
|
||||
pre_stage2_exec-builtins.o: builtins.c
|
||||
pre_stage2_exec-common.o: common.c
|
||||
pre_stage2_exec-char_io.o: char_io.c
|
||||
pre_stage2_exec-cmdline.o: cmdline.c
|
||||
pre_stage2_exec-disk_io.o: disk_io.c
|
||||
pre_stage2_exec-gunzip.o: gunzip.c
|
||||
pre_stage2_exec-fsys_ext2fs.o: fsys_ext2fs.c
|
||||
pre_stage2_exec-fsys_fat.o: fsys_fat.c
|
||||
pre_stage2_exec-fsys_ffs.o: fsys_ffs.c
|
||||
pre_stage2_exec-fsys_minix.o: fsys_minix.c
|
||||
pre_stage2_exec-smp-imps.o: smp-imps.c
|
||||
pre_stage2_exec-stage2.o: stage2.c
|
||||
|
||||
stage2.exec: $(stage2_exec_OBJECTS) $(stage2_exec_DEPENDENCIES)
|
||||
@rm -f stage2.exec
|
||||
$(LINK) $(stage2_exec_LDFLAGS) $(stage2_exec_OBJECTS) $(stage2_exec_LDADD) $(LIBS)
|
||||
pre_stage2.exec: $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_DEPENDENCIES)
|
||||
@rm -f pre_stage2.exec
|
||||
$(LINK) $(pre_stage2_exec_LDFLAGS) $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_LDADD) $(LIBS)
|
||||
start_exec-start.o: start.S
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(start_exec_CFLAGS) $(CFLAGS) -c -o start_exec-start.o $<
|
||||
|
||||
start.exec: $(start_exec_OBJECTS) $(start_exec_DEPENDENCIES)
|
||||
@rm -f start.exec
|
||||
$(LINK) $(start_exec_LDFLAGS) $(start_exec_OBJECTS) $(start_exec_LDADD) $(LIBS)
|
||||
.S.o:
|
||||
$(COMPILE) -c $<
|
||||
.c.o:
|
||||
|
@ -1167,18 +1201,18 @@ minix_stage1_5_exec-bios.lo: bios.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-bios.o: bios.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-bios.o: bios.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-bios.lo: bios.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-bios.lo: bios.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1186,18 +1220,18 @@ stage2_exec-bios.lo: bios.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-boot.o: boot.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-boot.o: boot.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-boot.lo: boot.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-boot.lo: boot.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1205,18 +1239,18 @@ stage2_exec-boot.lo: boot.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-builtins.o: builtins.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-builtins.o: builtins.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-builtins.lo: builtins.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-builtins.lo: builtins.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1224,18 +1258,18 @@ stage2_exec-builtins.lo: builtins.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-common.o: common.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-common.o: common.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-common.lo: common.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-common.lo: common.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1243,18 +1277,18 @@ stage2_exec-common.lo: common.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-char_io.o: char_io.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-char_io.o: char_io.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-char_io.lo: char_io.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-char_io.lo: char_io.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1262,18 +1296,18 @@ stage2_exec-char_io.lo: char_io.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-cmdline.o: cmdline.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-cmdline.o: cmdline.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-cmdline.lo: cmdline.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-cmdline.lo: cmdline.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1281,18 +1315,18 @@ stage2_exec-cmdline.lo: cmdline.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-disk_io.o: disk_io.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-disk_io.o: disk_io.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-disk_io.lo: disk_io.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-disk_io.lo: disk_io.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1300,18 +1334,18 @@ stage2_exec-disk_io.lo: disk_io.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-gunzip.o: gunzip.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-gunzip.o: gunzip.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-gunzip.lo: gunzip.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-gunzip.lo: gunzip.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1319,18 +1353,18 @@ stage2_exec-gunzip.lo: gunzip.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_ext2fs.o: fsys_ext2fs.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_ext2fs.o: fsys_ext2fs.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_ext2fs.lo: fsys_ext2fs.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_ext2fs.lo: fsys_ext2fs.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1338,18 +1372,18 @@ stage2_exec-fsys_ext2fs.lo: fsys_ext2fs.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_fat.o: fsys_fat.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_fat.o: fsys_fat.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_fat.lo: fsys_fat.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_fat.lo: fsys_fat.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1357,18 +1391,18 @@ stage2_exec-fsys_fat.lo: fsys_fat.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_ffs.o: fsys_ffs.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_ffs.o: fsys_ffs.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_ffs.lo: fsys_ffs.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_ffs.lo: fsys_ffs.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1376,18 +1410,18 @@ stage2_exec-fsys_ffs.lo: fsys_ffs.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_minix.o: fsys_minix.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_minix.o: fsys_minix.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-fsys_minix.lo: fsys_minix.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-fsys_minix.lo: fsys_minix.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1395,18 +1429,18 @@ stage2_exec-fsys_minix.lo: fsys_minix.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-smp-imps.o: smp-imps.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-smp-imps.o: smp-imps.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-smp-imps.lo: smp-imps.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-smp-imps.lo: smp-imps.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1414,18 +1448,18 @@ stage2_exec-smp-imps.lo: smp-imps.c
|
|||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm -f .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-stage2.o: stage2.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-stage2.o: stage2.c
|
||||
@echo '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*D)/$(*F).P; \
|
||||
rm .deps/$(*D)/$(*F).pp
|
||||
|
||||
stage2_exec-stage2.lo: stage2.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
pre_stage2_exec-stage2.lo: stage2.c
|
||||
@echo '$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o $@ $<'; \
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
|
||||
|
@ -1522,6 +1556,7 @@ distclean-generic:
|
|||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
|
||||
mostlyclean-noinstPROGRAMS mostlyclean-tags \
|
||||
mostlyclean-depend mostlyclean-generic
|
||||
|
@ -1565,6 +1600,15 @@ installdirs mostlyclean-generic distclean-generic clean-generic \
|
|||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
stage2_size.h: pre_stage2
|
||||
-rm -f stage2_size.h
|
||||
set dummy `ls -l ../stage2/stage2`; \
|
||||
echo "#define STAGE2_SIZE $$6" > stage2_size.h
|
||||
|
||||
stage2: pre_stage2 start
|
||||
-rm -f stage2
|
||||
cat start pre_stage2 > stage2
|
||||
|
||||
# General rule for making a raw binary.
|
||||
%: %.exec
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
|
30
stage2/asm.S
30
stage2/asm.S
|
@ -30,18 +30,26 @@
|
|||
in real mode. */
|
||||
.code16
|
||||
|
||||
ENTRY(start)
|
||||
/* Suppress ld warnings. */
|
||||
.globl _start
|
||||
#ifndef STAGE1_5
|
||||
/*
|
||||
* In stage2, do not link start.S with the rest of the source
|
||||
* files directly, so define the start symbols here just to
|
||||
* force ld quiet. These are not referred anyway.
|
||||
*/
|
||||
.globl start, _start
|
||||
start:
|
||||
_start:
|
||||
#endif /* ! STAGE1_5 */
|
||||
|
||||
ENTRY(main)
|
||||
/*
|
||||
* Guarantee that "start" is loaded at 0x0:0x8000 in stage2 and
|
||||
* at 0x0:0x2000 in stage1.5.
|
||||
* Guarantee that "main" is loaded at 0x0:0x8200 in stage2 and
|
||||
* at 0x0:0x2200 in stage1.5.
|
||||
*/
|
||||
#ifndef STAGE1_5
|
||||
ljmp $0, $(codestart - EXT_C(start) + 0x8000)
|
||||
ljmp $0, $(codestart - EXT_C(main) + 0x8200)
|
||||
#else
|
||||
ljmp $0, $(codestart - EXT_C(start) + 0x2000)
|
||||
ljmp $0, $(codestart - EXT_C(main) + 0x2200)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -50,14 +58,14 @@ _start:
|
|||
* These MUST be at byte offset 6 and 7 of the executable
|
||||
* DO NOT MOVE !!!
|
||||
*/
|
||||
. = EXT_C(start) + 0x6
|
||||
. = EXT_C(main) + 0x6
|
||||
.byte COMPAT_VERSION_MAJOR, COMPAT_VERSION_MINOR
|
||||
|
||||
/*
|
||||
* This is a special data area 8 bytes from the beginning.
|
||||
*/
|
||||
|
||||
. = EXT_C(start) + 0x8
|
||||
. = EXT_C(main) + 0x8
|
||||
|
||||
VARIABLE(install_partition)
|
||||
.long 0x020000
|
||||
|
@ -77,7 +85,7 @@ VARIABLE(config_file)
|
|||
* Leave some breathing room for the config file name.
|
||||
*/
|
||||
|
||||
. = EXT_C(start) + 0x70
|
||||
. = EXT_C(main) + 0x70
|
||||
|
||||
/* the real mode code continues... */
|
||||
codestart:
|
||||
|
@ -203,7 +211,7 @@ ENTRY(chain_stage2)
|
|||
|
||||
/* set up to pass the partition where stage2 is located in */
|
||||
movl EXT_C(current_partition), %eax
|
||||
movl %eax, EXT_C(install_partition)-EXT_C(start)(%ebx)
|
||||
movl %eax, (EXT_C(install_partition)-EXT_C(main))(%ebx)
|
||||
|
||||
/* set up to pass the drive where stage2 is located in */
|
||||
movb EXT_C(current_drive), %dl
|
||||
|
|
|
@ -744,13 +744,17 @@ static int
|
|||
install_func (char *arg, int flags)
|
||||
{
|
||||
char *stage1_file, *dest_dev, *file, *addr;
|
||||
char buffer[SECTOR_SIZE], old_sect[SECTOR_SIZE];
|
||||
char *stage1_buffer = (char *) RAW_ADDR (0x100000);
|
||||
char *old_sect = stage1_buffer + SECTOR_SIZE;
|
||||
char *stage2_first_buffer = old_sect + SECTOR_SIZE;
|
||||
char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE;
|
||||
char *dummy = stage2_second_buffer + SECTOR_SIZE;
|
||||
int new_drive = 0xFF;
|
||||
int dest_drive, dest_sector;
|
||||
int i;
|
||||
struct geometry dest_geom;
|
||||
int write_stage2_sect = 0;
|
||||
int stage2_sect;
|
||||
int saved_sector;
|
||||
int stage2_first_sector, stage2_second_sector;
|
||||
char *ptr;
|
||||
int installaddr, installlist;
|
||||
/* Point to the location of the name of a configuration file in Stage 2. */
|
||||
|
@ -764,7 +768,7 @@ install_func (char *arg, int flags)
|
|||
if (debug)
|
||||
printf ("[%d]", sector);
|
||||
|
||||
stage2_sect = sector;
|
||||
saved_sector = sector;
|
||||
}
|
||||
|
||||
/* Write SECTOR to INSTALLLIST, and update INSTALLADDR and
|
||||
|
@ -776,7 +780,7 @@ install_func (char *arg, int flags)
|
|||
|
||||
if (*((unsigned long *) (installlist - 4))
|
||||
+ *((unsigned short *) installlist) != sector
|
||||
|| installlist == BOOTSEC_LOCATION + STAGE1_FIRSTLIST + 4)
|
||||
|| installlist == (int) stage2_first_buffer + SECTOR_SIZE + 4)
|
||||
{
|
||||
installlist -= 8;
|
||||
|
||||
|
@ -814,91 +818,60 @@ install_func (char *arg, int flags)
|
|||
else
|
||||
ptr = skip_to (0, addr);
|
||||
|
||||
#ifndef NO_DECOMPRESSION
|
||||
/* Do not decompress Stage 1 or Stage 2. */
|
||||
no_decompression = 1;
|
||||
#endif
|
||||
|
||||
/* Read Stage 1. */
|
||||
if (! grub_open (stage1_file)
|
||||
|| ! grub_read (buffer, SECTOR_SIZE) == SECTOR_SIZE)
|
||||
return 1;
|
||||
|| ! grub_read (stage1_buffer, SECTOR_SIZE) == SECTOR_SIZE)
|
||||
goto fail;
|
||||
|
||||
/* Read the old sector from DEST_DEV. */
|
||||
if (! set_device (dest_dev)
|
||||
|| ! open_partition ()
|
||||
|| ! devread (0, 0, SECTOR_SIZE, old_sect))
|
||||
return 1;
|
||||
goto fail;
|
||||
|
||||
/* Store the information for the destination device. */
|
||||
dest_drive = current_drive;
|
||||
dest_geom = buf_geom;
|
||||
dest_sector = part_start;
|
||||
|
||||
#ifndef NO_DECOMPRESSION
|
||||
/* Do not decompress Stage 2. */
|
||||
no_decompression = 1;
|
||||
#endif
|
||||
|
||||
/* copy possible DOS BPB, 59 bytes at byte offset 3 */
|
||||
grub_memmove (buffer + BOOTSEC_BPB_OFFSET,
|
||||
/* Copy the possible DOS BPB, 59 bytes at byte offset 3. */
|
||||
grub_memmove (stage1_buffer + BOOTSEC_BPB_OFFSET,
|
||||
old_sect + BOOTSEC_BPB_OFFSET,
|
||||
BOOTSEC_BPB_LENGTH);
|
||||
|
||||
/* if for a hard disk, copy possible MBR/extended part table */
|
||||
/* If for a hard disk, copy the possible MBR/extended part table. */
|
||||
if ((dest_drive & 0x80) && current_partition == 0xFFFFFF)
|
||||
grub_memmove (buffer + BOOTSEC_PART_OFFSET,
|
||||
grub_memmove (stage1_buffer + BOOTSEC_PART_OFFSET,
|
||||
old_sect + BOOTSEC_PART_OFFSET,
|
||||
BOOTSEC_PART_LENGTH);
|
||||
|
||||
/* Check for the version and the signature of Stage 1. */
|
||||
if (*((short *)(buffer + STAGE1_VER_MAJ_OFFS)) != COMPAT_VERSION
|
||||
|| (*((unsigned short *) (buffer + BOOTSEC_SIG_OFFSET))
|
||||
!= BOOTSEC_SIGNATURE)
|
||||
|| (! (dest_drive & 0x80)
|
||||
&& (*((unsigned char *) (buffer + BOOTSEC_PART_OFFSET)) == 0x80
|
||||
|| buffer[BOOTSEC_PART_OFFSET] == 0))
|
||||
|| (buffer[STAGE1_ID_OFFSET] != STAGE1_ID_LBA
|
||||
&& buffer[STAGE1_ID_OFFSET] != STAGE1_ID_CHS))
|
||||
if (*((short *)(stage1_buffer + STAGE1_VER_MAJ_OFFS)) != COMPAT_VERSION
|
||||
|| (*((unsigned short *) (stage1_buffer + BOOTSEC_SIG_OFFSET))
|
||||
!= BOOTSEC_SIGNATURE))
|
||||
{
|
||||
errnum = ERR_BAD_VERSION;
|
||||
return 1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* If DEST_DRIVE is a floppy, Stage 2 must have the iteration probe
|
||||
routine. */
|
||||
if (! (dest_drive & 0x80)
|
||||
&& (*((unsigned char *) (stage1_buffer + BOOTSEC_PART_OFFSET)) == 0x80
|
||||
|| stage1_buffer[BOOTSEC_PART_OFFSET] == 0))
|
||||
{
|
||||
errnum = ERR_BAD_VERSION;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Open Stage 2. */
|
||||
if (! grub_open (file))
|
||||
return 1;
|
||||
|
||||
/* If STAGE1_FILE is the LBA version, do a sanity check. */
|
||||
if (buffer[STAGE1_ID_OFFSET] == STAGE1_ID_LBA)
|
||||
{
|
||||
/* The geometry of the drive in which FILE is located. */
|
||||
struct geometry load_geom;
|
||||
|
||||
/* Check if CURRENT_DRIVE is a floppy disk. */
|
||||
if (! (current_drive & 0x80))
|
||||
{
|
||||
errnum = ERR_DEV_VALUES;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Get the geometry of CURRENT_DRIVE. */
|
||||
if (get_diskinfo (current_drive, &load_geom))
|
||||
{
|
||||
errnum = ERR_NO_DISK;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef GRUB_UTIL
|
||||
/* XXX Can we determine if LBA is supported in
|
||||
the grub shell as well? */
|
||||
grub_printf ("Warning: make sure that the access mode for "
|
||||
"(hd%d) is LBA.\n",
|
||||
current_drive - 0x80);
|
||||
#else
|
||||
/* Check if LBA is supported. */
|
||||
if (! (load_geom.flags & BIOSDISK_FLAG_LBA_EXTENSION))
|
||||
{
|
||||
errnum = ERR_DEV_VALUES;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
goto fail;
|
||||
|
||||
if (! new_drive)
|
||||
new_drive = current_drive;
|
||||
|
@ -907,48 +880,31 @@ install_func (char *arg, int flags)
|
|||
" be installed on a\ndifferent drive than the drive where"
|
||||
" the Stage 2 resides.\n");
|
||||
|
||||
memmove ((char*) BOOTSEC_LOCATION, buffer, SECTOR_SIZE);
|
||||
|
||||
*((unsigned char *) (BOOTSEC_LOCATION + STAGE1_FIRSTLIST))
|
||||
= new_drive;
|
||||
|
||||
i = BOOTSEC_LOCATION+STAGE1_FIRSTLIST - 4;
|
||||
while (*((unsigned long *) i))
|
||||
{
|
||||
if (i < BOOTSEC_LOCATION + STAGE1_FIRSTLIST - 256
|
||||
|| (*((int *) (i - 4)) & 0x80000000)
|
||||
|| *((unsigned short *) i) >= 0xA00
|
||||
|| *((short *) (i + 2)) == 0)
|
||||
{
|
||||
errnum = ERR_BAD_VERSION;
|
||||
return 1;
|
||||
}
|
||||
|
||||
*((int *) i) = 0;
|
||||
*((int *) (i - 4)) = 0;
|
||||
i -= 8;
|
||||
}
|
||||
|
||||
installlist = BOOTSEC_LOCATION + STAGE1_FIRSTLIST + 4;
|
||||
*((unsigned char *) (stage1_buffer + STAGE1_BOOT_DRIVE)) = new_drive;
|
||||
|
||||
/* Read the first sector of Stage 2. */
|
||||
disk_read_hook = disk_read_savesect_func;
|
||||
if (! grub_read ((char *) SCRATCHADDR, SECTOR_SIZE) == SECTOR_SIZE)
|
||||
{
|
||||
disk_read_hook = 0;
|
||||
return 1;
|
||||
}
|
||||
if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE)
|
||||
goto fail;
|
||||
|
||||
stage2_first_sector = saved_sector;
|
||||
|
||||
/* Read the second sector of Stage 2. */
|
||||
if (grub_read (stage2_second_buffer, SECTOR_SIZE) != SECTOR_SIZE)
|
||||
goto fail;
|
||||
|
||||
stage2_second_sector = saved_sector;
|
||||
|
||||
/* Check for the version of Stage 2. */
|
||||
if (*((short *) (SCRATCHADDR + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION)
|
||||
if (*((short *) (stage2_second_buffer + STAGE2_VER_MAJ_OFFS))
|
||||
!= COMPAT_VERSION)
|
||||
{
|
||||
errnum = ERR_BAD_VERSION;
|
||||
return 1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Check for the Stage 2 id. */
|
||||
if (*((unsigned char *) (SCRATCHADDR + STAGE2_STAGE2_ID))
|
||||
!= STAGE2_ID_STAGE2)
|
||||
if (stage2_second_buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2)
|
||||
is_stage1_5 = 1;
|
||||
|
||||
/* If INSTALLADDR is not specified explicitly in the command-line,
|
||||
|
@ -963,33 +919,57 @@ install_func (char *arg, int flags)
|
|||
installaddr = 0x2000;
|
||||
}
|
||||
|
||||
*((unsigned short *) (BOOTSEC_LOCATION + STAGE1_INSTALLADDR))
|
||||
*((unsigned long *) (stage1_buffer + STAGE1_STAGE2_SECTOR))
|
||||
= stage2_first_sector;
|
||||
*((unsigned short *) (stage1_buffer + STAGE1_STAGE2_ADDRESS))
|
||||
= installaddr;
|
||||
*((unsigned short *) (stage1_buffer + STAGE1_STAGE2_SEGMENT))
|
||||
= installaddr >> 4;
|
||||
|
||||
/* Read the whole of Stage 2. */
|
||||
filepos = 0;
|
||||
disk_read_hook = disk_read_blocklist_func;
|
||||
if (! grub_read ((char *) RAW_ADDR (0x100000), -1))
|
||||
i = (int) stage2_first_buffer + SECTOR_SIZE - 4;
|
||||
while (*((unsigned long *) i))
|
||||
{
|
||||
disk_read_hook = 0;
|
||||
return 1;
|
||||
if (i < (int) stage2_first_buffer
|
||||
|| (*((int *) (i - 4)) & 0x80000000)
|
||||
|| *((unsigned short *) i) >= 0xA00
|
||||
|| *((short *) (i + 2)) == 0)
|
||||
{
|
||||
errnum = ERR_BAD_VERSION;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
*((int *) i) = 0;
|
||||
*((int *) (i - 4)) = 0;
|
||||
i -= 8;
|
||||
}
|
||||
|
||||
installlist = (int) stage2_first_buffer + SECTOR_SIZE + 4;
|
||||
installaddr += SECTOR_SIZE;
|
||||
|
||||
/* Read the whole of Stage2 except for the first sector. */
|
||||
filepos = SECTOR_SIZE;
|
||||
disk_read_hook = disk_read_blocklist_func;
|
||||
if (! grub_read (dummy, -1))
|
||||
goto fail;
|
||||
|
||||
disk_read_hook = 0;
|
||||
|
||||
/* Find a string for the configuration filename. */
|
||||
config_file_location = ((char *) (SCRATCHADDR + STAGE2_VER_STR_OFFS));
|
||||
config_file_location = stage2_second_buffer + STAGE2_VER_STR_OFFS;
|
||||
while (*(config_file_location++))
|
||||
;
|
||||
|
||||
if (*ptr == 'p')
|
||||
{
|
||||
write_stage2_sect = 1;
|
||||
*((long *) (SCRATCHADDR + STAGE2_INSTALLPART)) = current_partition;
|
||||
*((long *) (stage2_second_buffer + STAGE2_INSTALLPART))
|
||||
= current_partition;
|
||||
if (is_stage1_5)
|
||||
{
|
||||
/* Reset the device information in FILE if it is a Stage 1.5. */
|
||||
int device = 0xFFFFFFFF;
|
||||
unsigned long device = 0xFFFFFFFF;
|
||||
|
||||
grub_memmove (config_file_location, (char *) &device, sizeof (int));
|
||||
grub_memmove (config_file_location, (char *) &device,
|
||||
sizeof (device));
|
||||
}
|
||||
|
||||
ptr = skip_to (0, ptr);
|
||||
|
@ -997,15 +977,13 @@ install_func (char *arg, int flags)
|
|||
|
||||
if (*ptr)
|
||||
{
|
||||
write_stage2_sect = 1;
|
||||
|
||||
if (! is_stage1_5)
|
||||
/* If it is a Stage 2, just copy PTR to CONFIG_FILE_LOCATION. */
|
||||
grub_strcpy (config_file_location, ptr);
|
||||
else
|
||||
{
|
||||
char *config_file;
|
||||
int device;
|
||||
unsigned long device;
|
||||
int tmp = current_drive;
|
||||
|
||||
/* Translate the external device syntax to the internal device
|
||||
|
@ -1019,8 +997,9 @@ install_func (char *arg, int flags)
|
|||
|
||||
device = current_drive << 24 | current_partition;
|
||||
current_drive = tmp;
|
||||
grub_memmove (config_file_location, (char *) &device, sizeof (int));
|
||||
grub_strcpy (config_file_location + sizeof (int), config_file);
|
||||
grub_memmove (config_file_location, (char *) &device,
|
||||
sizeof (device));
|
||||
grub_strcpy (config_file_location + sizeof (device), config_file);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1028,30 +1007,41 @@ install_func (char *arg, int flags)
|
|||
buf_track = -1;
|
||||
|
||||
/* Write the modified first sector of Stage2 to the disk. */
|
||||
if (write_stage2_sect
|
||||
&& biosdisk (BIOSDISK_WRITE, current_drive, &buf_geom,
|
||||
stage2_sect, 1, SCRATCHSEG))
|
||||
grub_memmove ((char *) SCRATCHADDR, stage2_first_buffer, SECTOR_SIZE);
|
||||
if (biosdisk (BIOSDISK_WRITE, current_drive, &buf_geom,
|
||||
stage2_first_sector, 1, SCRATCHSEG))
|
||||
{
|
||||
errnum = ERR_WRITE;
|
||||
disk_read_hook = 0;
|
||||
return 1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Write the modified second sector of Stage2 to the disk. */
|
||||
grub_memmove ((char *) SCRATCHADDR, stage2_second_buffer, SECTOR_SIZE);
|
||||
if (biosdisk (BIOSDISK_WRITE, current_drive, &buf_geom,
|
||||
stage2_second_sector, 1, SCRATCHSEG))
|
||||
{
|
||||
errnum = ERR_WRITE;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Write the modified sector of Stage 1 to the disk. */
|
||||
grub_memmove ((char *) SCRATCHADDR, stage1_buffer, SECTOR_SIZE);
|
||||
if (biosdisk (BIOSDISK_WRITE, dest_drive, &dest_geom,
|
||||
dest_sector, 1, SCRATCHSEG))
|
||||
{
|
||||
errnum = ERR_WRITE;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (biosdisk (BIOSDISK_WRITE, dest_drive, &dest_geom,
|
||||
dest_sector, 1, (BOOTSEC_LOCATION >> 4)))
|
||||
{
|
||||
errnum = ERR_WRITE;
|
||||
disk_read_hook = 0;
|
||||
return 1;
|
||||
}
|
||||
fail:
|
||||
|
||||
disk_read_hook = 0;
|
||||
|
||||
|
||||
#ifndef NO_DECOMPRESSION
|
||||
no_decompression = 0;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
return errnum;
|
||||
}
|
||||
|
||||
static struct builtin builtin_install =
|
||||
|
|
|
@ -165,6 +165,7 @@ extern char *grub_scratch_mem;
|
|||
#define BOOTSEC_PART_OFFSET 0x1BE
|
||||
#define BOOTSEC_PART_LENGTH 0x40
|
||||
#define BOOTSEC_SIG_OFFSET 0x1FE
|
||||
#define BOOTSEC_LISTSIZE 8
|
||||
|
||||
/*
|
||||
* GRUB specific information
|
||||
|
|
|
@ -30,7 +30,7 @@ cmain (void)
|
|||
*/
|
||||
|
||||
if (grub_open (config_file) && grub_read ((char *) 0x8000, -1))
|
||||
chain_stage2 (0, 0x8000);
|
||||
chain_stage2 (0, 0x8200);
|
||||
|
||||
/*
|
||||
* If not, then print error message and die.
|
||||
|
|
|
@ -18,9 +18,13 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <stage1.h>
|
||||
#define ASM_FILE
|
||||
#include <shared.h>
|
||||
|
||||
#ifndef STAGE1_5
|
||||
#include <stage2_size.h>
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* defines for the code go here
|
||||
*/
|
||||
|
@ -28,12 +32,16 @@
|
|||
/* 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+0x7c00)
|
||||
|
||||
#ifdef STAGE1_5
|
||||
# define ABS(x) (x-_start+0x2000)
|
||||
#else
|
||||
# define ABS(x) (x-_start+0x8000)
|
||||
#endif /* STAGE1_5 */
|
||||
|
||||
/* Print message string */
|
||||
#define MSG(x) movw $ABS(x), %si; call message
|
||||
|
||||
.file "stage1_lba.S"
|
||||
.file "start.S"
|
||||
|
||||
.text
|
||||
|
||||
|
@ -41,97 +49,31 @@
|
|||
in real mode. */
|
||||
.code16
|
||||
|
||||
.globl _start; _start:
|
||||
.globl start, _start
|
||||
start:
|
||||
_start:
|
||||
/*
|
||||
* _start is loaded at 0x7c00 and is jumped to with CS:IP 0:0x7c00
|
||||
* _start is loaded at 0x8000 and is jumped to with
|
||||
* CS:IP 0:0x8000 in stage2.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Beginning of the sector is compatible with the FAT/HPFS BIOS
|
||||
* parameter block.
|
||||
/*
|
||||
* we continue to use the stack for stage1 and assume that
|
||||
* some registers are set to correct values. See stage1.S
|
||||
* for more information.
|
||||
*/
|
||||
|
||||
jmp after_BPB
|
||||
nop /* do I care about this ??? */
|
||||
|
||||
/*
|
||||
* This space is for the BIOS parameter block!!!! Don't change
|
||||
* the first jump, nor start the code anywhere but right after
|
||||
* this area.
|
||||
*/
|
||||
|
||||
. = _start + 4
|
||||
|
||||
/* scratch space */
|
||||
disk_address_packet:
|
||||
/* Actually, must set these values at the runtime. */
|
||||
.byte 0x10
|
||||
.byte 0
|
||||
.word 0
|
||||
.long 0
|
||||
.quad 0
|
||||
/* more space... */
|
||||
|
||||
. = _start + STAGE1_BPBEND
|
||||
|
||||
/*
|
||||
* End of BIOS parameter block.
|
||||
*/
|
||||
|
||||
stage1_id:
|
||||
.byte STAGE1_ID_LBA
|
||||
|
||||
after_BPB:
|
||||
|
||||
/* general setup */
|
||||
cli /* we're not safe here! */
|
||||
|
||||
/* set up %ds and %ss as offset from 0 */
|
||||
xorw %ax, %ax
|
||||
movw %ax, %ds
|
||||
movw %ax, %ss
|
||||
|
||||
/* set up the REAL stack */
|
||||
movw $STAGE1_STACKSEG, %sp
|
||||
|
||||
sti /* we're safe again */
|
||||
|
||||
/*
|
||||
* Check if we have a forced disk reference here
|
||||
*/
|
||||
movb ABS(firstlist), %al
|
||||
cmpb $0xff, %al
|
||||
je 1f
|
||||
movb %al, %dl
|
||||
1:
|
||||
|
||||
/* save drive reference first thing! */
|
||||
pushw %dx
|
||||
|
||||
/* check if LBA is supported */
|
||||
movb $0x41, %ah
|
||||
movw $0x55aa, %bx
|
||||
int $0x13
|
||||
|
||||
jc lba_probe_error
|
||||
cmpw $0xaa55, %bx
|
||||
jne lba_probe_error
|
||||
|
||||
/* get the geometry (limited to 2TB!) */
|
||||
movb $0x48, %ah
|
||||
movw $STAGE1_DRP_ADDR, %si
|
||||
movw $STAGE1_DRP_SIZE, (%si)
|
||||
int $0x13
|
||||
|
||||
jc lba_probe_error
|
||||
|
||||
/* save the total number of sectors */
|
||||
movl 0x10(%si), %ecx
|
||||
|
||||
/* set %si to disk address packet */
|
||||
movw $ABS(disk_address_packet), %si
|
||||
|
||||
/* print a notification message on the screen */
|
||||
pushw %si
|
||||
MSG(notification_string)
|
||||
popw %si
|
||||
|
||||
/* this sets up for the first run through "bootloop" */
|
||||
movw $ABS(firstlist - STAGE1_LISTSIZE), %di
|
||||
movw $ABS(firstlist - BOOTSEC_LISTSIZE), %di
|
||||
|
||||
|
||||
/* this is the loop for reading the secondary boot-loader in */
|
||||
bootloop:
|
||||
|
@ -142,7 +84,14 @@ bootloop:
|
|||
/* if zero, go to the start function */
|
||||
je bootit
|
||||
|
||||
setup_sectors:
|
||||
setup_sectors:
|
||||
/* check if we use LBA or CHS */
|
||||
cmpb $0, -1(%si)
|
||||
|
||||
/* jump to chs_mode if zero */
|
||||
je chs_mode
|
||||
|
||||
lba_mode:
|
||||
/* load logical sector start */
|
||||
movl (%di), %ebx
|
||||
|
||||
|
@ -158,12 +107,12 @@ setup_sectors:
|
|||
cmpw %ax, 4(%di) /* compare against total number of sectors */
|
||||
|
||||
/* which is greater? */
|
||||
jg more_sectors
|
||||
jg 1f
|
||||
|
||||
/* if less than, set to total */
|
||||
movw 4(%di), %ax
|
||||
|
||||
more_sectors:
|
||||
1:
|
||||
/* subtract from total */
|
||||
subw %ax, 4(%di)
|
||||
|
||||
|
@ -182,9 +131,10 @@ more_sectors:
|
|||
movl %ebx, 8(%si)
|
||||
|
||||
/* the segment of buffer address */
|
||||
movw $STAGE1_BUFFERSEG, 6(%si)
|
||||
movw $BUFFERSEG, 6(%si)
|
||||
|
||||
pushw %ax /* save %ax from destruction! */
|
||||
/* save %ax from destruction! */
|
||||
pushw %ax
|
||||
|
||||
/* zero %eax */
|
||||
xorl %eax, %eax
|
||||
|
@ -210,6 +160,109 @@ more_sectors:
|
|||
|
||||
jc read_error
|
||||
|
||||
movw $BUFFERSEG, %bx
|
||||
jmp copy_buffer
|
||||
|
||||
chs_mode:
|
||||
/* load logical sector start (bottom half) */
|
||||
movl (%di), %eax
|
||||
|
||||
/* zero %edx */
|
||||
xorl %edx, %edx
|
||||
|
||||
/* divide by number of sectors */
|
||||
divl (%si)
|
||||
|
||||
/* save sector start */
|
||||
movb %dl, 10(%si)
|
||||
|
||||
xorl %edx, %edx /* zero %edx */
|
||||
divl 4(%si) /* divide by number of heads */
|
||||
|
||||
/* save head start */
|
||||
movb %dl, 11(%si)
|
||||
|
||||
/* save cylinder start */
|
||||
movw %ax, 12(%si)
|
||||
|
||||
/* do we need too many cylinders? */
|
||||
cmpw 8(%si), %ax
|
||||
jge geometry_error
|
||||
|
||||
/* determine the maximum sector length of this read */
|
||||
movw (%si), %ax /* get number of sectors per track/head */
|
||||
|
||||
/* subtract sector start */
|
||||
subb 10(%si), %al
|
||||
|
||||
/* how many do we really want to read? */
|
||||
cmpw %ax, 4(%di) /* compare against total number of sectors */
|
||||
|
||||
|
||||
/* which is greater? */
|
||||
jg 2f
|
||||
|
||||
/* if less than, set to total */
|
||||
movw 4(%di), %ax
|
||||
|
||||
2:
|
||||
/* subtract from total */
|
||||
subw %ax, 4(%di)
|
||||
|
||||
/* add into logical sector start */
|
||||
addl %eax, (%di)
|
||||
|
||||
/*
|
||||
* This is the loop for taking care of BIOS geometry translation (ugh!)
|
||||
*/
|
||||
|
||||
/* get high bits of cylinder */
|
||||
movb 13(%si), %dl
|
||||
|
||||
shlb $6, %dl /* shift left by 6 bits */
|
||||
movb 10(%si), %cl /* get sector */
|
||||
|
||||
incb %cl /* normalize sector (sectors go
|
||||
from 1-N, not 0-(N-1) ) */
|
||||
orb %dl, %cl /* composite together */
|
||||
movb 12(%si), %ch /* sector+hcyl in cl, cylinder in ch */
|
||||
|
||||
/* restore %dx */
|
||||
popw %dx
|
||||
pushw %dx
|
||||
|
||||
/* head number */
|
||||
movb 11(%si), %dh
|
||||
|
||||
pushw %ax /* save %ax from destruction! */
|
||||
|
||||
/*
|
||||
* BIOS call "INT 0x13 Function 0x2" to read sectors from disk into memory
|
||||
* Call with %ah = 0x2
|
||||
* %al = number of sectors
|
||||
* %ch = cylinder
|
||||
* %cl = sector (bits 6-7 are high bits of "cylinder")
|
||||
* %dh = head
|
||||
* %dl = drive (0x80 for hard disk, 0x0 for floppy disk)
|
||||
* %es:%bx = segment:offset of buffer
|
||||
* Return:
|
||||
* %al = 0x0 on success; err code on failure
|
||||
*/
|
||||
|
||||
movw $BUFFERSEG, %bx
|
||||
movw %bx, %es /* load %es segment with disk buffer */
|
||||
|
||||
xorw %bx, %bx /* %bx = 0, put it at 0 in the segment */
|
||||
movb $0x2, %ah /* function 2 */
|
||||
int $0x13
|
||||
|
||||
jc read_error
|
||||
|
||||
/* save source segment */
|
||||
movw %es, %bx
|
||||
|
||||
copy_buffer:
|
||||
|
||||
/* load addresses for copy from disk buffer to destination */
|
||||
movw 6(%di), %es /* load destination segment */
|
||||
|
||||
|
@ -222,20 +275,18 @@ more_sectors:
|
|||
addw %ax, 6(%di) /* add the corrected value to the destination
|
||||
address for next time */
|
||||
|
||||
/* save addressing regs */
|
||||
pushw %ds
|
||||
pushw %si
|
||||
pushw %di
|
||||
pushw %cx
|
||||
|
||||
/* get the copy length */
|
||||
shlw $4, %ax
|
||||
movw %ax, %cx
|
||||
|
||||
/* save addressing regs */
|
||||
pushw %ds
|
||||
pushw %si
|
||||
pushw %di
|
||||
|
||||
xorw %di, %di /* zero offset of destination addresses */
|
||||
xorw %si, %si /* zero offset of source addresses */
|
||||
movw $STAGE1_BUFFERSEG, %ax
|
||||
movw %ax, %ds
|
||||
movw %bx, %ds /* restore the source segment */
|
||||
|
||||
cld /* sets the copy direction to forward */
|
||||
|
||||
|
@ -244,7 +295,6 @@ more_sectors:
|
|||
movsb /* this runs the actual copy */
|
||||
|
||||
/* restore addressing regs */
|
||||
popw %cx
|
||||
popw %di
|
||||
popw %si
|
||||
popw %ds
|
||||
|
@ -254,13 +304,22 @@ more_sectors:
|
|||
jne setup_sectors
|
||||
|
||||
/* update position to load from */
|
||||
subw $STAGE1_LISTSIZE, %di
|
||||
subw $BOOTSEC_LISTSIZE, %di
|
||||
|
||||
/* jump to bootloop */
|
||||
jmp bootloop
|
||||
|
||||
/* END OF MAIN LOOP */
|
||||
|
||||
bootit:
|
||||
popw %dx /* this makes sure %dl is our "boot" drive */
|
||||
#ifdef STAGE1_5
|
||||
ljmp $0, $0x2200
|
||||
#else /* ! STAGE1_5 */
|
||||
ljmp $0, $0x8200
|
||||
#endif /* ! STAGE1_5 */
|
||||
|
||||
|
||||
/*
|
||||
* BIOS Geometry translation error (past the end of the disk geometry!).
|
||||
*/
|
||||
|
@ -268,13 +327,6 @@ geometry_error:
|
|||
MSG(geometry_error_string)
|
||||
jmp general_error
|
||||
|
||||
/*
|
||||
* Disk probe failure.
|
||||
*/
|
||||
lba_probe_error:
|
||||
MSG(lba_probe_error_string)
|
||||
jmp general_error
|
||||
|
||||
/*
|
||||
* Read error on the disk.
|
||||
*/
|
||||
|
@ -287,8 +339,13 @@ general_error:
|
|||
/* go here when you need to stop the machine hard after an error condition */
|
||||
stop: jmp stop
|
||||
|
||||
#ifdef STAGE1_5
|
||||
notification_string: .string " stage1.5"
|
||||
#else
|
||||
notification_string: .string " stage2"
|
||||
#endif
|
||||
|
||||
geometry_error_string: .string "Geom"
|
||||
lba_probe_error_string: .string "LBA"
|
||||
read_error_string: .string "Read"
|
||||
general_error_string: .string " Error"
|
||||
|
||||
|
@ -323,79 +380,28 @@ lastlist:
|
|||
* from a fixed top location.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This data area is for keeping general parameters.
|
||||
*/
|
||||
|
||||
. = _start + STAGE1_PARTSTART - STAGE1_MINPARAMSIZE - STAGE1_LISTSIZE
|
||||
|
||||
/* this next data area before the partition area is specifically
|
||||
sized, you should update "STAGE1_MINPARAMSIZE" to reflect any
|
||||
additions or deletions to this area. */
|
||||
|
||||
.word 0
|
||||
.word 0
|
||||
|
||||
. = _start + 0x200 - BOOTSEC_LISTSIZE
|
||||
|
||||
/* fill the first data listing with the default */
|
||||
#ifdef FFS_STAGE1_5
|
||||
blocklist_default_start:
|
||||
.long 2 /* this is the sector start parameter, in logical
|
||||
sectors from the start of the disk, sector 0 */
|
||||
blocklist_default_len:
|
||||
.word 14 /* this is the number of sectors to read */
|
||||
blocklist_default_seg:
|
||||
.word 0x0200 /* this is the segment of the starting address
|
||||
to load the data into */
|
||||
#else
|
||||
blocklist_default_start:
|
||||
.long 1 /* this is the sector start parameter, in logical
|
||||
sectors from the start of the disk, sector 0 */
|
||||
blocklist_default_len:
|
||||
/* this is the number of sectors to read */
|
||||
#ifdef STAGE1_5
|
||||
.word 0 /* the command "install" will fill this up */
|
||||
#else
|
||||
.word (STAGE2_SIZE + 511) >> 9
|
||||
#endif
|
||||
blocklist_default_seg:
|
||||
.word 0x0800 /* this is the segment of the starting address
|
||||
#ifdef STAGE1_5
|
||||
.word 0x220
|
||||
#else
|
||||
.word 0x820 /* this is the segment of the starting address
|
||||
to load the data into */
|
||||
#endif
|
||||
|
||||
firstlist: /* this label has to be after the list data!!! */
|
||||
|
||||
.byte 0xff /* the disk to load stage2 from */
|
||||
/* 0xff means use the boot drive */
|
||||
|
||||
/*
|
||||
* Jump here when all data loading is done. This
|
||||
* goes to the second stage bootloader.
|
||||
*/
|
||||
|
||||
bootit:
|
||||
popw %dx /* this makes sure %dl is our "boot" drive */
|
||||
ljmp $0, $0x8000 /* FIXME: make 0x2000 for stage1_5 */
|
||||
|
||||
/*
|
||||
* This is the compatibility version number.
|
||||
* See stage1.h for COMPAT_VERSION_* definitions used
|
||||
* in stage2 and stage1_5 modules.
|
||||
*
|
||||
* DO NOT MOVE THIS!!!
|
||||
*/
|
||||
.byte COMPAT_VERSION_MAJOR, COMPAT_VERSION_MINOR
|
||||
|
||||
/*
|
||||
* This is where an MBR would go if on a hard disk. The code
|
||||
* here isn't even referenced unless we're on a floppy. Kinda
|
||||
* sneaky, huh?
|
||||
*/
|
||||
|
||||
. = _start + STAGE1_PARTSTART
|
||||
|
||||
/* These values are not useful in stage1_lba at all, but these
|
||||
prevent the installation command `install' from failing. */
|
||||
probe_values:
|
||||
.byte 36, 18, 15, 9, 0
|
||||
|
||||
/* This space cannot be used by any bootloader, uggh... */
|
||||
|
||||
. = _start + STAGE1_PARTEND
|
||||
|
||||
/* the last 2 bytes in the sector 0 contain the signature */
|
||||
.word STAGE1_SIGNATURE
|
Loading…
Add table
Add a link
Reference in a new issue