mirror of
https://github.com/tailix/kernel.git
synced 2024-10-30 12:03:52 -04:00
Add module "pagedir"
This commit is contained in:
parent
9b6a586f65
commit
a24686c345
4 changed files with 29 additions and 17 deletions
|
@ -6,6 +6,7 @@ OBJS += multiboot.c.o
|
|||
OBJS += panic.c.o panic.asm.cpp.o
|
||||
OBJS += pfa.c.o
|
||||
OBJS += paging.c.o paging.asm.cpp.o
|
||||
OBJS += pagedir.c.o
|
||||
|
||||
# Built-in drivers
|
||||
OBJS += console.c.o
|
||||
|
|
1
arch/x86/pagedir.c
Normal file
1
arch/x86/pagedir.c
Normal file
|
@ -0,0 +1 @@
|
|||
#include "pagedir.h"
|
25
arch/x86/pagedir.h
Normal file
25
arch/x86/pagedir.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
#ifndef KERNELMQ_INCLUDED_PAGEDIR
|
||||
#define KERNELMQ_INCLUDED_PAGEDIR 1
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#define PAGE_DIR_ALIGN 4096
|
||||
|
||||
struct PageDir_Entry {
|
||||
unsigned int present : 1;
|
||||
unsigned int writable : 1;
|
||||
unsigned int user : 1;
|
||||
unsigned int write_through : 1;
|
||||
unsigned int cache_disabled : 1;
|
||||
unsigned int accessed : 1;
|
||||
unsigned int always_0 : 1;
|
||||
unsigned int page_size : 1;
|
||||
unsigned int ignored : 1;
|
||||
unsigned int unused : 3;
|
||||
unsigned int addr : 20;
|
||||
}
|
||||
__attribute__((packed));
|
||||
|
||||
typedef struct PageDir_Entry PageDir[PAGE_DIR_LENGTH] __attribute__((aligned((PAGE_DIR_ALIGN))));
|
||||
|
||||
#endif
|
|
@ -1,6 +1,6 @@
|
|||
#include "paging.h"
|
||||
|
||||
#include "config.h"
|
||||
#include "pagedir.h"
|
||||
#include "panic.h"
|
||||
|
||||
#include <kernelmq/stdlib.h>
|
||||
|
@ -26,21 +26,6 @@
|
|||
|
||||
#define BIG_PAGE_BASE_TO_ADDR(base) ((base) >> 12)
|
||||
|
||||
struct entry {
|
||||
unsigned int present : 1;
|
||||
unsigned int writable : 1;
|
||||
unsigned int user : 1;
|
||||
unsigned int write_through : 1;
|
||||
unsigned int cache_disabled : 1;
|
||||
unsigned int accessed : 1;
|
||||
unsigned int always_0 : 1;
|
||||
unsigned int page_size : 1;
|
||||
unsigned int ignored : 1;
|
||||
unsigned int unused : 3;
|
||||
unsigned int addr : 20;
|
||||
}
|
||||
__attribute__((packed));
|
||||
|
||||
unsigned long read_cr0();
|
||||
unsigned long read_cr4();
|
||||
|
||||
|
@ -48,7 +33,7 @@ void write_cr0(volatile unsigned long);
|
|||
void write_cr3(volatile unsigned long);
|
||||
void write_cr4(volatile unsigned long);
|
||||
|
||||
static struct entry pagedir[PAGE_DIR_LENGTH] __attribute__((aligned(4096)));
|
||||
static PageDir pagedir;
|
||||
|
||||
void paging_enable()
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue