入口
    OF 1/2 の場合
    OF 3 の場合
      設置後すぐ
      CDROM 無で
    Mac OS の場合
    その他
  NetBSD
  Booting Media
Primary
  bootxx
Secondary
  xcf/elf
    release(7)
    /usr/mdec
ofwboot
  Locore.c
  boot.c
    main()
    boot-file
    chain()
    OF_chain()
kernel(1)
  locore.S
  machdep.c
    initppc()
kernel(2)
  init_main.c
    main()
その他
  installboot
    旧版
    新版
    実例
  DEFAULT CATCH
GENERIC_MD
  mdsetimage

NetBSD/macppc booting

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()
    1. cninit() stdout があるか確めてから
      • (display) cninit_kd();
        1. ofb_cnattach()
          これは sys/arch/macppc/dev/ofb.c に書いてある。更に中で sys/dev/wscons/wsdisplay.c の中の wsdisplay_cnattach() を呼ぶ。
        2. akbd_cnattach(
        3. OF_call_method("`usb-kbd-ihandles",
        4. OF_call_method("`usb-kbd-ihandle"
        5. OF_call_method("`adb-kbd-ihandle"
      • (display) cn_probe, cn_init (consdev_ite)
      • (serial) cn_probe, cn_init (consdev_zs)
    2. ddb/ipkdb の初期化
  • Set the page size.
            uvm_setpagesize();
    
  • Initialize pmap module.
    pmap_bootstrap(startkernel, endkernel);
    
  • ofmap 復帰
    restore_ofmap(ofmap, ofmaplen);
    
この後、Locore.S に戻ってすぐに main() に行く
Last Update: Sat, 04 May 2019 00:45:20 GMT 1.66 2008/03/08