Locore.c
ofwboot は、その
Makefile
の 記述から
(ofwboot.xcf の場合は
-e _entry という部分 を通して、
それ以外の場合は
.elf .xcf: -Ttext ${RELOC}
flat: -Ttext ${RELOC_FLATFILE}
)
_start に制御が渡されるように作られている。(??)
その _start は次のところにある。
sys/arch/macppc/stand/ofwboot/Locore.c:
48 #ifdef XCOFF_GLUE
49 asm("
50 .text
51 .globl _entry
52 _entry:
53 .long _start,0,0
54 ");
55 #endif
56
57 asm("
58 .text
59 .globl _start
60 _start:
..
..
115
116 ba startup
117 ");
上の
116 行目
から 同じ Locore.c の中の 130 行目付辺の
startup に行く
131 static void
132 startup(vpd, res, openfirm, arg, argl)
133 void *vpd;
134 int res;
135 int (*openfirm)(void *);
136 char *arg;
137 int argl;
138 {
139 extern char etext[], _end[], _edata[];
140
141 bzero(_edata, (_end - _edata));
142 openfirmware = openfirm;
143 setup();
144 main();
145 OF_exit();
146 }
setup()
は Locore.c の中にあって短いが、ここで入出力先の設定をしている。
その次に
boot.c
の中 の
main() に行く。
これが NetBSD を起動し、その後本体に制御を移す。
NetBSD を終了した場合には、この 145 行目に実行が移される。
|