3.5.1.142. KERNEL_END
#define KERNEL_END __end
KERNEL_END 指向内核镜像结束虚拟地址
3.5.1.143. KERNEL_START
#ifdef CONFIG_XIP_KERNEL
#define KERNEL_START        _sdata
#else
#define KERNEL_START        _stext
#endif
KERNEL_START 代表内核镜像的起始虚拟地址
3.5.1.144. kmap_init
static void __init kmap_init(void)
{
#ifdef CONFIG_HIGHMEM
    pkmap_page_table = early_pte_alloc(pmd_off_k(PKMAP_BASE), PKMAP_BASE, _PAGE_KERNEL_TABLE);
#endif
    early_pte_alloc(pmd_off_k(FIXADDR_START), FIXADDR_START, _PAGE_KERNEL_TABLE);
}
kmap_init 用于建立PMD对应的PTE页表
3.5.1.145. kuser_init
static void __init kuser_init(void *vectors)
{
    extern char __kuser_helper_start[], __kuser_helper_end[];
    int kuser_sz = __kuser_helper_end  - __kuser_helper_start;
    memcpy(vectors + 0x1000 - kuser_sz, __kuser_helper_start, kuser_sz);
    if(tls_emu || has_tls_reg)
        memcpy(vectors + 0xfe0, vectors + 0xfe8, 4);
}
kuser_init 用于将__kuser_helper_start到__kuser_helper_end之间的内容拷贝到异常向量表的指定位置