我試圖調試Apple的XNU內核的副本。我在VirtualBox中運行它,但每當引導加載程序將處理器的控制權轉交給XNU時,由於致命的硬件異常,VM監視器會中止執行。調查顯示,XNU尚未將PAE PDPTE中的保留位設置爲零。有人能告訴我這些保留位是什麼(最好是與PAE PDPTE的其餘部分有關)?彙編不是我的特長,而我正在努力調試這個問題。PDPTE無效位
如果你想知道,我有以下的C代碼,它定義了被用作PDPTE數據:
#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),
};
你確定它是PDPTE條目嗎?看起來像頂級PML4 – Leeor