@@ -644,46 +644,6 @@ void init_memmgt (uint64_t p_hhdm_offset, struct limine_memmap_response* memmap_
644644 */
645645uintptr_t get_kernel_cr3 (void ) { return kernel_cr3 ; }
646646
647- /*!
648- * Walks the page table hierarchy and prints present entries and their address ranges.
649- * @deprecated
650- */
651- void walk_pagetable () {
652- pml4t_entry_t * pml4t_entry = & pml4_base_ptr [1 ];
653- if (!pml4t_entry -> present ) return ;
654-
655- pdpt_entry_t * pdpt_base_ptr =
656- (pdpt_entry_t * )get_vaddr_from_frame (pml4t_entry -> pdpt_base_address );
657- pdpt_entry_t * pdpt_entry = & pdpt_base_ptr [0 ];
658- if (!pdpt_entry -> present ) return ;
659-
660- pd_entry_t * pd_base_ptr = (pd_entry_t * )get_vaddr_from_frame (pdpt_entry -> pd_base_address );
661- for (int k = 0 ; k < 512 ; k ++ ) {
662- pd_entry_t * pd_entry = & pd_base_ptr [k ];
663- if (!pd_entry -> present ) continue ;
664- kprintf ("PD %d: PT Base Address: 0x%lx\n" , k , pd_entry -> pt_base_address << 12 );
665- pt_entry_t * pt_base_ptr = (pt_entry_t * )get_vaddr_from_frame (pd_entry -> pt_base_address );
666-
667- bool is_present_pt [512 ] = {false};
668- for (int k = 0 ; k < 512 ; k ++ )
669- is_present_pt [k ] = (& pt_base_ptr [k ])-> present ;
670-
671- // print ranges of present pd's
672- int range_start = -1 ;
673- for (int k = 0 ; k <= 512 ; k ++ ) {
674- if (k < 512 && is_present_pt [k ]) {
675- if (range_start == -1 ) range_start = k ;
676- } else if (range_start != -1 ) {
677- if (range_start == k - 1 )
678- kprintf (" Present PT: %d\n" , range_start );
679- else
680- kprintf (" Present PTs: %d-%d\n" , range_start , k - 1 );
681- range_start = -1 ;
682- }
683- }
684- }
685- }
686-
687647/*!
688648 * Finds the physical address mapped to a given virtual address.
689649 * @param vaddr The virtual address to look up.
@@ -753,8 +713,7 @@ int clone_user_memory (uint64_t cr3_src, uint64_t* cr3_dest) {
753713
754714 // map the higher half to be exactly the same as kernel's
755715 pml4t_entry_t * krnl_pml4_table = (pml4t_entry_t * )((uint64_t )get_kernel_cr3 () + hhdm_offset );
756- for (int i = 256 ; i < 512 ; i ++ )
757- dest_pml4_table [i ] = krnl_pml4_table [i ];
716+ kmemcpy (& dest_pml4_table [256 ], & krnl_pml4_table [256 ], 256 * sizeof (pml4t_entry_t ));
758717
759718 // deep clone the lower half (user space)
760719 for (uint16_t pml4_index = 0 ; pml4_index < 256 ; pml4_index ++ ) {
0 commit comments