[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: beyond PCI-PCI bridge (Re: Compiling mesh.c)
> いまは PCI-PCI bridge を意識したコードを書いていない
> ので config だけじゃ見えないはずです。
> どうやればいいのかはわかっているのでちょっと書いてみ
> ましょうか。
こんな感じかな。
# ソースだけだと楽だ。:-)
*** pci_machdep.c Wed Oct 21 17:54:49 1998
--- pci_machdep.c Wed Dec 23 09:56:09 1998
***************
*** 168,179 ****
r = &pci_bridges[pc];
! out32rb(r->addr, (1 << dev) | (func << 8) | reg);
! DELAY(10);
! data = in32rb(r->data);
! DELAY(10);
! out32rb(r->addr, 0);
! DELAY(10);
}
return data;
--- 168,189 ----
r = &pci_bridges[pc];
! if (bus == r->bus) {
! out32rb(r->addr, (1 << dev) | (func << 8) | reg);
! DELAY(10);
! data = in32rb(r->data);
! DELAY(10);
! out32rb(r->addr, 0);
! DELAY(10);
! } else {
! tag = (tag & 0xff00) | 1;
! out32rb(r->addr, tag | reg);
! DELAY(10);
! data = in32rb(r->data);
! DELAY(10);
! out32rb(r->addr, 0);
! DELAY(10);
! }
}
return data;
***************
*** 204,215 ****
r = &pci_bridges[pc];
! out32rb(r->addr, (1 << dev) | (func << 8) | reg);
! DELAY(10);
! out32rb(r->data, data);
! DELAY(10);
! out32rb(r->addr, 0);
! DELAY(10);
}
}
--- 214,235 ----
r = &pci_bridges[pc];
! if (bus == r->bus) {
! out32rb(r->addr, (1 << dev) | (func << 8) | reg);
! DELAY(10);
! out32rb(r->data, data);
! DELAY(10);
! out32rb(r->addr, 0);
! DELAY(10);
! } else {
! tag = (tag & 0xff00) | 1;
! out32rb(r->addr, tag | reg);
! DELAY(10);
! out32rb(r->data, data);
! DELAY(10);
! out32rb(r->addr, 0);
! DELAY(10);
! }
}
}