550W Document
550W, a high-end OS
pgtable.h 文件参考
#include <asm/sbi.h>
#include <common/types.h>
pgtable.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#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)
 

宏定义说明

◆ _PAGE_ACCESSED

#define _PAGE_ACCESSED   (1 << 6) /* Set by hardware on any access */

◆ _PAGE_ACCESSED_OFFSET

#define _PAGE_ACCESSED_OFFSET   6

◆ _PAGE_DIRTY

#define _PAGE_DIRTY   ((uint64_t)1 << 7) /* Set by hardware on any write */

◆ _PAGE_EXEC

#define _PAGE_EXEC   ((uint64_t)1 << 3) /* Executable */

◆ _PAGE_GLOBAL

#define _PAGE_GLOBAL   ((uint64_t)1 << 5) /* Global */

◆ _PAGE_PFN_SHIFT

#define _PAGE_PFN_SHIFT   10lu

◆ _PAGE_PRESENT

#define _PAGE_PRESENT   ((uint64_t)1 << 0)

◆ _PAGE_READ

#define _PAGE_READ   ((uint64_t)1 << 1) /* Readable */

◆ _PAGE_SOFT

#define _PAGE_SOFT   ((uint64_t)1 << 8) /* Reserved for software */

◆ _PAGE_USER

#define _PAGE_USER   ((uint64_t)1 << 4) /* User */

◆ _PAGE_WRITE

#define _PAGE_WRITE   ((uint64_t)1 << 2) /* Writable */

◆ KERNEL_END_PA

#define KERNEL_END_PA   0x80600000lu

◆ KERNEL_START_PA

#define KERNEL_START_PA   0x80200000lu

◆ LARGE_PAGE_SHIFT

#define LARGE_PAGE_SHIFT   21lu

◆ LARGE_PAGE_SIZE

#define LARGE_PAGE_SIZE   (1lu << LARGE_PAGE_SHIFT)

◆ NORMAL_PAGE_SHIFT

#define NORMAL_PAGE_SHIFT   12lu

◆ NORMAL_PAGE_SIZE

#define NORMAL_PAGE_SIZE   (1lu << NORMAL_PAGE_SHIFT)

◆ NUM_PTE_ENTRY

#define NUM_PTE_ENTRY   ((uint64_t)1 << PPN_BITS)

◆ PGDIR_PA

#define PGDIR_PA   0x82000000lu

◆ PPN_BITS

#define PPN_BITS   9lu

◆ SATP_ASID_SHIFT

#define SATP_ASID_SHIFT   44lu

◆ SATP_MODE_SHIFT

#define SATP_MODE_SHIFT   60lu

◆ SATP_MODE_SV39

#define SATP_MODE_SV39   8

◆ SATP_MODE_SV48

#define SATP_MODE_SV48   9

◆ VA_MASK

#define VA_MASK   ((1lu << 39) - 1)

类型定义说明

◆ pagetable_t

typedef uint64_t* pagetable_t

◆ PTE

typedef uint64_t PTE

◆ pte_t

typedef uint64_t pte_t

函数说明

◆ clear_pgdir()

void clear_pgdir ( uintptr_t  pgdir_addr)