aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErwan Velu <erwan@enovance.com>2014-01-23 00:05:21 +0100
committerErwan Velu <erwan@enovance.com>2014-01-23 00:05:21 +0100
commit27135b2363603b35425798c983f4041329233cca (patch)
treedb75a0ecb5e91eff97b952a33dcbbd2161e255be
parent3150c7839640859e8ec6ea0243002309e5f9c068 (diff)
downloadsyslinux-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.c1
-rw-r--r--core/bios.c1
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)