From 27135b2363603b35425798c983f4041329233cca Mon Sep 17 00:00:00 2001 From: Erwan Velu Date: Thu, 23 Jan 2014 00:05:21 +0100 Subject: 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 ;) --- com32/mboot/mem.c | 1 + core/bios.c | 1 + 2 files changed, 2 insertions(+) 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) -- cgit v1.2.3