CTAOS v4
This commit is contained in:
36
SysCore/memory/lib/pde.c
Normal file
36
SysCore/memory/lib/pde.c
Normal file
@ -0,0 +1,36 @@
|
||||
#include "pde.h"
|
||||
|
||||
void pd_entry_add_attrib (pd_entry* entry, unsigned mask) {
|
||||
*entry |= mask;
|
||||
}
|
||||
|
||||
void pd_entry_del_attrib (pd_entry* entry, unsigned mask) {
|
||||
*entry &= ~mask;
|
||||
}
|
||||
|
||||
void pd_entry_set_frame (pd_entry* entry, unsigned address) {
|
||||
*entry = (*entry & ~_I86_PDE_FRAME) | address;
|
||||
}
|
||||
|
||||
unsigned pd_entry_get_frame (pd_entry entry) {
|
||||
return entry&_I86_PDE_FRAME;
|
||||
}
|
||||
|
||||
unsigned char pd_entry_is_present (pd_entry entry) {
|
||||
return (entry & _I86_PDE_PRESENT);
|
||||
}
|
||||
|
||||
unsigned char pd_entry_is_user (pd_entry entry) {
|
||||
return (entry & _I86_PDE_USER);
|
||||
}
|
||||
|
||||
unsigned char pd_entry_is_4mb (pd_entry entry) {
|
||||
return (entry & _I86_PDE_4MB);
|
||||
}
|
||||
|
||||
unsigned char pd_entry_is_writable (pd_entry entry) {
|
||||
return (entry & _I86_PDE_WRITABLE);
|
||||
}
|
||||
|
||||
void pd_entry_enable_global (pd_entry entry) {
|
||||
}
|
30
SysCore/memory/lib/pde.h
Normal file
30
SysCore/memory/lib/pde.h
Normal file
@ -0,0 +1,30 @@
|
||||
#ifndef __PAGE_DIRECTORY_ENTRY_
|
||||
#define __PAGE_DIRECTORY_ENTRY_
|
||||
|
||||
enum __PAGE_PDE_FLAGS {
|
||||
_I86_PDE_PRESENT = 1,
|
||||
_I86_PDE_WRITABLE = 2,
|
||||
_I86_PDE_USER = 4,
|
||||
_I86_PDE_PWT = 8,
|
||||
_I86_PDE_PCD = 0x10,
|
||||
_I86_PDE_ACCESSED = 0x20,
|
||||
_I86_PDE_DIRTY = 0x40,
|
||||
_I86_PDE_4MB = 0x80,
|
||||
_I86_PDE_CPU_GLOBAL = 0x100,
|
||||
_I86_PDE_LV4_GLOBAL = 0x200,
|
||||
_I86_PDE_FRAME = 0x7FFFF000
|
||||
};
|
||||
|
||||
typedef unsigned pd_entry;
|
||||
|
||||
extern void pd_entry_add_attrib (pd_entry* entry, unsigned mask);
|
||||
extern void pd_entry_del_attrib (pd_entry* entry, unsigned mask);
|
||||
extern void pd_entry_set_frame (pd_entry* entry, unsigned address);
|
||||
extern unsigned pd_entry_get_frame (pd_entry entry);
|
||||
|
||||
extern unsigned char pd_entry_is_present (pd_entry entry);
|
||||
extern unsigned char pd_entry_is_user (pd_entry entry);
|
||||
extern unsigned char pd_entry_is_4mb (pd_entry entry);
|
||||
extern unsigned char pd_entry_is_writable (pd_entry entry);
|
||||
extern void pd_entry_enable_global (pd_entry entry);
|
||||
#endif
|
25
SysCore/memory/lib/pte.c
Normal file
25
SysCore/memory/lib/pte.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include "pte.h"
|
||||
|
||||
void pt_entry_add_attrib (pt_entry* entry, unsigned mask) {
|
||||
*entry |= mask;
|
||||
}
|
||||
|
||||
void pt_entry_del_attrib (pt_entry* entry, unsigned mask) {
|
||||
*entry &= ~mask;
|
||||
}
|
||||
|
||||
void pt_entry_set_frame (pt_entry* entry, unsigned address) {
|
||||
*entry = (*entry & ~_I86_PTE_FRAME) | address;
|
||||
}
|
||||
|
||||
unsigned pt_entry_get_frame (pt_entry entry) {
|
||||
return (entry & _I86_PTE_FRAME);
|
||||
}
|
||||
|
||||
unsigned char pt_entry_is_present (pt_entry entry) {
|
||||
return (entry & _I86_PTE_PRESENT);
|
||||
}
|
||||
|
||||
unsigned char pt_entry_is_writable (pt_entry entry) {
|
||||
return (entry & _I86_PTE_WRITABLE);
|
||||
}
|
27
SysCore/memory/lib/pte.h
Normal file
27
SysCore/memory/lib/pte.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef __PAGE_TABLE_ENTRY_
|
||||
#define __PAGE_TABLE_ENTRY_
|
||||
|
||||
enum __PAGE_FLAGS {
|
||||
_I86_PTE_PRESENT = 1,
|
||||
_I86_PTE_WRITABLE = 2,
|
||||
_I86_PTE_USER = 4,
|
||||
_I86_PTE_WRITETHROUGH = 8,
|
||||
_I86_PTE_NOT_CACHEABLE = 0x10,
|
||||
_I86_PTE_ACCESSED = 0x20,
|
||||
_I86_PTE_DIRTY = 0x40,
|
||||
_I86_PTE_PAT = 0x80,
|
||||
_I86_PTE_CPU_GLOBAL = 0x100,
|
||||
_I86_PTE_LV4_GLOBAL = 0x200,
|
||||
_I86_PTE_FRAME = 0x7FFFF000
|
||||
};
|
||||
|
||||
typedef unsigned pt_entry;
|
||||
|
||||
extern void pt_entry_add_attrib (pt_entry* entry, unsigned mask);
|
||||
extern void pt_entry_del_attrib (pt_entry* entry, unsigned mask);
|
||||
extern void pt_entry_set_frame (pt_entry* entry, unsigned address);
|
||||
extern unsigned pt_entry_get_frame (pt_entry entry);
|
||||
|
||||
extern unsigned char pt_entry_is_present (pt_entry entry);
|
||||
extern unsigned char pt_entry_is_writable (pt_entry entry);
|
||||
#endif
|
Reference in New Issue
Block a user