summaryrefslogtreecommitdiff
path: root/Kernel/Arch
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-02-23 21:50:18 +0100
committerAndreas Kling <kling@serenityos.org>2021-02-23 21:50:18 +0100
commit8cd5477e54a19d5476e9a31d0677e58c9a4ce12d (patch)
tree68834143fb70bf518d787d9ed4c2a38772c75e83 /Kernel/Arch
parent4ba36c6a49bf078bb60ae3eb5dc2161fb26553f9 (diff)
downloadserenity-8cd5477e54a19d5476e9a31d0677e58c9a4ce12d.zip
Kernel: Expand the kernel memory slot from 8 MiB to 16 MiB
We were only 448 KiB away from filling up the old slot size we reserve for the kernel above the 3 GiB mark. This expands the slot to 16 MiB, which allows us to continue booting the kernel until somebody takes the time to improve our loader.
Diffstat (limited to 'Kernel/Arch')
-rw-r--r--Kernel/Arch/i386/Boot/boot.S16
1 files changed, 10 insertions, 6 deletions
diff --git a/Kernel/Arch/i386/Boot/boot.S b/Kernel/Arch/i386/Boot/boot.S
index e068815a60..18cbd6b7ec 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 * 4
+.skip 4096 * 8
.global boot_pd3_pt1023
boot_pd3_pt1023:
.skip 4096
@@ -87,7 +87,11 @@ boot_pd3 : 512 pde's
1: boot_pd3_pts[1] (3074-3076MB) (pseudo 512 4KB pages)
2: boot_pd3_pts[2] (3076-3078MB) (pseudo 512 4KB pages)
3: boot_pd3_pts[3] (3078-3080MB) (pseudo 512 4KB pages)
- 4: boot_pd3_pt1023 (4094-4096MB) (for page table mappings)
+ 4: boot_pd3_pts[4] (3082-3084MB) (pseudo 512 4KB pages)
+ 5: boot_pd3_pts[5] (3084-3086MB) (pseudo 512 4KB pages)
+ 6: boot_pd3_pts[6] (3086-3088MB) (pseudo 512 4KB pages)
+ 7: boot_pd3_pts[7] (3088-3090MB) (pseudo 512 4KB pages)
+ 8: boot_pd3_pt1023 (4094-4096MB) (for page table mappings)
the 9 page tables each contain 512 pte's that map individual 4KB pages
@@ -141,7 +145,7 @@ start:
/* clear pd3's pt's */
movl $(boot_pd3_pts - 0xc0000000), %edi
- movl $(1024 * 5), %ecx
+ movl $(1024 * 9), %ecx
xorl %eax, %eax
rep stosl
@@ -153,7 +157,7 @@ start:
orl $0x3, 0(%edi)
/* add boot_pd3_pts to boot_pd3 */
- movl $4, %ecx
+ movl $8, %ecx
movl $(boot_pd3 - 0xc0000000), %edi
movl $(boot_pd3_pts - 0xc0000000), %eax
@@ -178,8 +182,8 @@ start:
addl $4096, %eax
loop 1b
- /* pseudo identity map the 3072-3080MB range */
- movl $(512 * 4), %ecx
+ /* pseudo identity map the 3072-3090MB range */
+ movl $(512 * 8), %ecx
movl $(boot_pd3_pts - 0xc0000000), %edi
xorl %eax, %eax