When SCSI IDs are not contiguous, the loader could not find correct
unit number for da device. This commit fixes this problem. Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>
This commit is contained in:
parent
4a1bb98b26
commit
72578dfa5a
@ -23,7 +23,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: biosdisk.c,v 1.23 1999/01/25 23:07:02 rnordier Exp $
|
||||
* $Id: biosdisk.c,v 1.1 1999/02/03 08:39:09 kato Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -173,8 +173,12 @@ bd_init(void)
|
||||
bdinfo[nbdinfo].bd_flags = (unit & 0xf0) == 0x90 ? BD_FLOPPY : 0;
|
||||
|
||||
/* XXX add EDD probes */
|
||||
if (!bd_int13probe(&bdinfo[nbdinfo]))
|
||||
break;
|
||||
if (!bd_int13probe(&bdinfo[nbdinfo])){
|
||||
if ((unit & 0xf0) == 0xa0 && (unit & 0x0f) < 6)
|
||||
continue; /* Target IDs are not contiguous. */
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if (bdinfo[nbdinfo].bd_flags & BD_FLOPPY){
|
||||
bdinfo[nbdinfo].bd_drive = 'A' + (unit & 0xf);
|
||||
|
@ -23,7 +23,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: main.c,v 1.14 1998/11/02 23:28:11 msmith Exp $
|
||||
* $Id: main.c,v 1.1 1999/02/03 08:39:09 kato Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -164,11 +164,12 @@ extract_currdev(void)
|
||||
* and we are not booting from the lowest-numbered disk type
|
||||
* (ie. SCSI when IDE also exists).
|
||||
*/
|
||||
#ifdef PC98
|
||||
if (major == 6)
|
||||
biosdev = 0x30 + B_UNIT(initial_bootdev);
|
||||
else
|
||||
biosdev = (major << 3) + 0x80 + B_UNIT(initial_bootdev);
|
||||
#ifdef PC98
|
||||
if ((biosdev == 0) && (B_TYPE(initial_bootdev) != 2)) /* biosdev doesn't match major */
|
||||
if (B_TYPE(initial_bootdev) == 6)
|
||||
biosdev = 0x30 + B_UNIT(initial_bootdev);
|
||||
else
|
||||
biosdev = (major << 3) + 0x80 + B_UNIT(initial_bootdev);
|
||||
#else
|
||||
if ((biosdev == 0) && (B_TYPE(initial_bootdev) != 2)) /* biosdev doesn't match major */
|
||||
biosdev = 0x80 + B_UNIT(initial_bootdev); /* assume harddisk */
|
||||
|
Loading…
Reference in New Issue
Block a user