summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/ResetVector
diff options
context:
space:
mode:
Diffstat (limited to 'OvmfPkg/ResetVector')
-rw-r--r--OvmfPkg/ResetVector/Bin/ResetVector.x64.rawbin628 -> 628 bytes
-rw-r--r--OvmfPkg/ResetVector/Ia32/PageTables64.asm22
2 files changed, 12 insertions, 10 deletions
diff --git a/OvmfPkg/ResetVector/Bin/ResetVector.x64.raw b/OvmfPkg/ResetVector/Bin/ResetVector.x64.raw
index 237d08a293..a3fc97c93e 100644
--- a/OvmfPkg/ResetVector/Bin/ResetVector.x64.raw
+++ b/OvmfPkg/ResetVector/Bin/ResetVector.x64.raw
Binary files differ
diff --git a/OvmfPkg/ResetVector/Ia32/PageTables64.asm b/OvmfPkg/ResetVector/Ia32/PageTables64.asm
index 8280e8f140..b5a4cf8d71 100644
--- a/OvmfPkg/ResetVector/Ia32/PageTables64.asm
+++ b/OvmfPkg/ResetVector/Ia32/PageTables64.asm
@@ -44,8 +44,10 @@ BITS 32
SetCr3ForPageTables64:
;
- ; For OVMF, build some initial page tables at 0x80000. This is just
- ; after the early stack/temp RAM.
+ ; For OVMF, build some initial page tables at 0x800000-0x806000.
+ ;
+ ; This range should match with PcdOvmfSecPageTablesBase and
+ ; PcdOvmfSecPageTablesSize which are declared in the FDF files.
;
; At the end of PEI, the pages tables will be rebuilt into a
; more permanent location by DxeIpl.
@@ -54,21 +56,21 @@ SetCr3ForPageTables64:
mov ecx, 6 * 0x1000 / 4
xor eax, eax
clearPageTablesMemoryLoop:
- mov dword[ecx * 4 + 0x80000 - 4], eax
+ mov dword[ecx * 4 + 0x800000 - 4], eax
loop clearPageTablesMemoryLoop
;
; Top level Page Directory Pointers (1 * 512GB entry)
;
- mov dword[0x80000], 0x81000 + PAGE_PDP_ATTR
+ mov dword[0x800000], 0x801000 + PAGE_PDP_ATTR
;
; Next level Page Directory Pointers (4 * 1GB entries => 4GB)
;
- mov dword[0x81000], 0x82000 + PAGE_PDP_ATTR
- mov dword[0x81008], 0x83000 + PAGE_PDP_ATTR
- mov dword[0x81010], 0x84000 + PAGE_PDP_ATTR
- mov dword[0x81018], 0x85000 + PAGE_PDP_ATTR
+ mov dword[0x801000], 0x802000 + PAGE_PDP_ATTR
+ mov dword[0x801008], 0x803000 + PAGE_PDP_ATTR
+ mov dword[0x801010], 0x804000 + PAGE_PDP_ATTR
+ mov dword[0x801018], 0x805000 + PAGE_PDP_ATTR
;
; Page Table Entries (2048 * 2MB entries => 4GB)
@@ -79,13 +81,13 @@ pageTableEntriesLoop:
dec eax
shl eax, 21
add eax, PAGE_2M_PDE_ATTR
- mov [ecx * 8 + 0x82000 - 8], eax
+ mov [ecx * 8 + 0x802000 - 8], eax
loop pageTableEntriesLoop
;
; Set CR3 now that the paging structures are available
;
- mov eax, 0x80000
+ mov eax, 0x800000
mov cr3, eax
OneTimeCallRet SetCr3ForPageTables64