|
|
|
machdep.c
kernel が起動して、
init_main.c の内容に行く前に arch 特有の初期化を行うのが initppc();
locore.S から呼出される。
initppc() の中身は
src/sys/arch/macppc/macppc/machdep.c
に書いてある。
initppc()
- BAT register 初期化
(BAT = Block Address Translation)
- ofmap 保存
ofmaplen = save_ofmap(NULL, 0);
ofmap = alloca(ofmaplen);
save_ofmap(ofmap, ofmaplen);
- trap vectors 初期化
-
cpu_probe_cache() ;
sys/arch/powerpc/ibm4xx/cpu_subr.c
sys/arch/powerpc/mpc6xx/cpu_subr.c
等に定義してある (na 版のみ)
-
install_extint(ext_intr); 割込 Vector を設定
-
__syncicache((void *)EXC_RST, EXC_LAST - EXC_RST + 0x100);
- bootargs の面倒見
- consinit()
- cninit()
stdout があるか確めてから
- (display) cninit_kd();
- ofb_cnattach()
これは
sys/arch/macppc/dev/ofb.c
に書いてある。更に中で
sys/dev/wscons/wsdisplay.c
の中の
wsdisplay_cnattach()
を呼ぶ。
- akbd_cnattach(
- OF_call_method("`usb-kbd-ihandles",
- OF_call_method("`usb-kbd-ihandle"
- OF_call_method("`adb-kbd-ihandle"
- (display) cn_probe, cn_init (consdev_ite)
- (serial) cn_probe, cn_init (consdev_zs)
- ddb/ipkdb の初期化
- Set the page size.
uvm_setpagesize();
- Initialize pmap module.
pmap_bootstrap(startkernel, endkernel);
- ofmap 復帰
restore_ofmap(ofmap, ofmaplen);
この後、Locore.S に戻ってすぐに main() に行く
|
|
|