linux中mips 32bit页表相关定义

include/asm-mips/pgtable.h中,定义了pte_none和pte_present等宏
#define pte_none(pte)  (!(pte_val(pte) & ~_PAGE_GLOBAL))
#define pte_present(pte) (pte_val(pte) & _PAGE_PRESENT)
另外对于32位机器,#include <asm/pgtable-32.h>
#ifdef CONFIG_32BIT
#include <asm/pgtable-32.h>
#endif
#ifdef CONFIG_64BIT
#include <asm/pgtable-64.h>
#endif

include/asm-mips/pgtable-32.h中定义了__pgd_offset、__pud_offset、__pmd_offset等,也定义了PGDIR_SHIFT、PGDIR_SIZE、PGDIR_MASK和pgd_offset等宏:
#define __pgd_offset(address) pgd_index(address)
#define __pud_offset(address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD-1))
#define __pmd_offset(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))
#define PGDIR_SHIFT (2 * PAGE_SHIFT + PTE_ORDER - PTE_T_LOG2)
#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
#define PGDIR_MASK (~(PGDIR_SIZE-1))
/* to find an entry in a page-table-directory */
#define pgd_offset(mm, addr) ((mm)->pgd + pgd_index(addr))
另外
#include <asm/page.h>
#include <asm-generic/pgtable-nopmd.h>


include/asm-mips/page.h中定义了pte_val、pgd_val、pgprot_val等结构体和PAGE_SHIFT等宏
typedef struct { unsigned long pte; } pte_t;
#define pte_val(x) ((x).pte)
#define __pte(x) ((pte_t) { (x) } )
/*
 * Finall the top of the hierarchy, the pgd
 */
typedef struct { unsigned long pgd; } pgd_t;
#define pgd_val(x) ((x).pgd)
#define __pgd(x) ((pgd_t) { (x) } )
/*
 * Manipulate page protection bits
 */
typedef struct { unsigned long pgprot; } pgprot_t;
#define pgprot_val(x) ((x).pgprot)
#define __pgprot(x) ((pgprot_t) { (x) } )
#ifdef CONFIG_PAGE_SIZE_4KB
#define PAGE_SHIFT 12
#endif

include/asm-generic/pgtable-nopmd.h中定义了pmd_val、PMD_SHIFT、PTRS_PER_PMD、PMD_SIZE、PMD_MASK等宏
#define PMD_SHIFT PUD_SHIFT
#define PTRS_PER_PMD 1
#define PMD_SIZE   (1UL << PMD_SHIFT)
#define PMD_MASK   (~(PMD_SIZE-1))
在include/asm-generic/pgtable-nopmd.h中#include <asm-generic/pgtable-nopud.h>


include/asm-generic/pgtable-nopud.h中定义了pud_val、PUD_SHIFT、PTRS_PER_PUD、PUD_SIZE、PUD_MASK等宏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值