Use only first page and last page of low memory. OSes assumes that first
page is used by bios and last page is reserved in e820 map.
Signed-off-by: Gleb Natapov <address@hidden>
---
bios/rombios.c | 11 +++++++----
bios/rombios.h | 1 -
bios/rombios32.c | 11 ++++-------
bios/rombios32start.S | 2 +-
4 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/bios/rombios.c b/bios/rombios.c
index 630cfd2..c6c8b19 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -4547,7 +4547,7 @@ ASM_END
{
case 0:
set_e820_range(ES, regs.u.r16.di,
- 0x0000000L, 0x0009fc00L, 1);
+ 0x0000000L, 0x0009f000L, 1);
regs.u.r32.ebx = 1;
regs.u.r32.eax = 0x534D4150;
regs.u.r32.ecx = 0x14;
@@ -4556,7 +4556,7 @@ ASM_END
break;
case 1:
set_e820_range(ES, regs.u.r16.di,
- 0x0009fc00L, 0x000a0000L, 2);
+ 0x0009f000L, 0x000a0000L, 2);
regs.u.r32.ebx = 2;
regs.u.r32.eax = 0x534D4150;
regs.u.r32.ecx = 0x14;
@@ -10032,8 +10032,11 @@ rombios32_05:
mov gs, ax
cld
- ;; init the stack pointer
- mov esp, #0x00080000
+ ;; init the stack pointer to point below EBDA
+ mov ax, [0x040e]
+ shl eax, #4
+ mov esp, #-0x10
+ add esp, eax