1

私が知っていたように、AHCI拡張ROMはIDP(インデックス/データペア)を使用してAHCIレジスタ(グローバルおよびポートレジスタ)にアクセスします。

ahci 仕様 v1.3 には次のように書かれています。

IDP メカニズムにより、ホスト ソフトウェアは間接 I/O アドレッシングを使用してすべての MMIO レジスタにアクセスできます。

したがって、ABAR が 1MB を超えていても、拡張 ROM はこの方法でリアル モードでMMIO にアクセスできます。

しかし、AHCI MMIO レジスタにアクセスする場合は、以下の展開で OK であることがわかりました。

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)

上記で問題ない場合、メモリ モデルがリアル モードではないことを意味します (ビッグ リアル モードだと思います。つまり、4G でのアクセスは問題ありません)。

私たちの質問は、BIOS が制御を Expansion に転送するときのメモリ モデルが、最近ではビッグ リアル モードであるかどうかです (とにかく、リアル モードではありません)。はいの場合、いつでもメモリ操作を使用して AHCI の MMIO にアクセスできます...それは正しいですか?

  • 以前 IDP を使っていたのは、当時は拡張に制御が移る時点でまだリアルモードだったからではないでしょうか。つまり、メモリ モデルはシステム BIOS に依存しますね。
4

1 に答える 1