enable global pages for the kernelspace
This commit is contained in:
parent
fff2708c5a
commit
4514080014
2 changed files with 5 additions and 2 deletions
|
@ -241,7 +241,7 @@ identity_page:
|
|||
shr edi, 9 ; (edi >> 12) * 8 (index for boot_pgt)
|
||||
add edi, boot_pgt
|
||||
mov ebx, eax
|
||||
or ebx, 0x13 ; set present, writable and cache disable bits
|
||||
or ebx, 0x113 ; set present, global, writable and cache disable bits
|
||||
mov DWORD [edi], ebx
|
||||
|
||||
pop ebx
|
||||
|
@ -301,7 +301,7 @@ map_kernel:
|
|||
shr edi, 9 ; (edi >> 12) * 8 (index for boot_pgt)
|
||||
add edi, boot_pgt
|
||||
mov ebx, kernel_start
|
||||
or ebx, 0x00000003 ; set present and writable flags
|
||||
or ebx, 0x103 ; set present, global and writable flags
|
||||
mov ecx, kernel_end ; determine kernel size in number of pages
|
||||
sub ecx, kernel_start
|
||||
shr ecx, 12
|
||||
|
|
|
@ -524,6 +524,9 @@ int arch_paging_init(void)
|
|||
irq_uninstall_handler(14);
|
||||
irq_install_handler(14, pagefault_handler);
|
||||
|
||||
// enable global pages for kernel space (CR4.PGE, see IA32 Vol3 4.10.2.4)
|
||||
write_cr4(read_cr4() | (1 << 7));
|
||||
|
||||
// setup recursive paging
|
||||
boot_pml4.entries[PAGE_MAP_ENTRIES-1] = (size_t) &boot_pml4 | KERN_TABLE;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue