[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pbsd-mg2] Re: merge into current



takemura@sm.sony.co.jp writes:
> 今週末にでも commit できるように準備したいと思います。

> 1. とりあえず、以下のファイルをまとめて commit する。
>    hpcmips のカーネルがコンパイルできるようになる。
>    (クロス環境や user land のコンパイルはできない)
> 
> 	sys/arch/mips/mips/pmap.c

pmap.cの変更についてですが、変更内容に疑問が出てきたので、取りあえずなし
にしておいてください。(変更をcommitしないでください。)

cache操作の関数の仕様を十分に理解していなかったため、原因を勘違いしてい
た可能性が大です。変更によって直ったように見えたのは、たまたま余分に
cache flush操作を行った副作用だったような気がします。

(いいわけ)

sys/arch/mips/mips/locore_mips3.Sにはcache命令のオペランドに謎のmagic
numberが多用されていて、ぱっと見ただけでは内容が理解できないようになって
います。たとえば、以下のようなコーディングです。

	cache	1, 0(a0)

わたしはこういうコーディングを見ると読む気がなくなる質なので、それ以上内
容を把握しないまま放置していました。

気を取り直してよく読んでみたところ、pmap.cの該当する部分のcache処理は特
に間違っているわけではないように思えてきました。だとすると、原因は他にあ
るということです。

お忘れの方のために補足すると、pmap.cを修正したのは、raw deviceでHDDの内
容を読み出したときに正しい値が読めないことがあるという現象を解析した結果、
ユーザ空間をカーネル空間にマップする場合のvirtual alias処理が間違ってい
るのではと考えた結果です。実際には原因を勘違いしていたみたいですが。

今週の水曜日はお休みなので、問題の原因をじっくり探ってみようと思います。

# いっそのことページサイズを8KBにしてしまおうかしら......

篠原