Implemented platform_add_block_devices() - if you have more than one bootable
Haiku disk installed, you can now choose between them in the boot loader. Also fixed build - obviously forgot to compile before a last minute change... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14404 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -194,7 +194,7 @@ get_ext_drive_parameters(uint8 drive, drive_parameters *targetParameters)
|
|||||||
{
|
{
|
||||||
drive_parameters *parameter = (drive_parameters *)kDataSegmentScratch;
|
drive_parameters *parameter = (drive_parameters *)kDataSegmentScratch;
|
||||||
|
|
||||||
memset(parameter, 0, sizeof(drive_parameters);
|
memset(parameter, 0, sizeof(drive_parameters));
|
||||||
parameter->parameters_size = sizeof(drive_parameters);
|
parameter->parameters_size = sizeof(drive_parameters);
|
||||||
|
|
||||||
struct bios_regs regs;
|
struct bios_regs regs;
|
||||||
@@ -247,7 +247,7 @@ static status_t
|
|||||||
get_number_of_drives(uint8 *_count)
|
get_number_of_drives(uint8 *_count)
|
||||||
{
|
{
|
||||||
struct bios_regs regs;
|
struct bios_regs regs;
|
||||||
regs.eax = 0x800;
|
regs.eax = BIOS_GET_DRIVE_PARAMETERS;
|
||||||
regs.edx = 0x80;
|
regs.edx = 0x80;
|
||||||
regs.es = 0;
|
regs.es = 0;
|
||||||
regs.edi = 0;
|
regs.edi = 0;
|
||||||
@@ -605,10 +605,26 @@ status_t
|
|||||||
platform_add_block_devices(stage2_args *args, NodeList *devicesList)
|
platform_add_block_devices(stage2_args *args, NodeList *devicesList)
|
||||||
{
|
{
|
||||||
uint8 driveCount;
|
uint8 driveCount;
|
||||||
if (get_number_of_drives(&driveCount) == B_OK)
|
if (get_number_of_drives(&driveCount) != B_OK)
|
||||||
dprintf("number of drives: %d\n", driveCount);
|
return B_ERROR;
|
||||||
|
|
||||||
|
dprintf("number of drives: %d\n", driveCount);
|
||||||
|
|
||||||
|
for (int32 i = 0; i < driveCount; i++) {
|
||||||
|
uint8 driveID = i + 0x80;
|
||||||
|
if (driveID == gBootDriveID)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
BIOSDrive *drive = new BIOSDrive(driveID);
|
||||||
|
if (drive->InitCheck() != B_OK) {
|
||||||
|
dprintf("could not add drive %u\n", driveID);
|
||||||
|
delete drive;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
devicesList->Add(drive);
|
||||||
|
}
|
||||||
|
|
||||||
// ToDo: add other devices
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user