diff options
author | Erwan Velu <erwan@enovance.com> | 2014-01-23 00:05:21 +0100 |
---|---|---|
committer | Erwan Velu <erwan@enovance.com> | 2014-01-23 00:05:21 +0100 |
commit | 27135b2363603b35425798c983f4041329233cca (patch) | |
tree | db75a0ecb5e91eff97b952a33dcbbd2161e255be | |
parent | 3150c7839640859e8ec6ea0243002309e5f9c068 (diff) | |
download | syslinux-27135b2363603b35425798c983f4041329233cca.tar.gz syslinux-27135b2363603b35425798c983f4041329233cca.tar.xz syslinux-27135b2363603b35425798c983f4041329233cca.zip |
mem: Calling int15 for 0x8800
On some code, the intcall 0x15 was missing when playing with 0x8800
making code useless.
That's not a big deal since e820 or e801 shall be provided by host but
anyway, let's fix it ;)
-rw-r--r-- | com32/mboot/mem.c | 1 | ||||
-rw-r--r-- | core/bios.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/com32/mboot/mem.c b/com32/mboot/mem.c index e42b70ba..d5c559a7 100644 --- a/com32/mboot/mem.c +++ b/com32/mboot/mem.c @@ -150,6 +150,7 @@ static int mboot_scan_memory(struct AddrRangeDesc **ardp, uint32_t * dosmem) /* Finally try INT 15h AH=88h */ memset(&ireg, 0, sizeof ireg); ireg.eax.w[0] = 0x8800; + __intcall(0x15, &ireg, &oreg); if (!(oreg.eflags.l & EFLAGS_CF) && oreg.eax.w[0]) { ard[1].size = 20; ard[1].BaseAddr = 1 << 20; diff --git a/core/bios.c b/core/bios.c index 1dfbbe9a..7ad10bb3 100644 --- a/core/bios.c +++ b/core/bios.c @@ -633,6 +633,7 @@ static int bios_scan_memory(scan_memory_callback_t callback, void *data) /* Finally try INT 15h AH=88h */ memset(&ireg, 0, sizeof ireg); ireg.eax.w[0] = 0x8800; + __intcall(0x15, &ireg, &oreg); if (!(oreg.eflags.l & EFLAGS_CF) && oreg.eax.w[0]) { rv = callback(data, (addr_t) 1 << 20, oreg.ecx.w[0] << 10, SMT_FREE); if (rv) |