qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [Bochs-developers] [PATCH v3 5/6] Don't use unreserved


From: Sebastian Herbszt
Subject: [Qemu-devel] Re: [Bochs-developers] [PATCH v3 5/6] Don't use unreserved memory inBIOS.
Date: Thu, 13 Nov 2008 01:43:35 +0100

Gleb Natapov wrote:
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

This could be a problem if the OS decides to put the wakeup
vector just below the EBDA. But as long as the EBDA is located
above 0x9f000 it should be ok and this can be changed later.

- Sebastian





reply via email to

[Prev in Thread] Current Thread [Next in Thread]