Lines Matching refs:kd

85 ia64_maphdrs(kvm_t *kd, size_t sz)
87 struct vmstate *vm = kd->vmst;
96 vm->mmapbase = mmap(NULL, sz, PROT_READ, MAP_PRIVATE, kd->pmfd, 0);
98 _kvm_err(kd, kd->program, "cannot mmap corefile");
110 phys_addr2off(kvm_t *kd, uint64_t pa, off_t *ofs, size_t pgsz)
119 e = (Elf64_Ehdr *)(kd->vmst->mmapbase);
133 _kvm_err(kd, kd->program, "invalid physical address %#jx",
139 phys_kvatop(kvm_t *kd, uint64_t va, off_t *ofs)
148 return (phys_addr2off(kd, pa, ofs, 0));
152 pgsz = kd->vmst->pagesize;
158 pt0addr = kd->vmst->kptdir + (pt0no << 3);
159 if (kvm_read(kd, pt0addr, &pt1addr, 8) != 8)
164 if (kvm_read(kd, pt1addr, &pgaddr, 8) != 8)
169 if (kvm_read(kd, pgaddr, &pte, sizeof(pte)) != sizeof(pte))
174 return (phys_addr2off(kd, pa, ofs, pgsz));
180 if (pt0no >= (kd->vmst->pbvm_pgtblsz >> 3))
182 pt0addr = kd->vmst->pbvm_pgtbl[pt0no];
186 return (phys_addr2off(kd, pa, ofs, pgsz));
190 _kvm_err(kd, kd->program, "invalid kernel virtual address %#jx",
197 phys_read(kvm_t *kd, uint64_t pa, void *buf, size_t bufsz)
202 sz = phys_addr2off(kd, pa, &ofs, 0);
206 if (lseek(kd->pmfd, ofs, 0) == -1)
208 return (read(kd->pmfd, buf, bufsz));
216 virt_addr2off(kvm_t *kd, uint64_t va, off_t *ofs, size_t pgsz)
225 e = (Elf64_Ehdr *)(kd->vmst->mmapbase);
239 _kvm_err(kd, kd->program, "invalid virtual address %#jx",
245 virt_kvatop(kvm_t *kd, uint64_t va, off_t *ofs)
248 return (virt_addr2off(kd, va, ofs, 0));
256 _kvm_freevtop(kvm_t *kd)
258 struct vmstate *vm = kd->vmst;
265 kd->vmst = NULL;
269 _kvm_initvtop(kvm_t *kd)
278 kd->vmst = (struct vmstate *)_kvm_malloc(kd, sizeof(*kd->vmst));
279 if (kd->vmst == NULL) {
280 _kvm_err(kd, kd->program, "cannot allocate vm");
285 kd->vmst->pagesize = getpagesize();
287 kd->vmst->pagesize = 8192;
290 if (ia64_maphdrs(kd, sizeof(Elf64_Ehdr)) == -1)
293 ehdr = kd->vmst->mmapbase;
295 if (ia64_maphdrs(kd, hdrsz) == -1)
298 kd->vmst->kvatop = (ehdr->e_flags & EF_IA_64_ABSOLUTE) ?
310 sz = phys_read(kd, ehdr->e_entry, &bi, sizeof(bi));
312 _kvm_err(kd, kd->program,
318 _kvm_err(kd, kd->program, "invalid bootinfo");
321 kd->vmst->pbvm_pgtbl = _kvm_malloc(kd, bi.bi_pbvm_pgtblsz);
322 if (kd->vmst->pbvm_pgtbl == NULL) {
323 _kvm_err(kd, kd->program, "cannot allocate page table");
326 kd->vmst->pbvm_pgtblsz = bi.bi_pbvm_pgtblsz;
327 sz = phys_read(kd, bi.bi_pbvm_pgtbl, kd->vmst->pbvm_pgtbl,
330 _kvm_err(kd, kd->program,
336 kd->vmst->pbvm_pgtbl = NULL;
337 kd->vmst->pbvm_pgtblsz = 0;
349 if (kvm_nlist(kd, nl) != 0) {
350 _kvm_err(kd, kd->program, "bad namelist");
354 if (kvm_read(kd, (nl[0].n_value), &va, sizeof(va)) != sizeof(va)) {
355 _kvm_err(kd, kd->program, "cannot read kptdir");
360 _kvm_err(kd, kd->program, "kptdir is itself virtual");
364 kd->vmst->kptdir = va;
369 _kvm_kvatop(kvm_t *kd, u_long va, off_t *ofs)
373 sz = kd->vmst->kvatop(kd, va, ofs);