summaryrefslogtreecommitdiff
path: root/bios
diff options
context:
space:
mode:
Diffstat (limited to 'bios')
-rw-r--r--bios/rombios.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/bios/rombios.c b/bios/rombios.c
index 146dd52a..89c5b168 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -4614,28 +4614,37 @@ ASM_END
return;
break;
case 5:
+ /* vbe physical mapping */
+ set_e820_range(ES, regs.u.r16.di, 0xc0000000,
+ 0xc1000000, 0, 0, 2);
+ regs.u.r32.ebx = 6;
+ regs.u.r32.eax = 0x534D4150;
+ regs.u.r32.ecx = 0x14;
+ CLEAR_CF();
+ return;
+ case 6:
/* 4 pages before the bios, 3 pages for vmx tss pages,
* the other page for EPT real mode pagetable */
set_e820_range(ES, regs.u.r16.di, 0xfffbc000L,
0xfffc0000L, 0, 0, 2);
- regs.u.r32.ebx = 6;
+ regs.u.r32.ebx = 7;
regs.u.r32.eax = 0x534D4150;
regs.u.r32.ecx = 0x14;
CLEAR_CF();
return;
- case 6:
+ case 7:
/* 256KB BIOS area at the end of 4 GB */
set_e820_range(ES, regs.u.r16.di,
0xfffc0000L, 0x00000000L ,0, 0, 2);
if (extra_highbits_memory_size || extra_lowbits_memory_size)
- regs.u.r32.ebx = 7;
+ regs.u.r32.ebx = 8;
else
regs.u.r32.ebx = 0;
regs.u.r32.eax = 0x534D4150;
regs.u.r32.ecx = 0x14;
CLEAR_CF();
return;
- case 7:
+ case 8:
/* Maping of memory above 4 GB */
set_e820_range(ES, regs.u.r16.di, 0x00000000L,
extra_lowbits_memory_size, 1, extra_highbits_memory_size