aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Soltys <soltys@ziu.info>2010-08-16 00:31:03 +0200
committerMichal Soltys <soltys@ziu.info>2010-08-22 23:45:15 +0200
commit51b3b315298e824b282cae7a0d894f71be816251 (patch)
tree826e9c2a69c1d4bf8ec5750884860243adc60c8e
parent76dffe2738ed8717f64b3060535b21282a4e9309 (diff)
downloadsyslinux-51b3b315298e824b282cae7a0d894f71be816251.tar.gz
syslinux-51b3b315298e824b282cae7a0d894f71be816251.tar.xz
syslinux-51b3b315298e824b282cae7a0d894f71be816251.zip
chain.c: move reg setup of dos drive to find_dp()
Signed-off-by: Michal Soltys <soltys@ziu.info>
-rw-r--r--com32/chain/chain.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/com32/chain/chain.c b/com32/chain/chain.c
index bdd522ca..0f9adb54 100644
--- a/com32/chain/chain.c
+++ b/com32/chain/chain.c
@@ -669,7 +669,11 @@ int find_dp(struct part_iter **_iter)
error("WARNING: Partitions on floppy devices may not work.\n");
}
+ /* DOS kernels want the drive number in BL instead of DL. Indulge them. */
+ opt.regs.ebx.b[0] = opt.regs.edx.b[0] = (uint8_t)iter->di.disk;
+
*_iter = iter;
+
return 0;
bail:
@@ -910,7 +914,7 @@ int main(int argc, char *argv[])
/* Prepare and set default values */
memset(&opt, 0, sizeof(opt));
- opt.drivename = "boot"; /* potential FIXME: maybe we shouldn't assume boot by default */
+ opt.drivename = "boot"; /* potential FIXME: maybe we shouldn't assume boot by default, do wonder later */
/* Parse arguments */
if(parse_args(argc, argv))
@@ -927,9 +931,6 @@ int main(int argc, char *argv[])
if(find_dp(&iter))
goto bail;
- /* DOS kernels want the drive number in BL instead of DL. Indulge them. */
- opt.regs.ebx.b[0] = opt.regs.edx.b[0] = (uint8_t)iter->di.disk;
-
/* Do hide / unhide if appropriate */
if (opt.hide)
hide_unhide(iter);
@@ -1003,6 +1004,7 @@ int main(int argc, char *argv[])
*(uint32_t *) ((char *)data[sidx].data + 0x1c) = ~0u;
}
+ /* Prepare handover */
if (iter->index) {
if (iter->type == typegpt) {