linux中mips 32bit頁表相關定義

2021-05-27 12:55:09 字數 2068 閱讀 2452

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

#ifdef config_32bit

#include

#endif

#ifdef config_64bit

#include

#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

#include

include/asm-mips/page.h中定義了pte_val、pgd_val、pgprot_val等結構體和page_shift等巨集

typedef struct pte_t;

#define pte_val(x) ((x).pte)

#define __pte(x) ((pte_t) )

/** finall the top of the hierarchy, the pgd

*/typedef struct pgd_t;

#define pgd_val(x) ((x).pgd)

#define __pgd(x) ((pgd_t) )

/** manipulate page protection bits

*/typedef struct pgprot_t;

#define pgprot_val(x) ((x).pgprot)

#define __pgprot(x) ((pgprot_t) )

#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

include/asm-generic/pgtable-nopud.h中定義了pud_val、pud_shift、ptrs_per_pud、pud_size、pud_mask等巨集

MIPS彙編 MIPS32中通用暫存器的使用約定

這段時間一直在學習mips32彙編。mips32並沒有強制指定通用暫存器的使用規則 除了0號暫存器始終為0,比較特殊 但是在實際使用中大家都會遵循一系列的約定。這裡以 的方式予以展示,當作是做個筆記,方便自己以後回看。名稱暫存器號 用途呼叫時是否儲存 zero 0常數0 不適用 v0 v1 2 3計...

DDR3中bank, 16bit和32bit等概念

ddr3中bank,16bit和32bit等概念 最近在看記憶體相關的東東。以前認為記憶體就是塊資源,需要的時候,malloc出來一部分使用即可。對內部的東東沒有深入了解過。剛開始看起來,感覺有點丈二和尚。通過各種查詢,並請教牛人,對基本概念有了個初步了解,先總結一把。先說說bank。看到bank首...

DDR3中bank, 16bit和32bit等概念

ddr3中bank,16bit和32bit等概念 最近在看記憶體相關的東東。以前認為記憶體就是塊資源,需要的時候,malloc出來一部分使用即可。對內部的東東沒有深入了解過。剛開始看起來,感覺有點丈二和尚。通過各種查詢,並請教牛人,對基本概念有了個初步了解,先總結一把。先說說bank。看到bank首...