44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
//
|
|
// Created by rick on 21-02-21.
|
|
//
|
|
|
|
#ifndef NEW_KERNEL_PAGING_H
|
|
#define NEW_KERNEL_PAGING_H
|
|
|
|
#define PAGING_MASK_4K 0xFFFFF000
|
|
#define PAGING_MASK_4M 0xFFC00000
|
|
|
|
#define DIRECTORY_PRESENT_BIT (0)
|
|
#define DIRECTORY_RW_BIT (1)
|
|
#define DIRECTORY_US_BIT (2)
|
|
#define DIRECTORY_WT_BIT (3)
|
|
#define DIRECTORY_CACHE_BIT (4)
|
|
#define DIRECTORY_ACCESSED_BIT (5)
|
|
#define DIRECTORY_PAGE_SIZE_BIT (7)
|
|
|
|
#define DIRECTORY_ADDR_MASK 0xFFFFF000
|
|
#define DIRECTORY_PRESENT_MASK (1 << DIRECTORY_PRESENT_BIT)
|
|
#define DIRECTORY_RW_MASK (1 << DIRECTORY_RW_BIT)
|
|
#define DIRECTORY_US_MASK (1 << DIRECTORY_US_BIT)
|
|
#define DIRECTORY_WT_MASK (1 << DIRECTORY_WT_BIT)
|
|
#define DIRECTORY_CACHE_MASK (1 << DIRECTORY_CACHE_BIT)
|
|
#define DIRECTORY_ACCESSED_MASK (1 << DIRECTORY_ACCESSED_BIT)
|
|
#define DIRECTORY_PAGE_SIZE_MASK (1 << DIRECTORY_PAGE_SIZE_BIT)
|
|
|
|
#define DIRECTORY_SIZE 1024
|
|
|
|
#define PAGING_MODE_4M (1 << 0)
|
|
#define PAGING_MODE_RW (1 << 1)
|
|
#define PAGING_MODE_US (1 << 2)
|
|
|
|
#define PAGING_RESULT_OK 0
|
|
#define PAGING_RESULT_INUSE 1
|
|
#define PAGING_RESULT_ALIGN 2
|
|
#define PAGING_RESULT_ERR 99
|
|
|
|
typedef uint32_t page_directory_entry;
|
|
|
|
typedef uint32_t page_table_entry;
|
|
|
|
#endif //NEW_KERNEL_PAGING_H
|