我有一些 C 代码,转载如下。据我了解,它将 BootPML4 数组的某些位设置为某个值。有人可以解释一下BootPML4
下面的数组是如何填充的吗?另外,如何确保数组中未使用的值清零,同时确保下面的两个设置保持不变?
typedef uint64_t pml4_entry_t;
#define PML4_PROT (INTEL_PTE_VALID | INTEL_PTE_WRITE)
pml4_entry_t BootPML4[PTE_PER_PAGE] __attribute__((section("__HIB, __bootPT"))) = {
[0] = ((uint64_t)(PAGE_SIZE) | PML4_PROT),
[KERNEL_PML4_INDEX] = ((uint64_t)(PAGE_SIZE) | PML4_PROT),
};