mirror of https://github.com/tailix/kernel.git
Fix paging
This commit is contained in:
parent
b1cd004fe8
commit
03baf41ca6
|
@ -143,7 +143,9 @@ void main(
|
|||
kernel_info_print(&kinfo);
|
||||
assert(kernel_info_is_valid(&kinfo), "Invalid kernel information.");
|
||||
|
||||
// TODO: maybe rename to init?
|
||||
paging_clear(&paging);
|
||||
|
||||
paging_identity(&paging);
|
||||
paging_mapkernel(&paging, &kinfo);
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ void paging_enable()
|
|||
|
||||
void paging_clear(struct Paging *const paging)
|
||||
{
|
||||
memset(&paging->page_dir, 0, sizeof(paging->page_dir));
|
||||
memset(paging, 0, sizeof(*paging));
|
||||
}
|
||||
|
||||
void paging_identity(struct Paging *const paging)
|
||||
|
@ -51,10 +51,9 @@ void paging_identity(struct Paging *const paging)
|
|||
for (size_t i = 0; i < PAGE_DIR_LENGTH; ++i) {
|
||||
paging->page_dir[i].addr = PAGE_DIR_ADDR(i * PAGE_BIG_SIZE);
|
||||
|
||||
paging->page_dir[i].unused = 0;
|
||||
paging->page_dir[i].ignored = 0;
|
||||
paging->page_dir[i].available1 = 0;
|
||||
paging->page_dir[i].page_size = 1;
|
||||
paging->page_dir[i].always_0 = 0;
|
||||
paging->page_dir[i].available0 = 0;
|
||||
paging->page_dir[i].accessed = 0;
|
||||
paging->page_dir[i].cache_disabled = 1;
|
||||
paging->page_dir[i].write_through = 1;
|
||||
|
@ -79,10 +78,9 @@ void paging_mapkernel(
|
|||
while (mapped < kinfo->kernel_size) {
|
||||
paging->page_dir[pde].addr = PAGE_DIR_ADDR(kern_phys);
|
||||
|
||||
paging->page_dir[pde].unused = 0;
|
||||
paging->page_dir[pde].ignored = 0;
|
||||
paging->page_dir[pde].available1 = 0;
|
||||
paging->page_dir[pde].page_size = 1;
|
||||
paging->page_dir[pde].always_0 = 0;
|
||||
paging->page_dir[pde].available0 = 0;
|
||||
paging->page_dir[pde].accessed = 0;
|
||||
paging->page_dir[pde].cache_disabled = 0;
|
||||
paging->page_dir[pde].write_through = 0;
|
||||
|
|
|
@ -25,6 +25,7 @@ void paging_load(struct Paging *paging);
|
|||
void paging_enable();
|
||||
|
||||
void paging_clear(struct Paging *paging);
|
||||
|
||||
void paging_identity(struct Paging *paging);
|
||||
void paging_mapkernel(struct Paging *paging, const struct Kernel_Info *kinfo);
|
||||
|
||||
|
|
Loading…
Reference in New Issue