龍芯32bit地址空間

 

  • 虛擬地址的低 2G 空間是不允許直接訪問的,需要經過 TLB 映射才能正常工作,所以在處理器上電初期、TLB 沒有初始化之前,這部分地址是不能訪問的。
  • user代碼申請空間,需要到內核態,內核幫助其進程申請內存。
  • kseg0 的 cache 一致性屬性是 chaced 的,而 kseg1 的屬性是uncached 的。
  • 開始訪問 BIOS 的 0x1FE0,0000 這個物理地址需要使用 0xBFC0,0000這個虛擬地址了,因爲在處理器上電初期,cache 還沒有初始化,我們的訪問BIOS 不能經過 cache。
  • 0x0-0x1000,0000 這部分是直接映射到主存的低 256M 空間的,也就是使用虛擬地址的 0x8000,0000- x9000,0000 (或者 0xa000,0000-0xb000,0000 )就能直接訪問到主存的低 256M 空間,因爲這個特性,操作系統內核以及 BIOS 解壓後的部分就可以直接放到這個部分來執行。
  • kseg2 這部分地址是給內核以及管理態使用的。然而龍芯在 BIOS 內將這部分地址通過 TLB映射到物理地址的0x4000,0000-0x7FFF,FFFF。這樣就能使用虛擬地址直接訪問PCI 的 MEM 空間。
  • 物理地址的 0x8000,0000-0xFFFF,FFFF 這 2G 空間是映射到主存的 0x0-0x8000,0000 這部分空間的地址 0x8000,0000-0x9000,0000 是重複映射的,目前沒有意義。
  • 0x2000,0000-0x3FFF,FFFF(256M)=IO/Process reg  爲CPU的內部寄存器/PCI/LPC/UART/SPI/IO等控制器的配置寄存器,需要通過TBL來訪問。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章