Hi, This is the corresponding C code which can help you understand:
u64 *pml4 = (u64*)pgtable; u64 pdp = pgtable + 0x1000; u64 pml4_entry = pdp | PTE_P | PTE_W | PTU; // present, write, userspace = 0x7 pml4[0] = pml4_entry; The 0x1007 you see is just the calculation of the pml4_entry. Oren Twaig. On 02/03/2015 02:25 PM, Alex Kuleshov wrote: > Hello All, > > I have a question about page tables initialization in the > arch/x86/boot/compressed/head_64.S > > After we clear memory for page tables, there is code which > build PML4: > > leal pgtable + 0(%ebx), %edi > leal 0x1007(%edi), %eax > movl %eax, 0(%edi) > > Why there is offset 0x1007 instead just 0x7? 0x1007 is > 4k + 7bit (PML4E) flags as i understand correctly. But > why we skip first 4k here? > > Thank you. > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to [email protected] > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

