因爲我知道AHCI擴展ROM使用IDP(索引/數據對)來訪問AHCI寄存器(全局和端口寄存器)。bios將控制權交給AHCI擴展ROM時的內存模型?
的AHCI規範V1.3說:
的IDP機制允許主機軟件使用間接I/O尋址
因此,即使是ABAR 1MB以上訪問所有MMIO 寄存器擴展ROM仍然可以通過這種方式訪問實模式中的MMIO 。
但我們發現下面的方式擴張中是OK的時候訪問AHCI MMIO寄存器:
push 0000h
pop es ; set es = 0
mov bx, F732h
shl ebx, 16
mov bx, 0000h ; put ABAR to ebx register
mov eax, es:[ebx] ; read AHCI CAP registers to eax(4byte)
如果上面是OK則意味着內存模型現在是不是真正的模式(我想這是大實模式,也就是4G下的接入就OK)
我們的問題是如果BIOS把控制權交給擴展的內存模型現在是大實模式(反正不是實模式)?如果是,那麼我們總是可以使用內存操作來訪問AHCI的MMIO ......這是正確的嗎?
- 之前IDP使用過的原因可能是:當時控制傳遞給擴展仍然是實模式,對嗎?所以內存模型依賴於系統BIOS,對吧?