[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を渡すように改良してあります。(各種パラメータは決め打ち固定です。)
篠原