Fixed formatting in mmgr.c

This commit is contained in:
2021-04-12 01:52:33 -05:00
parent 47a591fe7c
commit 5006addfb5

View File

@@ -35,25 +35,27 @@ struct page_table_entry_t
uint32_t physicalAddress : 20; 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 create_address_space(struct page_stack_t *page_stack)
{ {
physaddr_t table = reserve_page(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; return S_OUT_OF_MEMORY;
} }
struct page_table_entry_t buffer = page_directory[0]; struct page_table_entry_t buffer = page_directory[0];
page_directory[0] = table; page_directory[0] = table;
asm volatile("invlpg $0xFFC00000" ::: "memory"); asm volatile("invlpg $0xFFC00000" ::
memset((void*) page_tables, 0, 1022 * 4); : "memory");
memset((void *)page_tables, 0, 1022 * 4);
page_tables[1022] = page_directory[1022]; page_tables[1022] = page_directory[1022];
page_tables[1023] = page_directory[1023]; page_tables[1023] = page_directory[1023];
page_directory[0] = buffer; page_directory[0] = buffer;
asm volatile("invlpg $0xFFC00000" ::: "memory"); asm volatile("invlpg $0xFFC00000" ::
: "memory");
return table; return table;
} }
@@ -61,22 +63,22 @@ void load_address_space(physaddr_t table)
{ {
asm volatile("mov %0, %%cr3" asm volatile("mov %0, %%cr3"
: :
: "r" (table) : "r"(table)
: "memory"); : "memory");
} }
int map_page(struct page_stack_t *page_stack, void *page, physaddr_t frame, int flags) 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; 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)); 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); 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; return S_OUT_OF_MEMORY;
} }
@@ -91,20 +93,20 @@ int map_page(struct page_stack_t *page_stack, void *page, physaddr_t frame, int
page_tables[table_index].rw = 1; page_tables[table_index].rw = 1;
asm volatile("invlpg (%0)" asm volatile("invlpg (%0)"
: :
: "r" (page) : "r"(page)
: "memory"); : "memory");
return S_OK; return S_OK;
} }
physaddr_t unmap_page(void *page) 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; 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)); 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; return S_OUT_OF_BOUNDS;
} }
@@ -114,7 +116,7 @@ physaddr_t unmap_page(void *page)
memset(&page_tables[table_index], 0, sizeof(struct page_table_entry_t)); memset(&page_tables[table_index], 0, sizeof(struct page_table_entry_t));
asm volatile("invlpg (%0)" asm volatile("invlpg (%0)"
: :
: "r" (page) : "r"(page)
: "memory"); : "memory");
return frame; return frame;
} }