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} |