kvm_sparc64.c (165888) | kvm_sparc64.c (217744) |
---|---|
1/*- 2 * Copyright (c) 1989, 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software developed by the Computer Systems 6 * Engineering group at Lawrence Berkeley Laboratory under DARPA contract 7 * BG 91-66 and contributed to Berkeley. 8 * --- 20 unchanged lines hidden (view full) --- 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * from: FreeBSD: src/lib/libkvm/kvm_i386.c,v 1.15 2001/10/10 17:48:43 34 */ 35 36#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1989, 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software developed by the Computer Systems 6 * Engineering group at Lawrence Berkeley Laboratory under DARPA contract 7 * BG 91-66 and contributed to Berkeley. 8 * --- 20 unchanged lines hidden (view full) --- 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * from: FreeBSD: src/lib/libkvm/kvm_i386.c,v 1.15 2001/10/10 17:48:43 34 */ 35 36#include <sys/cdefs.h> |
37__FBSDID("$FreeBSD: head/lib/libkvm/kvm_sparc64.c 165888 2007-01-08 17:35:36Z imp $"); | 37__FBSDID("$FreeBSD: head/lib/libkvm/kvm_sparc64.c 217744 2011-01-23 11:08:28Z uqs $"); |
38 39#if defined(LIBC_SCCS) && !defined(lint) 40#if 0 41static char sccsid[] = "@(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93"; 42#endif 43#endif /* LIBC_SCCS and not lint */ 44 45/* --- 46 unchanged lines hidden (view full) --- 92_kvm_read_phys(kvm_t *kd, off_t pos, void *buf, size_t size) 93{ 94 95 /* XXX This has to be a raw file read, kvm_read is virtual. */ 96 if (lseek(kd->pmfd, pos, SEEK_SET) == -1) { 97 _kvm_syserr(kd, kd->program, "_kvm_read_phys: lseek"); 98 return (0); 99 } | 38 39#if defined(LIBC_SCCS) && !defined(lint) 40#if 0 41static char sccsid[] = "@(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93"; 42#endif 43#endif /* LIBC_SCCS and not lint */ 44 45/* --- 46 unchanged lines hidden (view full) --- 92_kvm_read_phys(kvm_t *kd, off_t pos, void *buf, size_t size) 93{ 94 95 /* XXX This has to be a raw file read, kvm_read is virtual. */ 96 if (lseek(kd->pmfd, pos, SEEK_SET) == -1) { 97 _kvm_syserr(kd, kd->program, "_kvm_read_phys: lseek"); 98 return (0); 99 } |
100 if (read(kd->pmfd, buf, size) != size) { | 100 if (read(kd->pmfd, buf, size) != (ssize_t)size) { |
101 _kvm_syserr(kd, kd->program, "_kvm_read_phys: read"); 102 return (0); 103 } 104 return (1); 105} 106 107static int 108_kvm_reg_cmp(const void *a, const void *b) --- 32 unchanged lines hidden (view full) --- 141int 142_kvm_initvtop(kvm_t *kd) 143{ 144 struct sparc64_dump_hdr hdr; 145 struct sparc64_dump_reg *regs; 146 struct vmstate *vm; 147 size_t regsz; 148 vm_offset_t pa; | 101 _kvm_syserr(kd, kd->program, "_kvm_read_phys: read"); 102 return (0); 103 } 104 return (1); 105} 106 107static int 108_kvm_reg_cmp(const void *a, const void *b) --- 32 unchanged lines hidden (view full) --- 141int 142_kvm_initvtop(kvm_t *kd) 143{ 144 struct sparc64_dump_hdr hdr; 145 struct sparc64_dump_reg *regs; 146 struct vmstate *vm; 147 size_t regsz; 148 vm_offset_t pa; |
149 vm_size_t mask; | |
150 151 vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm)); 152 if (vm == NULL) { 153 _kvm_err(kd, kd->program, "cannot allocate vm"); 154 return (-1); 155 } 156 kd->vmst = vm; 157 --- 26 unchanged lines hidden (view full) --- 184fail_vm: 185 free(vm); 186 return (-1); 187} 188 189int 190_kvm_kvatop(kvm_t *kd, u_long va, off_t *pa) 191{ | 149 150 vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm)); 151 if (vm == NULL) { 152 _kvm_err(kd, kd->program, "cannot allocate vm"); 153 return (-1); 154 } 155 kd->vmst = vm; 156 --- 26 unchanged lines hidden (view full) --- 183fail_vm: 184 free(vm); 185 return (-1); 186} 187 188int 189_kvm_kvatop(kvm_t *kd, u_long va, off_t *pa) 190{ |
192 struct vmstate *vm; | |
193#if !defined(SUN4V) 194 struct tte tte; | 191#if !defined(SUN4V) 192 struct tte tte; |
193 off_t tte_off; 194 u_long vpn; |
|
195#endif | 195#endif |
196 off_t tte_off, pa_off; 197 u_long pg_off, vpn; | 196 off_t pa_off; 197 u_long pg_off; |
198 int rest; 199 200 pg_off = va & PAGE_MASK; 201 if (va >= VM_MIN_DIRECT_ADDRESS) 202 pa_off = TLB_DIRECT_TO_PHYS(va) & ~PAGE_MASK; 203#if !defined(SUN4V) 204 else { 205 vpn = btop(va); --- 9 unchanged lines hidden (view full) --- 215 rest = PAGE_SIZE - pg_off; 216 pa_off = _kvm_find_off(kd->vmst, pa_off, rest); 217 if (pa_off == KVM_OFF_NOTFOUND) 218 goto invalid; 219 *pa = pa_off + pg_off; 220 return (rest); 221 222invalid: | 198 int rest; 199 200 pg_off = va & PAGE_MASK; 201 if (va >= VM_MIN_DIRECT_ADDRESS) 202 pa_off = TLB_DIRECT_TO_PHYS(va) & ~PAGE_MASK; 203#if !defined(SUN4V) 204 else { 205 vpn = btop(va); --- 9 unchanged lines hidden (view full) --- 215 rest = PAGE_SIZE - pg_off; 216 pa_off = _kvm_find_off(kd->vmst, pa_off, rest); 217 if (pa_off == KVM_OFF_NOTFOUND) 218 goto invalid; 219 *pa = pa_off + pg_off; 220 return (rest); 221 222invalid: |
223 _kvm_err(kd, 0, "invalid address (%x)", va); | 223 _kvm_err(kd, 0, "invalid address (%lx)", va); |
224 return (0); 225} | 224 return (0); 225} |