diff options
author | Michal Soltys <soltys@ziu.info> | 2010-08-16 00:31:03 +0200 |
---|---|---|
committer | Michal Soltys <soltys@ziu.info> | 2010-08-22 23:45:15 +0200 |
commit | 51b3b315298e824b282cae7a0d894f71be816251 (patch) | |
tree | 826e9c2a69c1d4bf8ec5750884860243adc60c8e | |
parent | 76dffe2738ed8717f64b3060535b21282a4e9309 (diff) | |
download | syslinux-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.c | 10 |
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) { |