diff --git a/src/x86/mmgr.c b/src/x86/mmgr.c index 80ce59e..6801c2f 100644 --- a/src/x86/mmgr.c +++ b/src/x86/mmgr.c @@ -12,71 +12,73 @@ struct page_table_entry_t { uint32_t present : 1; - uint32_t rw : 1; + uint32_t rw : 1; - uint32_t usermode : 1; + uint32_t usermode : 1; - uint32_t writeThrough : 1; + uint32_t writeThrough : 1; - uint32_t cacheDisable : 1; + uint32_t cacheDisable : 1; - uint32_t accessed : 1; + uint32_t accessed : 1; - uint32_t dirty : 1; + uint32_t dirty : 1; - uint32_t pat : 1; + uint32_t pat : 1; - uint32_t global : 1; - - uint32_t shared : 1; + uint32_t global : 1; - uint32_t ignored : 2; + uint32_t shared : 1; - uint32_t physicalAddress : 20; + uint32_t ignored : 2; + + uint32_t physicalAddress : 20; }; -struct page_table_entry_t *page_tables = (struct page_table_entry_t*) 0xFFC00000; +struct page_table_entry_t *page_tables = (struct page_table_entry_t *)0xFFC00000; -struct page_table_entry_t *page_directory = (struct page_table_entry_t*) 0xFFFFF000; +struct page_table_entry_t *page_directory = (struct page_table_entry_t *)0xFFFFF000; physaddr_t create_address_space(struct page_stack_t *page_stack) { physaddr_t table = reserve_page(page_stack); - if(table == S_OUT_OF_MEMORY) + if (table == S_OUT_OF_MEMORY) { return S_OUT_OF_MEMORY; } struct page_table_entry_t buffer = page_directory[0]; page_directory[0] = table; - asm volatile("invlpg $0xFFC00000" ::: "memory"); - memset((void*) page_tables, 0, 1022 * 4); + asm volatile("invlpg $0xFFC00000" :: + : "memory"); + memset((void *)page_tables, 0, 1022 * 4); page_tables[1022] = page_directory[1022]; page_tables[1023] = page_directory[1023]; page_directory[0] = buffer; - asm volatile("invlpg $0xFFC00000" ::: "memory"); + asm volatile("invlpg $0xFFC00000" :: + : "memory"); return table; } void load_address_space(physaddr_t table) { asm volatile("mov %0, %%cr3" - : - : "r" (table) - : "memory"); + : + : "r"(table) + : "memory"); } int map_page(struct page_stack_t *page_stack, void *page, physaddr_t frame, int flags) { - if((size_t) page % page_size != 0 || frame % page_size != 0) + if ((size_t)page % page_size != 0 || frame % page_size != 0) { return S_OUT_OF_BOUNDS; } - size_t table_index = (size_t) page / page_size; + size_t table_index = (size_t)page / page_size; size_t directory_index = table_index / (page_size / sizeof(struct page_table_entry_t)); - if(!page_directory[directory_index].present) + if (!page_directory[directory_index].present) { physaddr_t new_table = reserve_page(page_stack); - if(new_table == S_OUT_OF_MEMORY) + if (new_table == S_OUT_OF_MEMORY) { return S_OUT_OF_MEMORY; } @@ -90,21 +92,21 @@ int map_page(struct page_stack_t *page_stack, void *page, physaddr_t frame, int page_tables[table_index].usermode = 1; page_tables[table_index].rw = 1; asm volatile("invlpg (%0)" - : - : "r" (page) - : "memory"); + : + : "r"(page) + : "memory"); return S_OK; } physaddr_t unmap_page(void *page) { - if((size_t) page % page_size != 0) + if ((size_t)page % page_size != 0) { return S_OUT_OF_BOUNDS; } - size_t table_index = (size_t) page / page_size; + size_t table_index = (size_t)page / page_size; size_t directory_index = table_index / (page_size / sizeof(struct page_table_entry_t)); - if(!page_directory[directory_index].present || !page_tables[table_index].present) + if (!page_directory[directory_index].present || !page_tables[table_index].present) { return S_OUT_OF_BOUNDS; } @@ -113,9 +115,9 @@ physaddr_t unmap_page(void *page) physaddr_t frame = page_tables[table_index].physicalAddress << page_bits; memset(&page_tables[table_index], 0, sizeof(struct page_table_entry_t)); asm volatile("invlpg (%0)" - : - : "r" (page) - : "memory"); + : + : "r"(page) + : "memory"); return frame; } } \ No newline at end of file