内存笔记一

head.S

/****************************************************

定义宏pgtbl,带两个参数rd ,phys。

 The byte offset of the kernel image in RAM from the start of RAM.
TEXT_OFFSET := $(textofs-y)

 textofs-y  := 0x00008000 //32k

#define PG_DIR_SIZE     0x4000 //16k

以phy +16k ~ phy+32k存放一级页表

*****************************************************/

.macro  pgtbl, rd, phys                                                                                                                          

        add     \rd, \phys, #TEXT_OFFSET - PG_DIR_SIZE   //phys + 16k --> rd
.endm


/* PAGE_SHIFT determines the page size */                                                                                 
#define PAGE_SHIFT      13                                                                                                                               
#define PAGE_SIZE       (_AC(1,UL) << PAGE_SHIFT)
  //页面的大小为2^13 (8k)


highmem.c

#define PA_HASH_ORDER    7

/*
 * Describes one page->virtual association
 */
struct page_address_map {
    struct page *page;
    void *virtual;
    struct list_head list;
};

static struct page_address_map page_address_maps[LAST_PKMAP];
//在32bit中LAST_PKMAP为512,64bit为8192

//低端内存映射


/*
 * Hash table bucket
 */
static struct page_address_slot {
    struct list_head lh;            /* List of page_address_maps */
    spinlock_t lock;            /* Protect this bucket's list */
} ____cacheline_aligned_in_smp page_address_htable[1<<PA_HASH_ORDER];//128k大小hash数组,存放内存映射(page_address_maps)

static struct page_address_slot *page_slot(const struct page *page)//通过page地址得到hash表的地址
{
    return &page_address_htable[hash_ptr(page, PA_HASH_ORDER)];
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值