mirror of
https://github.com/tailix/kernel.git
synced 2024-11-27 11:24:34 -05:00
Add function "paging_load"
This commit is contained in:
parent
bcae0f03b6
commit
3bbe7a934d
4 changed files with 17 additions and 1 deletions
|
@ -5,7 +5,7 @@ CC = $(CCPREFIX)gcc
|
|||
OBJS = start.s.o
|
||||
OBJS += init.c.o
|
||||
OBJS += multiboot.c.o
|
||||
OBJS += paging.c.o
|
||||
OBJS += paging.c.o paging.asm.cpp.o
|
||||
|
||||
# Architecture-independent
|
||||
OBJS += info.c.o
|
||||
|
|
6
arch/paging.asm
Normal file
6
arch/paging.asm
Normal file
|
@ -0,0 +1,6 @@
|
|||
[GLOBAL write_cr3]
|
||||
|
||||
write_cr3:
|
||||
mov eax, [esp+4]
|
||||
mov cr3, eax
|
||||
ret
|
|
@ -26,6 +26,8 @@
|
|||
#define assert(n) if (n) {}
|
||||
#define panic() if (1) {}
|
||||
|
||||
void write_cr3(volatile unsigned long);
|
||||
|
||||
static unsigned long pagedir[I386_VM_PT_ENTRIES] __attribute__((aligned(4096)));
|
||||
|
||||
void paging_clear()
|
||||
|
@ -78,3 +80,10 @@ int paging_mapkernel(const struct KernelMQ_Info *const kinfo)
|
|||
|
||||
return pde;
|
||||
}
|
||||
|
||||
unsigned long paging_load()
|
||||
{
|
||||
unsigned long pagedir_phys = (unsigned long)pagedir;
|
||||
write_cr3(pagedir_phys);
|
||||
return pagedir_phys;
|
||||
}
|
||||
|
|
|
@ -6,5 +6,6 @@
|
|||
void paging_clear();
|
||||
void paging_identity(const struct KernelMQ_Info *kinfo);
|
||||
int paging_mapkernel(const struct KernelMQ_Info *kinfo);
|
||||
unsigned long paging_load();
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue