[Suzaku:00333] Re: io_block_mapping と ioremap について

Yasushi SHOJI email@hidden
2005年 6月 22日 (水) 15:09:00 JST


At Thu, 16 Jun 2005 21:28:26 +0900,
yashi wrote:
> 
> At Thu, 16 Jun 2005 20:19:02 +0900,
> Masaki Minobe wrote:
> [...]
> > io_block_mapping と ioremap についてです.
> > 
> > 現在ioremapでGPIOなど各コアの物理アドレスを仮想アドレスに
> > マッピングしていて,その後writelなどで出力を行っています.
> > ここではoutlなどは使えずアクセスエラーがおきます.
> 
> outl(writelの方が良いかも; outは x86系の instructionから取られた名前な
> ので; まぁ同じなんですけどね)は32bit用なので、coreが 32bitに対応してい
> れば動くかと思います。

ごめんなさい。勘違いでした。

powerpcでは outlと writelの挙動がちがっています。read{bwl} と
write{bwl}は PCIバスにアクセスするために作られたようなかんがあるのです
が正確なところは分っていません。

ppcではデフォルトで 0xe8000000が _IO_BASEとして使われるようになってい
ます。いまの svは _IO_BASEを定義していない(というか reconfigureなだけ
に、_IO_BASEを定義してよいのかビミョー)ので上記の値が outlで使われてし
まします。

つまり、outl(val, offset)であり、writelは(val, addr)となります。

次期バージョンの dist/kernelで _IO_BASEを定義すべきかどうか(結局どこに
定義しても問題が起る? 0にする?)は検討の余地があると思っています

# 意見ボシュー

現状は、out/in系は使わずに write/read系が良いかと思います。
--
          yashi



suzaku メーリングリストの案内