diff options
| author | 2016-09-01 10:08:03 +0000 | |
|---|---|---|
| committer | 2016-09-01 10:08:03 +0000 | |
| commit | c6383cbeae8d1cc33344f300ce95672ec362aebe (patch) | |
| tree | 41c5b41303aee6916106aefaf5487880ded638b6 /lib/libkvm/kvm_sparc.c | |
| parent | get rid of the imsg buffer usage profiling code. (diff) | |
| download | wireguard-openbsd-c6383cbeae8d1cc33344f300ce95672ec362aebe.tar.xz wireguard-openbsd-c6383cbeae8d1cc33344f300ce95672ec362aebe.zip | |
remove references to sparc
Diffstat (limited to 'lib/libkvm/kvm_sparc.c')
| -rw-r--r-- | lib/libkvm/kvm_sparc.c | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/lib/libkvm/kvm_sparc.c b/lib/libkvm/kvm_sparc.c deleted file mode 100644 index d0329260faa..00000000000 --- a/lib/libkvm/kvm_sparc.c +++ /dev/null @@ -1,250 +0,0 @@ -/* $OpenBSD: kvm_sparc.c,v 1.15 2015/03/30 04:38:56 miod Exp $ */ -/* $NetBSD: kvm_sparc.c,v 1.9 1996/04/01 19:23:03 cgd Exp $ */ - -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software developed by the Computer Systems - * Engineering group at Lawrence Berkeley Laboratory under DARPA contract - * BG 91-66 and contributed to Berkeley. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Sparc machine dependent routines for kvm. Hopefully, the forthcoming - * vm code will one day obsolete this module. - */ - -#include <sys/param.h> -#include <sys/proc.h> -#include <sys/stat.h> -#include <sys/core.h> -#include <sys/kcore.h> -#include <unistd.h> -#include <nlist.h> -#include <kvm.h> - -#include <uvm/uvm_extern.h> -#include <machine/vmparam.h> -#include <machine/pmap.h> -#include <machine/kcore.h> - -#include <limits.h> -#include <db.h> - -#include "kvm_private.h" - - -static int cputyp = -1; -static int pgshift; -static int nptesg; /* [sun4/sun4c] only */ - -#define VA_VPG(va) ((cputyp == CPU_SUN4C || cputyp == CPU_SUN4M) \ - ? VA_SUN4C_VPG(va) \ - : VA_SUN4_VPG(va)) - -#define VA_OFF(va) (va & (kd->nbpg - 1)) - -int _kvm_kvatop44c(kvm_t *, u_long, u_long *); -int _kvm_kvatop4m(kvm_t *, u_long, u_long *); - -void -_kvm_freevtop(kvm_t *kd) -{ - if (kd->vmst != NULL) { - _kvm_err(kd, kd->program, "_kvm_freevtop: internal error"); - kd->vmst = NULL; - } -} - -/* - * Prepare for translation of kernel virtual addresses into offsets - * into crash dump files. We use the MMU specific goop written at the - * front of the crash dump by pmap_dumpmmu(). - */ -int -_kvm_initvtop(kvm_t *kd) -{ - cpu_kcore_hdr_t *cpup = kd->cpu_data; - - switch (cputyp = cpup->cputype) { - case CPU_SUN4: - kd->nbpg = 8196; - pgshift = 13; - break; - case CPU_SUN4C: - case CPU_SUN4M: - kd->nbpg = 4096; - pgshift = 12; - break; - default: - _kvm_err(kd, kd->program, "Unsupported CPU type"); - return (-1); - } - nptesg = NBPSG / kd->nbpg; - return (0); -} - -/* - * Translate a kernel virtual address to a physical address using the - * mapping information in kd->vm. Returns the result in pa, and returns - * the number of bytes that are contiguously available from this - * physical address. This routine is used only for crashdumps. - */ -int -_kvm_kvatop(kvm_t *kd, u_long va, paddr_t *pa) -{ - if (cputyp == -1) - if (_kvm_initvtop(kd) != 0) - return (-1); - - return ((cputyp == CPU_SUN4M) ? _kvm_kvatop4m(kd, va, pa) : - _kvm_kvatop44c(kd, va, pa)); -} - -/* - * (note: sun4 3-level MMU not yet supported) - */ -int -_kvm_kvatop44c(kvm_t *kd, u_long va, u_long *pa) -{ - cpu_kcore_hdr_t *cpup = kd->cpu_data; - int vr, vs, pte, *ptes; - struct segmap *sp; - - if (va < VM_MIN_KERNEL_ADDRESS_OLD) - goto err; - - /* - * Layout of CPU segment: - * cpu_kcore_hdr_t; - * [alignment] - * phys_ram_seg_t[cpup->nmemseg]; - * ptes[cpup->npmegs]; - */ - ptes = (int *)((int)kd->cpu_data + cpup->pmegoffset); - - vr = VA_VREG(va); - vs = VA_VSEG(va); - - sp = &cpup->segmap_store[(vr-NUREG_4C)*NSEGRG + vs]; - if (sp->sg_npte == 0) - goto err; - if (sp->sg_pmeg == cpup->npmeg - 1) /* =seginval */ - goto err; - pte = ptes[sp->sg_pmeg * nptesg + VA_VPG(va)]; - if ((pte & PG_V) != 0) { - long p, off = VA_OFF(va); - - p = (pte & PG_PFNUM) << pgshift; - *pa = p + off; - return (kd->nbpg - off); - } -err: - _kvm_err(kd, 0, "invalid address (%lx)", va); - return (0); -} - -int -_kvm_kvatop4m(kvm_t *kd, u_long va, u_long *pa) -{ - cpu_kcore_hdr_t *cpup = kd->cpu_data; - struct segmap *sp; - int vr, vs, pte; - off_t foff; - - if (va < VM_MIN_KERNEL_ADDRESS_SRMMU) - goto err; - - /* - * Layout of CPU segment: - * cpu_kcore_hdr_t; - * [alignment] - * phys_ram_seg_t[cpup->nmemseg]; - */ - vr = VA_VREG(va); - vs = VA_VSEG(va); - - sp = &cpup->segmap_store[(vr-NUREG_4M)*NSEGRG + vs]; - if (sp->sg_npte == 0) - goto err; - - /* XXX - assume page tables in initial kernel DATA or BSS. */ - foff = _kvm_pa2off(kd, (u_long)&sp->sg_pte[VA_VPG(va)] - KERNBASE); - if (foff == (off_t)-1) - return (0); - - if (_kvm_pread(kd, kd->pmfd, (void *)&pte, sizeof(pte), foff) < 0) { - _kvm_err(kd, kd->program, "cannot read pte for %lx", va); - return (0); - } - - if ((pte & SRMMU_TETYPE) == SRMMU_TEPTE) { - long p, off = VA_OFF(va); - - p = (pte & SRMMU_PPNMASK) << SRMMU_PPNPASHIFT; - *pa = p + off; - return (kd->nbpg - off); - } -err: - _kvm_err(kd, 0, "invalid address (%lx)", va); - return (0); -} - -/* - * Translate a physical address to a file-offset in the crash-dump. - */ -off_t -_kvm_pa2off(kvm_t *kd, paddr_t pa) -{ - cpu_kcore_hdr_t *cpup = kd->cpu_data; - phys_ram_seg_t *mp; - off_t off; - int nmem; - - /* - * Layout of CPU segment: - * cpu_kcore_hdr_t; - * [alignment] - * phys_ram_seg_t[cpup->nmemseg]; - */ - mp = (phys_ram_seg_t *)((int)kd->cpu_data + cpup->memsegoffset); - off = 0; - - /* Translate (sparse) pfnum to (packed) dump offset */ - for (nmem = cpup->nmemseg; --nmem >= 0; mp++) { - if (mp->start <= pa && pa < mp->start + mp->size) - break; - off += mp->size; - } - if (nmem < 0) { - _kvm_err(kd, 0, "invalid address (%lx)", pa); - return (-1); - } - - return (kd->dump_off + off + pa - mp->start); -} |
