Lines Matching defs:kloader
1 /* $NetBSD: kloader.c,v 1.32 2021/10/11 14:25:05 rin Exp $ */
30 __KERNEL_RCSID(0, "$NetBSD: kloader.c,v 1.32 2021/10/11 14:25:05 rin Exp $");
47 #include <machine/kloader.h>
49 #define PRINTF(fmt, args...) printf("kloader: " fmt, ##args)
74 struct kloader {
91 STATIC struct kloader kloader;
117 if (kloader.bootinfo == NULL) {
126 kloader.ops = ops;
128 if (kloader.called++ == 0) {
130 kloader.vp = kloader_open(filename);
131 if (kloader.vp == NULL)
135 kloader.setuped = TRUE;
152 if (kloader.setuped) {
154 (*kloader.ops->jump)(kloader.loader, kloader.loader_sp,
155 kloader.rebootinfo, kloader.tagstart);
158 if (kloader.ops->reset != NULL) {
160 (*kloader.ops->reset)();
368 memcpy(&nbi, kloader.bootinfo, sizeof(struct kloader_bootinfo));
374 oldbuf = &kloader.bootinfo->_argbuf[0];
388 for (i = 0; i < kloader.bootinfo->argc; ++i) {
389 DPRINTFN(1, " [%d]: %p -> ", i, kloader.bootinfo->argv[i]);
391 (kloader.bootinfo->argv[i] - oldbuf);
400 kloader.rebootinfo = (void *)kv;
406 KDASSERT(kloader.cur_pg);
407 kloader.loader = (void *)PG_VADDR(kloader.cur_pg);
408 memcpy(kloader.loader, kloader.ops->boot, PAGE_SIZE);
411 kloader.loader_sp = (vaddr_t)kloader.loader + PAGE_SIZE;
414 kloader.loader, (void *)kloader.loader_sp, (void *)nbi.entry);
438 PAGE_SIZE, 0, &kloader.pg_head, n, 0);
445 kloader.cur_pg = TAILQ_FIRST(&kloader.pg_head);
446 kloader.tagstart = (void *)PG_VADDR(kloader.cur_pg);
447 kloader.cur_tag = NULL;
460 tag = kloader.cur_tag;
469 pg = kloader.cur_pg;
471 kloader.cur_pg = TAILQ_NEXT(pg, pageq.queue);
486 if (kloader.cur_tag)
487 kloader.cur_tag->next = addr;
488 kloader.cur_tag = tag;
628 struct vnode *vp = kloader.vp;
638 struct vnode *vp = kloader.vp;
662 kloader.bootinfo = kbi;
676 kloader.bootinfo = NULL;
692 struct kloader_page_tag *tag = kloader.tagstart;