lenochka/kernel_old/paging.h
2019-03-29 00:27:42 +02:00

37 lines
989 B
C

#ifndef __PAGING_H
#define __PAGING_H
#include "os.h"
#define PAGE_DIR_PRESENT (1<<0)
#define PAGE_DIR_READWRITE (1<<1)
#define PAGE_DIR_USERMODE (1<<2)
#define PAGE_DIR_WRITECACHE (1<<3)
#define PAGE_DIR_NOCACHE (1<<4)
#define PAGE_DIR_ACCESSED (1<<5)
#define PAGE_DIR_PAGESIZE (1<<7)
#define PAGE_DIR_ENTRY(phys,flags) ((phys&0xFFFFF000)|flags)
#define PAGE_TABLE_PRESENT (1<<0)
#define PAGE_TABLE_READWRITE (1<<1)
#define PAGE_TABLE_USERMODE (1<<2)
#define PAGE_TABLE_WRITECACHE (1<<3)
#define PAGE_TABLE_CACHE (1<<4)
#define PAGE_TABLE_GLOBAL (1<<8)
#define PAGE_TABLE_ENTRY(phys,flags) ((phys&0xFFFFF000)|flags)
#define PAGE_DIR_NUM 1024
#define PAGE_TABLE_NUM OS_PM86_MEM_SIZE_4K
//Map physical address to virtual
void page_map(u32 __virt virt,u32 __phys phys,u32 size,u32 flags);
void page_unmap(u32 __virt virt,u32 size);
__phys u32 page_v2p(u32 __virt virt);
extern u32 page_directories[PAGE_DIR_NUM];
extern u32 page_tables[PAGE_TABLE_NUM];
#endif