日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

在enable mmu之前可以使用mmu了

發布時間:2025/3/21 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在enable mmu之前可以使用mmu了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在enable mmu之前可以使用mmu嗎? 很多人也許都沒用思考過這個問題,或者認為太簡單了,這不廢話嗎,在enable mmu之前,怎么可能使用mmu呢…

其實這就是大家的一個誤區。事實上只要Core一上電,MMU就可以使用的,只不過是如果你沒用開啟SCTLR.M比特,PE發起的讀寫不會自動經過MMU翻譯,當然這個時候你是可以手動執行AT指令進行翻譯的,在翻譯的時候如果你沒用配置也頁表、基地址、TCR等寄存器,MMU在翻譯也會報錯。

下面我們以optee os代碼為例,展示一下在enable MMU之前,就使用了地址翻譯的這種情況:

void core_init_mmu_regs(struct core_mmu_config *cfg){uint64_t ips = get_physical_addr_size_bits();uint64_t mair = 0;uint64_t tcr = 0;cfg->ttbr0_el1_base = virt_to_phys(l1_xlation_table[0][0]);cfg->ttbr0_core_offset = sizeof(l1_xlation_table[0][0]);mair = MAIR_ATTR_SET(ATTR_DEVICE, ATTR_DEVICE_INDEX);mair |= MAIR_ATTR_SET(ATTR_IWBWA_OWBWA_NTR, ATTR_IWBWA_OWBWA_NTR_INDEX);cfg->mair_el1 = mair;tcr = TCR_RES1;tcr |= TCR_XRGNX_WBWA << TCR_IRGN0_SHIFT;tcr |= TCR_XRGNX_WBWA << TCR_ORGN0_SHIFT;tcr |= TCR_SHX_ISH << TCR_SH0_SHIFT;tcr |= ips << TCR_EL1_IPS_SHIFT;tcr |= 64 - CFG_LPAE_ADDR_SPACE_BITS;/* Disable the use of TTBR1 */tcr |= TCR_EPD1;/** TCR.A1 = 0 => ASID is stored in TTBR0* TCR.AS = 0 => Same ASID size as in Aarch32/ARMv7*/cfg->tcr_el1 = tcr;}

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的在enable mmu之前可以使用mmu了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。