550W Document
550W, a high-end OS
|
宏定义 | |
#define | SATP_MODE_SV39 8 |
#define | SATP_MODE_SV48 9 |
#define | SATP_ASID_SHIFT 44lu |
#define | SATP_MODE_SHIFT 60lu |
#define | NORMAL_PAGE_SHIFT 12lu |
#define | NORMAL_PAGE_SIZE (1lu << NORMAL_PAGE_SHIFT) |
#define | LARGE_PAGE_SHIFT 21lu |
#define | LARGE_PAGE_SIZE (1lu << LARGE_PAGE_SHIFT) |
#define | KERNEL_START_PA 0x80200000lu |
#define | KERNEL_END_PA 0x80600000lu |
#define | PGDIR_PA 0x82000000lu |
#define | _PAGE_ACCESSED_OFFSET 6 |
#define | _PAGE_PRESENT ((uint64_t)1 << 0) |
#define | _PAGE_READ ((uint64_t)1 << 1) /* Readable */ |
#define | _PAGE_WRITE ((uint64_t)1 << 2) /* Writable */ |
#define | _PAGE_EXEC ((uint64_t)1 << 3) /* Executable */ |
#define | _PAGE_USER ((uint64_t)1 << 4) /* User */ |
#define | _PAGE_GLOBAL ((uint64_t)1 << 5) /* Global */ |
#define | _PAGE_ACCESSED (1 << 6) /* Set by hardware on any access */ |
#define | _PAGE_DIRTY ((uint64_t)1 << 7) /* Set by hardware on any write */ |
#define | _PAGE_SOFT ((uint64_t)1 << 8) /* Reserved for software */ |
#define | _PAGE_PFN_SHIFT 10lu |
#define | VA_MASK ((1lu << 39) - 1) |
#define | PPN_BITS 9lu |
#define | NUM_PTE_ENTRY ((uint64_t)1 << PPN_BITS) |
类型定义 | |
typedef uint64_t | pte_t |
typedef uint64_t * | pagetable_t |
typedef uint64_t | PTE |
函数 | |
void | clear_pgdir (uintptr_t pgdir_addr) |
#define _PAGE_ACCESSED (1 << 6) /* Set by hardware on any access */ |
#define _PAGE_ACCESSED_OFFSET 6 |
#define _PAGE_DIRTY ((uint64_t)1 << 7) /* Set by hardware on any write */ |
#define _PAGE_EXEC ((uint64_t)1 << 3) /* Executable */ |
#define _PAGE_GLOBAL ((uint64_t)1 << 5) /* Global */ |
#define _PAGE_PFN_SHIFT 10lu |
#define _PAGE_PRESENT ((uint64_t)1 << 0) |
#define _PAGE_READ ((uint64_t)1 << 1) /* Readable */ |
#define _PAGE_SOFT ((uint64_t)1 << 8) /* Reserved for software */ |
#define _PAGE_USER ((uint64_t)1 << 4) /* User */ |
#define _PAGE_WRITE ((uint64_t)1 << 2) /* Writable */ |
#define KERNEL_END_PA 0x80600000lu |
#define KERNEL_START_PA 0x80200000lu |
#define LARGE_PAGE_SHIFT 21lu |
#define LARGE_PAGE_SIZE (1lu << LARGE_PAGE_SHIFT) |
#define NORMAL_PAGE_SHIFT 12lu |
#define NORMAL_PAGE_SIZE (1lu << NORMAL_PAGE_SHIFT) |
#define NUM_PTE_ENTRY ((uint64_t)1 << PPN_BITS) |
#define PGDIR_PA 0x82000000lu |
#define PPN_BITS 9lu |
#define SATP_ASID_SHIFT 44lu |
#define SATP_MODE_SHIFT 60lu |
#define SATP_MODE_SV39 8 |
#define SATP_MODE_SV48 9 |
#define VA_MASK ((1lu << 39) - 1) |
typedef uint64_t* pagetable_t |
typedef uint64_t PTE |
typedef uint64_t pte_t |
void clear_pgdir | ( | uintptr_t | pgdir_addr | ) |