- // 将内核占据的页设为已占用
- size_t pg_count = (uintptr_t)(&__kernel_end - &__kernel_start) >> 12;
- pmm_mark_chunk_occupied(V2P(&__kernel_start) >> 12, pg_count);
- printf("[MM] Allocated %d pages for kernel.\n", pg_count);
-#pragma endregion
-
- size_t vga_buf_pgs = VGA_BUFFER_SIZE >> 12;
-
- // 首先,标记VGA部分为已占用
- pmm_mark_chunk_occupied(VGA_BUFFER_PADDR >> 12, vga_buf_pgs);
-
- // 重映射VGA文本缓冲区(以后会变成显存,i.e., framebuffer)
- for (size_t i = 0; i < vga_buf_pgs; i++)
- {
- vmm_map_page(VGA_BUFFER_VADDR + (i << 12), VGA_BUFFER_PADDR + (i << 12), PG_PREM_RW, PG_PREM_RW);