#define ADDRMIN 0x500
static const char cmldr_signature[8] = "cmdcons";
+static int fixed_cnt;
static struct options {
uint32_t flin;
struct disk_info diskinfo;
int drive;
- for (drive = 0x80; drive <= 0xff; drive++) {
+ for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
if (disk_get_params(drive, &diskinfo))
continue; /* Drive doesn't exist */
if (!(boot_part = pi_begin(&diskinfo)))
struct disk_info diskinfo;
int drive;
- for (drive = 0x80; drive <= 0xff; drive++) {
+ for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
if (disk_get_params(drive, &diskinfo))
continue; /* Drive doesn't exist */
if (!(boot_part = pi_begin(&diskinfo)))
struct disk_info diskinfo;
int drive;
- for (drive = 0x80; drive <= 0xff; drive++) {
+ for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
if (disk_get_params(drive, &diskinfo))
continue; /* Drive doesn't exist */
if (!(boot_part = pi_begin(&diskinfo)))
"'boot' and 'fs' are meaningless.\n");
goto bail;
}
+#if 0
/* offsets match, but in case it changes in the future */
if(sdi->c.filesystem == SYSLINUX_FS_ISOLINUX) {
drive = sdi->iso.drive_number;
fs_lba = *sdi->iso.partoffset;
} else {
+#endif
drive = sdi->disk.drive_number;
fs_lba = *sdi->disk.partoffset;
+#if 0
}
+#endif
if (disk_get_params(drive, &diskinfo))
goto bail;
if (!(iter = pi_begin(&diskinfo)))
goto bail;
- /* 'fs' => we should lookup the Syslinux partition number and use it */
+ /* 'fs' => we should lookup the syslinux partition number and use it */
if (!strcmp(opt.drivename, "fs")) {
while (pi_next(&iter)) {
if (iter->start_lba == fs_lba)
if(opt.regs.ip == 0x7C00 && !opt.regs.cs)
opt.regs.esp.l = 0x7C00;
+ /* Get max fixed disk number */
+
+ fixed_cnt = *(uint8_t *)(0x475);
+
/* Get disk/part iterator matching user supplied options */
if(find_dp(&iter))
goto bail;