Skip to content
Snippets Groups Projects
Commit 94496468 authored by Frans Kaashoek's avatar Frans Kaashoek
Browse files

Use 4Mbyte pages during boot

parent 843eecfc
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,11 @@ multiboot_header:
# Multiboot entry point. Machine is mostly set up.
.globl multiboot_entry
multiboot_entry:
# Turn on page size extension for 4Mbyte pages
movl %cr4, %eax
orl $(CR4_PSE), %eax
movl %eax, %cr4
# Set page directory
movl $(V2P_WO(bootpgdir)), %eax
movl %eax, %cr3
# Turn on paging.
......
......@@ -50,6 +50,10 @@ start32:
movw %ax, %fs
movw %ax, %gs
# Turn on page size extension for 4Mbyte pages
movl %cr4, %eax
orl $(CR4_PSE), %eax
movl %eax, %cr4
# Use bootpgdir as our initial page table
movl (start-12), %eax
movl %eax, %cr3
......@@ -58,7 +62,7 @@ start32:
orl $(CR0_PE|CR0_PG|CR0_WP), %eax
movl %eax, %cr0
# Switch to the stack allocated by entryothers()
# Switch to the stack allocated by enterothers()
movl (start-4), %esp
# Call mpboot()
call *(start-8)
......
This diff is collapsed.
......@@ -37,6 +37,8 @@
#define CR0_CD 0x40000000 // Cache Disable
#define CR0_PG 0x80000000 // Paging
#define CR4_PSE 0x00000010 // Page size extension
#define SEG_KCODE 1 // kernel code
#define SEG_KDATA 2 // kernel data+stack
#define SEG_KCPU 3 // kernel per-cpu data
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment