in the 32-bit case, the Linux kernel virtual address starts from 0xc0000000, and 3GB+896MB belongs to kernel space. 896MB to 4GB is high-end memory, not to mention. The information I found on the Internet shows that kernel image starts from 3GB+16MB. Since the kernel page table is linear mapping, after Linux startup, the kernel in physical memory should also start from 16MB. What exactly is stored in the space below 16MB? is it a page table? In the case of two-level paging, the kernel page table and the user process page directory table are both in the kernel space, so that cr3 can load the physical address of the actual page table correctly, so where do these page tables go? Heap space?
in the following article, it is mentioned that the arm kernel starts with 0x8000, and the following 32kb places the page table
.http://www.eetop.cn/blog/html.