diff options
Diffstat (limited to 'bios')
-rw-r--r-- | bios/rombios.c | 17 |
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 |