Deleted Added
full compact
kvm_sparc64.c (217744) kvm_sparc64.c (221869)
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 217744 2011-01-23 11:08:28Z uqs $");
37__FBSDID("$FreeBSD: head/lib/libkvm/kvm_sparc64.c 221869 2011-05-14 01:53:38Z attilio $");
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/*

--- 137 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{
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/*

--- 137 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{
191#if !defined(SUN4V)
192 struct tte tte;
193 off_t tte_off;
194 u_long vpn;
191 struct tte tte;
192 off_t tte_off;
193 u_long vpn;
195#endif
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;
194 off_t pa_off;
195 u_long pg_off;
196 int rest;
197
198 pg_off = va & PAGE_MASK;
199 if (va >= VM_MIN_DIRECT_ADDRESS)
200 pa_off = TLB_DIRECT_TO_PHYS(va) & ~PAGE_MASK;
203#if !defined(SUN4V)
204 else {
205 vpn = btop(va);
206 tte_off = kd->vmst->vm_tsb_off +
207 ((vpn & kd->vmst->vm_tsb_mask) << TTE_SHIFT);
208 if (!_kvm_read_phys(kd, tte_off, &tte, sizeof(tte)))
209 goto invalid;
210 if (!tte_match(&tte, va))
211 goto invalid;
212 pa_off = TTE_GET_PA(&tte);
213 }
201 else {
202 vpn = btop(va);
203 tte_off = kd->vmst->vm_tsb_off +
204 ((vpn & kd->vmst->vm_tsb_mask) << TTE_SHIFT);
205 if (!_kvm_read_phys(kd, tte_off, &tte, sizeof(tte)))
206 goto invalid;
207 if (!tte_match(&tte, va))
208 goto invalid;
209 pa_off = TTE_GET_PA(&tte);
210 }
214#endif
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 (%lx)", va);
224 return (0);
225}
211 rest = PAGE_SIZE - pg_off;
212 pa_off = _kvm_find_off(kd->vmst, pa_off, rest);
213 if (pa_off == KVM_OFF_NOTFOUND)
214 goto invalid;
215 *pa = pa_off + pg_off;
216 return (rest);
217
218invalid:
219 _kvm_err(kd, 0, "invalid address (%lx)", va);
220 return (0);
221}