diff options
author | aqua <aqua@iserlohn-fortress.net> | 2024-03-08 17:24:49 +0200 |
---|---|---|
committer | aqua <aqua@iserlohn-fortress.net> | 2024-03-08 22:00:07 +0200 |
commit | 20b97ea7c0dbbdc13800e12ff5c86c00c4a342ec (patch) | |
tree | 473281e5fc8b256827ce1a678573444e1aa5f669 /src/mem | |
parent | Generate src/conf.h (diff) | |
download | kernel-20b97ea7c0dbbdc13800e12ff5c86c00c4a342ec.tar.xz |
Bazel build
Diffstat (limited to 'src/mem')
-rw-r--r-- | src/mem/vmm.c | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/mem/vmm.c b/src/mem/vmm.c deleted file mode 100644 index a07dd72..0000000 --- a/src/mem/vmm.c +++ /dev/null @@ -1,47 +0,0 @@ -#include "../mem.h" -#include <paging.h> - -extern struct DirectoryEntry k_pagedir[1024]; -extern struct TableEntry k_ptable0x300[1024]; - -extern const unsigned MULTIBOOT_SIZE; -extern const unsigned VADDR_BASE; - -unsigned -to_vaddr(unsigned paddr) -{ - return paddr + (unsigned)&VADDR_BASE - (unsigned)&MULTIBOOT_SIZE; -} - -unsigned int -vmm_map(unsigned int paddr, unsigned int vaddr) -{ - struct TableEntry *table; - const unsigned table_idx = vaddr >> 22; /* high 10 bits */ - const unsigned entry_idx = (vaddr >> 12) & 0x3ff; /* low 10 bits */ - - if (paddr & 0xfff || vaddr & 0xfff) return 0; - - if (k_pagedir[table_idx].present == 0) return 0; - table = (struct TableEntry *)to_vaddr(k_pagedir[table_idx].address << 12); - table[entry_idx].address = (paddr >> 12) & 0xfffff; - table[entry_idx].present = 1; - table[entry_idx].writeable = 1; - - return vaddr; -} - -void -alloc4M() -{ - struct DirectoryEntry4MB *directory; - - /* enable pse in cr4 */ - __asm__("movl %cr4, %eax; orl $0x10, %eax; movl %eax, %cr4"); - - directory = (struct DirectoryEntry4MB *)&k_pagedir[0x301]; - directory->address_low = 0x1; - directory->present = 1; - directory->writeable = 1; - directory->pagesize = 1; -} |