diff options
-rw-r--r-- | Kernel/Arch/i386/Boot/boot.S | 22 | ||||
-rw-r--r-- | Kernel/VM/PageDirectory.cpp | 2 | ||||
-rw-r--r-- | Kernel/init.cpp | 2 |
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"); } |