]> git.ameliathe1st.gay Git - voyage-au-centre-des-fichiers.git/commitdiff
Removed caching for RAM: should fix any possible errors because of different cache...
authorAmelia Coutard <eliottulio.coutard@gmail.com>
Thu, 1 Jun 2023 03:34:51 +0000 (05:34 +0200)
committerAmelia Coutard <eliottulio.coutard@gmail.com>
Thu, 1 Jun 2023 03:34:51 +0000 (05:34 +0200)
kernel/src/boot.S
kernel/src/paging.cpp

index 596383a99fc8488c9061b6eb9023e449d467e4af..f595ff9f79ae6d853dba5bd415b1a66057be8bc2 100644 (file)
@@ -191,6 +191,7 @@ _start:
 
        # Setup 64-bit paging:
        mov $PML4T - KERNEL_VMA, %eax
+       or $0x10, %eax # NO CACHE
        mov %eax, %cr3
 
        # Enable PAE paging, and global pages:
@@ -261,6 +262,7 @@ _start:
 
        # Setup new page tables:
        mov $PML4T - KERNEL_VMA, %rax
+       or $0x10, %eax # NO CACHE
        mov %rax, %cr3
 
        # Setup TSS address in GDT
index 13ea990b9348ad90e94242b0ff88a192e46a2bb9..f53bc15e0bee4a3d962ca434ecacac2e2dd61a17 100644 (file)
@@ -103,7 +103,7 @@ void os::paging::on_all_pages(const os::paging::PML4T& PML4T, void f(page*, phys
 }
 
 void os::paging::load_pml4t(phys_ptr<PML4T> PML4T) {
-       asm volatile("mov %0, %%cr3" :: "r" (PML4T) : "memory");
+       asm volatile("mov %0, %%cr3" :: "r" (PML4T.get_phys_addr() | 0x10) : "memory"); // 0x10 disables the cache.
 }
 
 os::paging::page_allocator_t os::paging::page_allocator{};