Nigel
0f0fc9f252
Moved the PMM away from being object orientated as it is just plain annoying renamed src folder to source Set timeout to 5 seconds in the grub config
57 lines
2.1 KiB
C
57 lines
2.1 KiB
C
#pragma once
|
|
#include <stdint.h>
|
|
/*
|
|
This file contains some handy definitions for different types
|
|
that have to do with paging in atleast 32 bit and maybe sometime in the future
|
|
also 64 bit mode.
|
|
*/
|
|
|
|
#define MAX_DIRECTORY_ENTRIES 1024
|
|
#define MAX_PAGE_TABLE_ENTRIES 1024
|
|
#define MAX_PAGES 1024
|
|
|
|
#define PHYSICAL_ADDRESS uint32_t
|
|
#define VIRTUAL_ADDRESS uint32_t
|
|
|
|
#define PageDirectoryEntry uint32_t
|
|
#define PageTableEntry uint32_t
|
|
|
|
|
|
#define KERNEL_VRT_MEMORY_BEGIN 0xC0000000
|
|
#define KERNEL_VRT_MEMORY_END 0xCFFFFFFF
|
|
#define PAGE_SIZE 4096;
|
|
|
|
|
|
// NOTE: FIXME: I am fairly certain these masks are off by one!
|
|
|
|
#define PD32_PRESENT_MASK (0x1 << 0)
|
|
#define PD32_READ_WRITE_MASK (0x1 << 1)
|
|
#define PD32_SUPERVISOR_MASK (0x1 << 2)
|
|
#define PD32_WRITE_THROUGH_MASK (0x1 << 3)
|
|
#define PD32_CACHE_DISABLE_MASK (0x1 << 4)
|
|
#define PD32_ACCESSED_MASK (0x1 << 5)
|
|
#define PD32_AVAILABLE_1_4KB_MASK (0x1 << 6)
|
|
#define PD32_DISABLE_4MB_MASK (0x1 << 6)
|
|
#define PD32_PAGE_SIZE_MASK (0x1 << 7)
|
|
#define PD32_GLOBAL_4MB_MASK (0x1 << 8)
|
|
#define PD32_AVAILABLE_2_4MB_MASK ( 14 << 9)
|
|
#define PD32_AVAILABLE_2_4KB_MASK ( 15 << 8)
|
|
#define PD32_ADDRESS_4KB_MASK (0x8FFFF << 12)
|
|
#define PD32_PAGE_ATTRIBUTE_TABLE_4MB_MASK (0x1 << 12)
|
|
#define PD32_HIGH_HALF_ADDRESS_4MB_MASK (0x7F<< 13)
|
|
#define PD32_RESERVED_4MB_MASK (0x1 << 21)
|
|
#define PD32_LOWER_HALF_ADDRESS_4MB_MASK (0x1FF << 22)
|
|
|
|
#define PT32_PRESENT_MASK (0x1 << 0)
|
|
#define PT32_READ_WRITE_MASK (0x1 << 1)
|
|
#define PT32_SUPERVISOR_MASK (0x1 << 2)
|
|
#define PT32_WRITE_THROUGH_MASK (0x1 << 3)
|
|
#define PT32_CACHE_DISABLE_MASK (0x1 << 4)
|
|
#define PT32_ACCESSED_MASK (0x1 << 5)
|
|
#define PT32_DIRTY_MASK (0x1 << 6)
|
|
#define PT32_PAGE_ATTRIBUTE_TABLE_MASK (0x1 << 7)
|
|
#define PT32_GLOBAL_MASK (0x1 << 8)
|
|
#define PT32_AVAILABLE_MASK (0x7 << 9)
|
|
#define PT32_CACHE_DISABLE_MASK (0x7FFFF << 12)
|
|
|