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

[pbsd-mg2] Re: cross compiler



鈴木(康)です。
<199907120951.SAA12040@shin1.sm.sony.co.jp>の記事において
takemura@sm.sony.co.jpさんは書きました。

  | この話を聞くと、compiler の問題というよりは、
  | vrxxx.c のソースに問題があって、私の環境ではたまたま不具合が
  | 表面化しないだけ、という可能性の方が高いようですね。
  | (よくある変数の初期化わすれなど)
  | 
  | ホントに申し訳ないのですが、もし可能ならば、もう少し調べてみては
  | いただけないでしょうか。> 鈴木さんか内山さん
  | 

ある人から報告がありまして、原因が判りました。

vrgiu.c
    235 vrgiu_intr_establish(ga, mode, handler, ctx)
    236         struct vrgiu_attach_args *ga;
    237         int mode;
    238         vrgiu_intr_handler_t handler;
    239         vrgiu_intr_ctx_t ctx;
    240 {
    241         struct vrgiu_softc *sc = (struct vrgiu_softc*)ga->ga_vrgiu;
    242         int s, port;
    243         unsigned long reg;
    244         struct vrgiu_intr_rec *intr_rec;
    245         unsigned long mask;
    246
    247         if (ga->ga_intr == VRGIUCF_INTR_DEFAULT) {
    248                 panic("%s(%d): invalid IRQ#\n");
    249         }
    250         if (sc->sc_intr[port] != NULL &&
    251             sc->sc_intr[port]->mode != mode) {

port が初期化されていません。

ちなみに Makefile で -Wuninitialized にしたら ちゃんと Warning が出ました。

ここを適当に直して、全部 gcc でコンパイルしても MG II で立ち上がる
ことを確認できました。

ただし、同じカーネル(config は直してあります) を CS12 で立ち上げようと
しても、boot_device: のメッセージが出る直前でハングアップします。
pcmcia が probe されないと boot_device: まで行っていましたから、
pcmcia 関係かなとは思うのですが、全然自信がありません。

# ちなみに CS12 は、ソケットが1つしかありませんが、そういう理由
# でしょうか?

--
					鈴木 康司 @NEC
					suz@hpc.bs1.fc.nec.co.jp
					TEL 0423-33-5381