簡體   English   中英

在ARMv7中,是TTBR0和TTBR1物理或虛擬地址中使用的地址

[英]In ARMv7, is the address used in TTBR0 and TTBR1 physical or virtual

我一直在B3節中的《 v7-A和v7-R的ARM體系結構參考手冊》中查找,無法確定TTBR0和TTBR1寄存器中使用的地址是虛擬地址還是物理地址。

身體上最有意義,但我想確切地知道。

那么,該地址應該是物理地址還是虛擬地址?

是否需要將頁表位置映射為身份地址(PA == VA)?

想象這是一個虛擬地址...

CPU將事務發送到虛擬地址。 為了翻譯它,MMU需要進行桌子行走。 為此,它需要知道要在總線上尋址的RAM的哪一位,因此它在基址寄存器中查找。 太好了,現在它具有虛擬基址,只需要將其轉換為物理地址即可知道總線上要尋址的RAM的哪一位,因此它需要進行表遍歷。 為此,它需要...等等等等。

簡而言之,是的,它們絕對是物理地址。 在LPAE實現中TTBRn是64位的事實也有點線索。 *

一旦設置了頁表並且MMU處於打開狀態,就不需要保留它們的映射關系了,更不用說以任何特定的關系了-如果數據實際上存在於RAM中,則MMU非常滿意。 CPU僅在更新表時才需要將該RAM映射到其地址空間-其余時間它們只是浪費地址空間。

* ...這當然是涉及虛擬化擴展的一個完整謊言;)在這種情況下,它們是中間的物理地址,完全受第二階段轉換的要求。 適用於上述情況。 樂趣。

根據代碼,將pgd的物理地址寫入TTBR。

http://lxr.free-electrons.com/source/arch/arm/include/asm/proc-fns.h#L116

#define cpu_switch_mm(pgd,mm) cpu_do_switch_mm(virt_to_phys(pgd),mm)

物理。 在這方面,它與ARMv5相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM