diff options
author | Marvin Borner | 2020-05-06 19:04:05 +0200 |
---|---|---|
committer | Marvin Borner | 2020-05-06 19:04:05 +0200 |
commit | d94ffac4a584dc7a4f6f2ec567b8caab05ce9253 (patch) | |
tree | 559cd596a0a407d4b40c1d12d3c6a0686494da16 /src/kernel/memory/paging.c | |
parent | 1a8563a05608b5b5e27eada44cf4790926001c68 (diff) |
New build parameters and shared includes
This changes many files but I've just applied some replace commands.. So
- nothing special!
Diffstat (limited to 'src/kernel/memory/paging.c')
-rw-r--r-- | src/kernel/memory/paging.c | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/src/kernel/memory/paging.c b/src/kernel/memory/paging.c index 67c471f..7a98563 100644 --- a/src/kernel/memory/paging.c +++ b/src/kernel/memory/paging.c @@ -1,44 +1,44 @@ #include <stdint.h> -#include <kernel/memory/paging.h> -#include <kernel/memory/alloc.h> -#include <kernel/system.h> -#include <kernel/lib/lib.h> -#include <kernel/io/io.h> -#include <kernel/acpi/acpi.h> -#include <kernel/tasks/process.h> -#include <kernel/interrupts/interrupts.h> +#include <memory/paging.h> +#include <memory/alloc.h> +#include <system.h> +#include <lib/lib.h> +#include <io/io.h> +#include <acpi/acpi.h> +#include <tasks/process.h> +#include <interrupts/interrupts.h> struct page_directory *paging_current_directory = NULL; struct page_directory *paging_root_directory = NULL; -/* void paging_install(uint32_t multiboot_address) */ +/* void paging_install(u32 multiboot_address) */ /* { */ /* if (!memory_init(multiboot_address)) */ /* paging_set_present(0, memory_get_all() >> 3); // /4 */ -/* paging_set_used(0, ((uint32_t)ASM_KERNEL_END >> 12) + 1); // /4096 */ +/* paging_set_used(0, ((u32)ASM_KERNEL_END >> 12) + 1); // /4096 */ /* } */ struct page_table *get_cr3() { - uint32_t cr3; + u32 cr3; asm volatile("movl %%cr3, %%eax" : "=a"(cr3)); return (struct page_table *)cr3; } -uint32_t get_cr0() +u32 get_cr0() { - uint32_t cr0; + u32 cr0; asm volatile("movl %%cr0, %%eax" : "=a"(cr0)); return cr0; } void set_cr3(struct page_directory *dir) { - uint32_t addr = (uint32_t)&dir->tables[0]; + u32 addr = (u32)&dir->tables[0]; asm volatile("movl %%eax, %%cr3" ::"a"(addr)); } -void set_cr0(uint32_t cr0) +void set_cr0(u32 cr0) { asm volatile("movl %%eax, %%cr0" ::"a"(cr0)); } @@ -83,12 +83,12 @@ struct page_table *paging_make_table() return tab; } -void paging_map(struct page_directory *dir, uint32_t phys, uint32_t virt) +void paging_map(struct page_directory *dir, u32 phys, u32 virt) { short id = virt >> 22; struct page_table *tab = paging_make_table(); - dir->tables[id] = ((struct page_table *)((uint32_t)tab | 3)); // RW + dir->tables[id] = ((struct page_table *)((u32)tab | 3)); // RW for (int i = 0; i < 1024; i++) { tab->pages[i].frame = phys >> 12; @@ -97,12 +97,12 @@ void paging_map(struct page_directory *dir, uint32_t phys, uint32_t virt) } } -void paging_map_user(struct page_directory *dir, uint32_t phys, uint32_t virt) +void paging_map_user(struct page_directory *dir, u32 phys, u32 virt) { short id = virt >> 22; struct page_table *tab = paging_make_table(); - dir->tables[id] = ((struct page_table *)((uint32_t)tab | 3 | 4)); // RW + usermode + dir->tables[id] = ((struct page_table *)((u32)tab | 3 | 4)); // RW + usermode for (int i = 0; i < 1024; i++) { tab->pages[i].frame = phys >> 12; @@ -113,11 +113,11 @@ void paging_map_user(struct page_directory *dir, uint32_t phys, uint32_t virt) } // Hmm -uint32_t paging_get_phys(uint32_t virt) +u32 paging_get_phys(u32 virt) { - uint32_t pdi = virt >> 22; - uint32_t pti = (virt >> 12) & 0x03FF; - return (*(uint32_t *)&paging_current_directory->tables[pdi]->pages[pti]) & 0xFFFFF000; + u32 pdi = virt >> 22; + u32 pti = (virt >> 12) & 0x03FF; + return (*(u32 *)&paging_current_directory->tables[pdi]->pages[pti]) & 0xFFFFF000; } void paging_install() @@ -127,17 +127,17 @@ void paging_install() paging_current_directory = paging_make_directory(); paging_root_directory = paging_current_directory; - for (uint32_t i = 0; i < 0xF0000000; i += PAGE_S) + for (u32 i = 0; i < 0xF0000000; i += PAGE_S) paging_map(paging_root_directory, i, i); paging_switch_directory(paging_root_directory); info("Installed paging"); // Test mallocing - uintptr_t a = (uintptr_t)kmalloc(4096); - uintptr_t b = (uintptr_t)kmalloc(4096); + u32 a = (u32)kmalloc(4096); + u32 b = (u32)kmalloc(4096); kfree((void *)b); kfree((void *)a); - uintptr_t c = (uintptr_t)kmalloc(2048); + u32 c = (u32)kmalloc(2048); assert(a == c); info("kmalloc test succeeded!"); } @@ -145,9 +145,9 @@ void paging_install() void paging_convert_page(struct page_directory *kdir) { for (int i = 0; i < 1024; i++) { - kdir->tables[i] = (struct page_table *)((uint32_t)kdir->tables[i] | 4); // Usermode + kdir->tables[i] = (struct page_table *)((u32)kdir->tables[i] | 4); // Usermode - if (((uint32_t)kdir->tables[i]) & 1) { // Is present + if (((u32)kdir->tables[i]) & 1) { // Is present for (int j = 0; j < 1024; j++) kdir->tables[i]->pages[j].user = 1; // Usermode } @@ -159,14 +159,14 @@ struct page_directory *paging_copy_user_directory(struct page_directory *dir) struct page_directory *copy = paging_make_directory(); memcpy(copy, paging_root_directory, sizeof(struct page_directory)); - for (uint32_t i = 0; i < 1024; i++) { - if (((uint32_t)dir->tables[i]) & 4) { + for (u32 i = 0; i < 1024; i++) { + if (((u32)dir->tables[i]) & 4) { struct page_table *tab = - (struct page_table *)((uint32_t)dir->tables[i] & 0xFFFFF000); + (struct page_table *)((u32)dir->tables[i] & 0xFFFFF000); void *buffer = kmalloc_a(PAGE_S); memcpy(buffer, (void *)(tab->pages[0].frame << 12), PAGE_S); - paging_map_user(copy, (uint32_t)buffer, (uint32_t)i << 22); + paging_map_user(copy, (u32)buffer, (u32)i << 22); } } |