Kernel Memory Layout on ARM Linux

Start           End             Use
--------------------------------------------------------------------------
ffff8000        ffffffff    copy_user_page / clear_user_page use.
                                For SA11xx and Xscale, this is used to
                                setup a minicache mapping.

ffff1000        ffff7fff   Reserved.
                                Platforms must not use this address range.

ffff0000        ffff0fff   CPU vector page.
                                The CPU vectors are mapped here if the
                                CPU supports vector relocation (control
                                register V bit.)

ffc00000        fffeffff  DMA memory mapping region.  Memory returned
                                by the dma_alloc_xxx functions will be
                                dynamically mapped here.

ff000000        ffbfffff Reserved for future expansion of DMA
                                mapping region.

VMALLOC_END     feffffff        Free for platform use, recommended.
(0xe0000000)                      VMALLOC_END must be aligned to a 2MB
                                             boundary. Usually, the static iomap for platform uses this address.

VMALLOC_START   VMALLOC_END-1   vmalloc() / ioremap() space.
(0xc8800000)                    Memory returned by vmalloc/ioremap will
                                be dynamically placed in this region.
                                VMALLOC_START may be based upon the value
                                of the high_memory variable. VMALLOC_START = high_memory + VMALLOC_OFFSET (8M)

                                high_memory = 0xC000000 + MEM_SIZE

PAGE_OFFSET     high_memory-1   Kernel direct-mapped RAM region.
(0xc0000000)    (0xc8000000)    This maps the platforms RAM, and typically
                                maps all platform RAM in a 1:1 relationship.

 

TASK_SIZE       PAGE_OFFSET-1   Kernel module space
(0xbf000000)                    Kernel modules inserted via insmod are
                                placed here using dynamic mappings.
 /*
  * The module space lives between the addresses given by TASK_SIZE
  * and PAGE_OFFSET - it must be within 32MB of the kernel text.
  */
#define MODULE_END              (PAGE_OFFSET)
 #define MODULE_START            (MODULE_END - 16*1048576)
For ARM, it is 16MB

00001000        TASK_SIZE-1     User space mappings
                                Per-thread mappings are placed here via
                                the mmap() system call.

00000000        00000fff        CPU vector page / null pointer trap
                                CPUs which do not support vector remapping
                                place their vector page here.  NULL pointer
                                dereferences by both the kernel and user
                                space are also caught via this mapping.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值