some cleanups here and there

This commit is contained in:
2025-05-31 17:47:56 +03:00
parent 7c870636c5
commit 681f509099
4 changed files with 1 additions and 200 deletions
-56
View File
@@ -136,59 +136,3 @@ void loadPageDirectory(uint32_t* page_directory) {
: // Нет изменяемых регистров
);
}
void paging_init() {
int i;
// Проверяем физические адреса
uint32_t pd_phys = (uint32_t)kernel_page_directory;
uint32_t pt_phys = (uint32_t)kernel_page_table;
uint32_t user_pt_phys = (uint32_t)user_page_table;
if (pd_phys & 0xFFF || pt_phys & 0xFFF || user_pt_phys & 0xFFF) {
while (1); // Ошибка выравнивания
}
// Заполняем каталог страниц
for (i = 0; i < 1024; i++) {
kernel_page_directory[i] = 0x00000002; // not present
}
// Identity mapping для 0x000000000x003FFFFF
for (i = 0; i < 1024; i++) {
kernel_page_table[i] = (i * 0x1000) | 0x3; // supervisor, present
}
kernel_page_directory[0] = pt_phys | 0x3;
// Ring 3: 0x004000000x007FFFFF, User-accessible
for (i = 0; i < 1024; i++) {
user_page_table[i] = 0; // Изначально не отображено
}
kernel_page_directory[1] = user_pt_phys | 0x7; // Present, R/W, User
// Рекурсивное отображение
kernel_page_directory[1023] = pd_phys | 0x3;
// Проверяем перед загрузкой
if (kernel_page_directory[0] != (pt_phys | 0x3) ||
kernel_page_directory[1023] != (pd_phys | 0x3)) {
printf("OSHIBKA ZAPISI BLYA\n");
while (1); // Ошибка записи
}
loadPageDirectory(kernel_page_directory);
enablePaging();
}
void test_paging() {
uint32_t* pd = (uint32_t*)0xFFFFF000;
uint32_t expected = (uint32_t)kernel_page_table | 0x3;
// Игнорируем дополнительные флаги, проверяем только базовый адрес и present
if ((pd[0] & ~0xFFF) == (expected & ~0xFFF)) {
// Успех
} else {
printf("RECURSION BROKEN!!\n");
printf("pd[0] = 0x%X\n");
printf("(uint32_t)first_page_table | 0x3 = %X", (uint32_t)kernel_page_table | 0x3);
while (1); // Рекурсия сломана
}
}