Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/riscv64/src/mm/page.c

    r295ee02 r83dab11  
    3636#include <genarch/mm/page_pt.h>
    3737#include <arch/mm/frame.h>
    38 #include <arch/cpu.h>
    3938#include <mm/frame.h>
    4039#include <mm/page.h>
     
    5150void page_arch_init(void)
    5251{
    53         if (config.cpu_active == 1) {
     52        if (config.cpu_active == 1)
    5453                page_mapping_operations = &pt_mapping_operations;
    55                
    56                 page_table_lock(AS_KERNEL, true);
    57                
    58                 /*
    59                  * PA2KA(identity) mapping for all low-memory frames.
    60                  */
    61                 for (uintptr_t cur = 0;
    62                     cur < min(config.identity_size, config.physmem_end);
    63                     cur += FRAME_SIZE)
    64                         page_mapping_insert(AS_KERNEL, PA2KA(cur), cur,
    65                             PAGE_GLOBAL | PAGE_CACHEABLE | PAGE_EXEC | PAGE_WRITE | PAGE_READ);
    66                
    67                 page_table_unlock(AS_KERNEL, true);
    68                
    69                 // FIXME: register page fault extension handler
    70                
    71                 write_satp((uintptr_t) AS_KERNEL->genarch.page_table);
    72                
    73                 /* The boot page table is no longer needed. */
    74                 // FIXME: frame_mark_available(pt_frame, 1);
    75         }
    7654}
    7755
     
    8058}
    8159
    82 void write_satp(uintptr_t ptl0)
    83 {
    84         uint64_t satp = ((ptl0 >> FRAME_WIDTH) & SATP_PFN_MASK) |
    85             SATP_MODE_SV48;
    86        
    87         asm volatile (
    88                 "csrw sptbr, %[satp]\n"
    89                 :: [satp] "r" (satp)
    90         );
    91 }
    92 
    9360/** @}
    9461 */
Note: See TracChangeset for help on using the changeset viewer.