Kernel: Expand the kernel memory slot from 16 MiB to 32 MiB

Like in 8cd5477e54, we need to expand the
kernel slot again to be able to boot again.
This commit is contained in:
Liav A 2021-05-14 15:34:26 +03:00 committed by Andreas Kling
parent 7078119c58
commit dac129e10b
Notes: sideshowbarker 2024-07-18 18:00:44 +09:00
3 changed files with 18 additions and 8 deletions

View File

@ -51,7 +51,7 @@ boot_pd0_pt0:
.skip 4096 * 4 .skip 4096 * 4
.global boot_pd3_pts .global boot_pd3_pts
boot_pd3_pts: boot_pd3_pts:
.skip 4096 * 8 .skip 4096 * 16
.global boot_pd3_pt1023 .global boot_pd3_pt1023
boot_pd3_pt1023: boot_pd3_pt1023:
.skip 4096 .skip 4096
@ -91,7 +91,17 @@ boot_pd3 : 512 pde's
5: boot_pd3_pts[5] (3082-3084MB) (pseudo 512 4KB pages) 5: boot_pd3_pts[5] (3082-3084MB) (pseudo 512 4KB pages)
6: boot_pd3_pts[6] (3084-3086MB) (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) 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 the 9 page tables each contain 512 pte's that map individual 4KB pages
@ -145,7 +155,7 @@ start:
/* clear pd3's pt's */ /* clear pd3's pt's */
movl $(boot_pd3_pts - 0xc0000000), %edi movl $(boot_pd3_pts - 0xc0000000), %edi
movl $(1024 * 9), %ecx movl $(1024 * 17), %ecx
xorl %eax, %eax xorl %eax, %eax
rep stosl rep stosl
@ -157,7 +167,7 @@ start:
orl $0x3, 0(%edi) orl $0x3, 0(%edi)
/* add boot_pd3_pts to boot_pd3 */ /* add boot_pd3_pts to boot_pd3 */
movl $8, %ecx movl $16, %ecx
movl $(boot_pd3 - 0xc0000000), %edi movl $(boot_pd3 - 0xc0000000), %edi
movl $(boot_pd3_pts - 0xc0000000), %eax movl $(boot_pd3_pts - 0xc0000000), %eax
@ -182,8 +192,8 @@ start:
addl $4096, %eax addl $4096, %eax
loop 1b loop 1b
/* pseudo identity map the 3072-3090MB range */ /* pseudo identity map the 3072-3102MB range */
movl $(512 * 8), %ecx movl $(512 * 16), %ecx
movl $(boot_pd3_pts - 0xc0000000), %edi movl $(boot_pd3_pts - 0xc0000000), %edi
xorl %eax, %eax xorl %eax, %eax

View File

@ -36,7 +36,7 @@ extern "C" PageDirectoryEntry boot_pd3[1024];
UNMAP_AFTER_INIT PageDirectory::PageDirectory() 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); m_identity_range_allocator.initialize_with_range(VirtualAddress(FlatPtr(0x00000000)), 0x00200000);
// Adopt the page tables already set up by boot.S // Adopt the page tables already set up by boot.S

View File

@ -104,7 +104,7 @@ static Processor s_bsp_processor; // global but let's keep it "private"
extern "C" UNMAP_AFTER_INIT [[noreturn]] void init() 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! // The kernel has grown too large again!
asm volatile("cli;hlt"); asm volatile("cli;hlt");
} }