地址空间布局

说明:基于arm64平台 linux5.10版本

1、内核空间布局

CONFIG_ARM64_VA_BITS=48
#define VA_BITS            (CONFIG_ARM64_VA_BITS)
#define VA_START           (UL(0xffffffffffffffff) - (UL(1) << VA_BITS) + 1)          /* 0xFFFF 0000 0000 0000 */
#define PAGE_OFFSET        (UL(0xffffffffffffffff) - (UL(1) << (VA_BITS - 1)) + 1)    /* 0xFFFF 8000 0000 0000 */

#define BPF_JIT_REGION_START    (VA_START + KASAN_SHADOW_SIZE)                        /* 0xFFFF 0000 0000 0000 先不考虑KSAN */
#define BPF_JIT_REGION_SIZE     (SZ_128M)
#define BPF_JIT_REGION_END      (BPF_JIT_REGION_START + BPF_JIT_REGION_SIZE)          /* 0xFFFF 0000 0800 0000 */

#define MODULES_END      (MODULES_VADDR + MODULES_VSIZE)                              /* 0xFFFF 0000 1000 0000 */
#define MODULES_VADDR    (BPF_JIT_REGION_END)                                         /* 0xFFFF 0000 0800 0000 */
#define MODULES_VSIZE    (SZ_128M)

/* 线性区都有对应的struct page,假设其为64字节,这里为2T */
#define VMEMMAP_SIZE   (UL(1) << (VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT))
#define VMEMMAP_START  (PAGE_OFFSET - VMEMMAP_SIZE)                                   /* 0xFFFF 7E00 0000 0000 */

#define PCI_IO_SIZE       SZ_16M
#define PCI_IO_END        (VMEMMAP_START - SZ_2M)                                     /* 0xFFFF 7DFF FFE0 0000 */
#define PCI_IO_START      (PCI_IO_END - PCI_IO_SIZE)                                  /* 0xFFFF 7DFF FEE0 0000 */

#define VMALLOC_START     (MODULES_END)                                               /* 0xFFFF 0000 1000 0000 */
#define VMALLOC_END       (PAGE_OFFSET - PUD_SIZE - VMEMMAP_SIZE - SZ_64K)            /* 0xFFFF 7DFF BFFF 0000 */

#define FIXADDR_TOP       (PCI_IO_START - SZ_2M)                                      /* 0xFFFF 7DFF FEC0 0000 */

/* __end_of_permanent_fixed_addresses最大为1k + 7 */
#define FIXADDR_SIZE      (__end_of_permanent_fixed_addresses << PAGE_SHIFT)
#define FIXADDR_START     (FIXADDR_TOP - FIXADDR_SIZE)                                /* 0xFFFF 7DFF FE7F 9000 */

在这里插入图片描述

2、用户空间布局

用户地址空间的大致布局如下图所示:
在这里插入图片描述

参考资料:

Documentation\arm64\memory.txt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值