summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Kernel/Arch/i386/Boot/boot.S22
-rw-r--r--Kernel/VM/PageDirectory.cpp2
-rw-r--r--Kernel/init.cpp2
3 files changed, 18 insertions, 8 deletions
diff --git a/Kernel/Arch/i386/Boot/boot.S b/Kernel/Arch/i386/Boot/boot.S
index c164ff5e7a..a97047cbfa 100644
--- a/Kernel/Arch/i386/Boot/boot.S
+++ b/Kernel/Arch/i386/Boot/boot.S
@@ -51,7 +51,7 @@ boot_pd0_pt0:
.skip 4096 * 4
.global boot_pd3_pts
boot_pd3_pts:
-.skip 4096 * 8
+.skip 4096 * 16
.global boot_pd3_pt1023
boot_pd3_pt1023:
.skip 4096
@@ -91,7 +91,17 @@ boot_pd3 : 512 pde's
5: boot_pd3_pts[5] (3082-3084MB) (pseudo 512 4KB pages)
6: boot_pd3_pts[6] (3084-3086MB) (pseudo 512 4KB pages)
7: boot_pd3_pts[7] (3086-3088MB) (pseudo 512 4KB pages)
- 8: boot_pd3_pt1023 (4094-4096MB) (for page table mappings)
+
+ 8: boot_pd3_pts[8] (3088-3090MB) (pseudo 512 4KB pages)
+ 9: boot_pd3_pts[9] (3090-3076MB) (pseudo 512 4KB pages)
+ 10: boot_pd3_pts[10] (3092-3094MB) (pseudo 512 4KB pages)
+ 11: boot_pd3_pts[11] (3094-3096MB) (pseudo 512 4KB pages)
+ 12: boot_pd3_pts[12] (3096-3098MB) (pseudo 512 4KB pages)
+ 13: boot_pd3_pts[13] (3098-3100MB) (pseudo 512 4KB pages)
+ 14: boot_pd3_pts[14] (3100-3102MB) (pseudo 512 4KB pages)
+ 15: boot_pd3_pts[15] (3102-3104MB) (pseudo 512 4KB pages)
+
+ 16: boot_pd3_pt1023 (4094-4096MB) (for page table mappings)
the 9 page tables each contain 512 pte's that map individual 4KB pages
@@ -145,7 +155,7 @@ start:
/* clear pd3's pt's */
movl $(boot_pd3_pts - 0xc0000000), %edi
- movl $(1024 * 9), %ecx
+ movl $(1024 * 17), %ecx
xorl %eax, %eax
rep stosl
@@ -157,7 +167,7 @@ start:
orl $0x3, 0(%edi)
/* add boot_pd3_pts to boot_pd3 */
- movl $8, %ecx
+ movl $16, %ecx
movl $(boot_pd3 - 0xc0000000), %edi
movl $(boot_pd3_pts - 0xc0000000), %eax
@@ -182,8 +192,8 @@ start:
addl $4096, %eax
loop 1b
- /* pseudo identity map the 3072-3090MB range */
- movl $(512 * 8), %ecx
+ /* pseudo identity map the 3072-3102MB range */
+ movl $(512 * 16), %ecx
movl $(boot_pd3_pts - 0xc0000000), %edi
xorl %eax, %eax
diff --git a/Kernel/VM/PageDirectory.cpp b/Kernel/VM/PageDirectory.cpp
index a3125b743d..b8bbbdbe9b 100644
--- a/Kernel/VM/PageDirectory.cpp
+++ b/Kernel/VM/PageDirectory.cpp
@@ -36,7 +36,7 @@ extern "C" PageDirectoryEntry boot_pd3[1024];
UNMAP_AFTER_INIT PageDirectory::PageDirectory()
{
- m_range_allocator.initialize_with_range(VirtualAddress(0xc1000000), 0x30800000);
+ m_range_allocator.initialize_with_range(VirtualAddress(0xc2000000), 0x2f000000);
m_identity_range_allocator.initialize_with_range(VirtualAddress(FlatPtr(0x00000000)), 0x00200000);
// Adopt the page tables already set up by boot.S
diff --git a/Kernel/init.cpp b/Kernel/init.cpp
index 4dbe4f86a7..855771e272 100644
--- a/Kernel/init.cpp
+++ b/Kernel/init.cpp
@@ -104,7 +104,7 @@ static Processor s_bsp_processor; // global but let's keep it "private"
extern "C" UNMAP_AFTER_INIT [[noreturn]] void init()
{
- if ((FlatPtr)&end_of_kernel_image >= 0xc1000000u) {
+ if ((FlatPtr)&end_of_kernel_image >= 0xc2000000u) {
// The kernel has grown too large again!
asm volatile("cli;hlt");
}