2002-02-08 Yoshinori K. Okuji <okuji@enbug.org>
* stage2/fsys_jfs.c (jfs_read) [STAGE1_5]: Set and reset DISK_READ_FUNC even in Stage 1.5. * stage2/fsys_xfs.c (xfs_read) [STAGE1_5]: Likewise. * stage2/stage1_5.c (saved_sector): Initialized with -1. (cmain): Check if SAVED_SECTOR was set appropriately after reading the second sector of Stage 2. If SAVED_SECTOR is not set (i.e. it is equal to -1), print an error and stop.
This commit is contained in:
parent
93718b5a41
commit
9f4689e21d
4 changed files with 27 additions and 13 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
2002-02-08 Yoshinori K. Okuji <okuji@enbug.org>
|
||||
|
||||
* stage2/fsys_jfs.c (jfs_read) [STAGE1_5]: Set and reset
|
||||
DISK_READ_FUNC even in Stage 1.5.
|
||||
* stage2/fsys_xfs.c (xfs_read) [STAGE1_5]: Likewise.
|
||||
|
||||
* stage2/stage1_5.c (saved_sector): Initialized with -1.
|
||||
(cmain): Check if SAVED_SECTOR was set appropriately after
|
||||
reading the second sector of Stage 2. If SAVED_SECTOR is not
|
||||
set (i.e. it is equal to -1), print an error and stop.
|
||||
|
||||
2002-02-05 Yoshinori K. Okuji <okuji@enbug.org>
|
||||
|
||||
* stage2/builtins.c (setup_func): Add a VSTa fs entry into
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* fsys_jfs.c - an implementation for the IBM JFS file system */
|
||||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2001,2002 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -243,14 +243,12 @@ jfs_read (char *buf, int len)
|
|||
endofcur = (offset + xadlen) << jfs.l2bsize;
|
||||
toread = (endofcur >= endpos)
|
||||
? len : (endofcur - filepos);
|
||||
#ifndef STAGE1_5
|
||||
|
||||
disk_read_func = disk_read_hook;
|
||||
#endif /* STAGE1_5 */
|
||||
devread (addressXAD (xad) << jfs.bdlog,
|
||||
filepos - (offset << jfs.l2bsize), toread, buf);
|
||||
#ifndef STAGE1_5
|
||||
disk_read_func = NULL;
|
||||
#endif /* STAGE1_5 */
|
||||
|
||||
buf += toread;
|
||||
len -= toread;
|
||||
filepos += toread;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* fsys_xfs.c - an implementation for the SGI XFS file system */
|
||||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2001,2002 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -499,14 +499,12 @@ xfs_read (char *buf, int len)
|
|||
endofcur = (offset + xadlen) << xfs.blklog;
|
||||
toread = (endofcur >= endpos)
|
||||
? len : (endofcur - filepos);
|
||||
#ifndef STAGE1_5
|
||||
|
||||
disk_read_func = disk_read_hook;
|
||||
#endif /* STAGE1_5 */
|
||||
devread (fsb2daddr (xad->start),
|
||||
filepos - (offset << xfs.blklog), toread, buf);
|
||||
#ifndef STAGE1_5
|
||||
disk_read_func = NULL;
|
||||
#endif /* STAGE1_5 */
|
||||
|
||||
buf += toread;
|
||||
len -= toread;
|
||||
filepos += toread;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2001,2002 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,7 +19,7 @@
|
|||
|
||||
#include "shared.h"
|
||||
|
||||
static int saved_sector;
|
||||
static int saved_sector = -1;
|
||||
|
||||
static void
|
||||
disk_read_savesect_func (int sector, int offset, int length)
|
||||
|
@ -30,7 +30,7 @@ disk_read_savesect_func (int sector, int offset, int length)
|
|||
void
|
||||
cmain (void)
|
||||
{
|
||||
printf ("\n\nGRUB loading, please wait...\n");
|
||||
grub_printf ("\n\nGRUB loading, please wait...\n");
|
||||
|
||||
/*
|
||||
* Here load the true second-stage boot-loader.
|
||||
|
@ -43,6 +43,13 @@ cmain (void)
|
|||
disk_read_hook = disk_read_savesect_func;
|
||||
grub_read ((char *) 0x8000, SECTOR_SIZE * 2);
|
||||
disk_read_hook = NULL;
|
||||
|
||||
/* Sanity check: catch an internal error. */
|
||||
if (saved_sector == -1)
|
||||
{
|
||||
grub_printf ("internal error: the second sector of Stage 2 is unknown.");
|
||||
stop ();
|
||||
}
|
||||
|
||||
ret = grub_read ((char *) 0x8000 + SECTOR_SIZE * 2, -1);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue