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

Re: patch for L-Router



TAKEMURA Shin <takemura@netbsd.org> writes:
> 128 バイトが同じだったらイメージとみなすというのはちょっと
> きびしすぎると思うんですよ。
> 
> 	/* stop memory probing at first memory image */
> -	if (bcmp(page, (void *)MIPS_PHYS_TO_KSEG0(0), 128) == 0)
> 		return;
> 
> 	/* stop memory probing at first memory image */
> +	if (bcmp(page, (void *)MIPS_PHYS_TO_KSEG0(0), 128) == 0) {
> +		volatile int *p = (volatile int *)MIPS_PHYS_TO_KSEG1(0);
> +		*p = ~*p;
> +		if (*(volatile int *)(page) == *p)
> 			return;
> +	}
> 
> とかなんとかしたらどうでしょうか?

試していませんが、メモリの先頭を書き壊してカーネルが動かなくなるような気
がします。(kseg0の先頭にはTLB missのハンドラがコピーされています。)

こういう問題があったからまず最初にイメージのチェックを非破壊的にやったよ
うなおぼろげな記憶があるのですが、昔のことなので詳細は忘れました。

たしか、MC-CSシリーズで問題が出たはず。

> このへんはお任せしますので、cvs に入れて欲しいです。
> hpcmips/stand/romboot とかでしょうか?

カーネルのバイナリイメージの先頭にくっつけて、ROMからカーネルをRAMにコピー
して起動するだけの簡単なものを作っていれました。

基本構造は先日のpatchのlocore.Sの先頭に入れてあったのと同じですが、
bootinfoを渡すように改良してあります。(各種パラメータは決め打ち固定です。)

篠原