Deleted Added
full compact
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}