37#ifndef __LOS_PTE_OPS_H__
38#define __LOS_PTE_OPS_H__
59 return MMU_DESCRIPTOR_L1_SECTION_ADDR(addr);
64 return va >> MMU_DESCRIPTOR_L1_SMALL_SHIFT;
89 return (pte1 & MMU_DESCRIPTOR_L1_TYPE_MASK) == MMU_DESCRIPTOR_L1_TYPE_PAGE_TABLE;
94 return (pte1 & MMU_DESCRIPTOR_L1_TYPE_MASK) == MMU_DESCRIPTOR_L1_TYPE_INVALID;
99 return (pte1 & MMU_DESCRIPTOR_L1_TYPE_MASK) == MMU_DESCRIPTOR_L1_TYPE_SECTION;
104 return (va % MMU_DESCRIPTOR_L1_SMALL_SIZE) >> MMU_DESCRIPTOR_L2_SMALL_SHIFT;
133 pte2BasePtr[index++] = pte2;
135 pte2 += MMU_DESCRIPTOR_L2_SMALL_SIZE;
137 }
while ((count != 0) && (index != MMU_DESCRIPTOR_L2_NUMBERS_PER_L1));
149 pte2Ptr[index++] = 0;
157 return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_SMALL_PAGE;
162 return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_SMALL_PAGE_XN;
167 return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_LARGE_PAGE;
172 return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_INVALID;
STATIC INLINE BOOL OsIsPte2Invalid(PTE_T pte2)
STATIC INLINE PTE_T OsGetPte1(PTE_T *pte1BasePtr, vaddr_t va)
STATIC INLINE VOID OsSavePte1(PTE_T *pte1Ptr, PTE_T pte1)
PTE(Page Table Entry),页表条目,保存L1页表项至L1页表
STATIC INLINE BOOL OsIsPte1PageTable(PTE_T pte1)
STATIC INLINE PTE_T OsGetPte2(PTE_T *pte2BasePtr, vaddr_t va)
STATIC INLINE BOOL OsIsPte2SmallPageXN(PTE_T pte2)
STATIC INLINE PTE_T * OsGetPte2Ptr(PTE_T *pte2BasePtr, vaddr_t va)
STATIC INLINE BOOL OsIsPte2LargePage(PTE_T pte2)
STATIC INLINE UINT32 OsSavePte2Continuous(PTE_T *pte2BasePtr, UINT32 index, PTE_T pte2, UINT32 count)
STATIC INLINE PTE_T * OsGetPte1Ptr(PTE_T *pte1BasePtr, vaddr_t va)
pte1BasePtr L1 转换页表基地址
STATIC INLINE BOOL OsIsPte2SmallPage(PTE_T pte2)
STATIC INLINE BOOL OsIsPte1Section(PTE_T pte1)
STATIC INLINE UINT32 OsGetPte2Index(vaddr_t va)
STATIC INLINE PADDR_T OsGetPte1Paddr(PADDR_T PhysTtb, vaddr_t va)
STATIC INLINE BOOL OsIsPte1Invalid(PTE_T pte1)
STATIC INLINE VOID OsClearPte1(PTE_T *pte1Ptr)
STATIC INLINE UINT32 OsGetPte1Index(vaddr_t va)
获取L1 页表项索引
STATIC INLINE VOID OsSavePte2(PTE_T *pte2Ptr, PTE_T pte2)
STATIC INLINE VOID OsClearPte2Continuous(PTE_T *pte2Ptr, UINT32 count)
STATIC INLINE ADDR_T OsTruncPte1(ADDR_T addr)
生成 L1 section格式项地址