aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/memory/paging.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/memory/paging.c')
-rw-r--r--src/kernel/memory/paging.c66
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);
}
}