+typedef uint32_t x86_pte_t;
+
+/**
+ * @brief 虚拟映射属性
+ *
+ */
+typedef struct {
+ // 物理页码(如果不存在映射,则为0)
+ uint32_t pn;
+ // 物理页地址(如果不存在映射,则为0)
+ uintptr_t pa;
+ // 映射的flags
+ uint16_t flags;
+ // PTE地址
+ x86_pte_t *pte;
+} v_mapping;
+
+typedef struct
+{
+ x86_pte_t entry[PG_MAX_ENTRIES];
+} __attribute__((packed)) x86_page_table;
+
+
+extern void __pg_mount_point;
+
+/* 四个页挂载点,两个页目录挂载点: 用于临时创建&编辑页表 */
+
+#define PD_MOUNT_1 0xAFC00000
+#define PD_MOUNT_2 0xAF800000
+#define PG_MOUNT_BASE 0xAF7FF000
+#define PG_MOUNT_1 (PG_MOUNT_BASE)
+#define PG_MOUNT_2 (PG_MOUNT_BASE - 0x1000)
+#define PG_MOUNT_3 (PG_MOUNT_BASE - 0x2000)
+#define PG_MOUNT_4 (PG_MOUNT_BASE - 0x3000)
+#define PD_REFERENCED L2_BASE_VADDR
+
+#define CURPROC_PTE(vpn) (&((x86_page_table*)(PD_MOUNT_1 | (((vpn) & 0xffc00) << 2)))->entry[(vpn) & 0x3ff])
+#define PTE_MOUNTED(mnt, vpn) (((x86_page_table*)((mnt) | (((vpn) & 0xffc00) << 2)))->entry[(vpn) & 0x3ff])