slb.c (209975) | slb.c (210704) |
---|---|
1/*- 2 * Copyright (c) 2010 Nathan Whitehorn 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 2010 Nathan Whitehorn 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/sys/powerpc/aim/slb.c 209975 2010-07-13 05:32:19Z nwhitehorn $ | 26 * $FreeBSD: head/sys/powerpc/aim/slb.c 210704 2010-07-31 21:35:15Z nwhitehorn $ |
27 */ 28 29#include <sys/param.h> 30#include <sys/kernel.h> 31#include <sys/lock.h> 32#include <sys/mutex.h> 33#include <sys/proc.h> 34#include <sys/systm.h> --- 64 unchanged lines hidden (view full) --- 99 slb->slbv = found->slb.slbv; 100 return (0); 101} 102 103uint64_t 104va_to_vsid(pmap_t pm, vm_offset_t va) 105{ 106 struct slb entry; | 27 */ 28 29#include <sys/param.h> 30#include <sys/kernel.h> 31#include <sys/lock.h> 32#include <sys/mutex.h> 33#include <sys/proc.h> 34#include <sys/systm.h> --- 64 unchanged lines hidden (view full) --- 99 slb->slbv = found->slb.slbv; 100 return (0); 101} 102 103uint64_t 104va_to_vsid(pmap_t pm, vm_offset_t va) 105{ 106 struct slb entry; |
107 int large; | |
108 109 /* Shortcut kernel case */ | 107 108 /* Shortcut kernel case */ |
110 if (pm == kernel_pmap) { 111 large = 0; 112 if (hw_direct_map && va < VM_MIN_KERNEL_ADDRESS && 113 mem_valid(va, 0) == 0) 114 large = 1; | 109 if (pm == kernel_pmap) 110 return (KERNEL_VSID((uintptr_t)va >> ADDR_SR_SHFT)); |
115 | 111 |
116 return (KERNEL_VSID((uintptr_t)va >> ADDR_SR_SHFT, large)); 117 } 118 | |
119 /* 120 * If there is no vsid for this VA, we need to add a new entry 121 * to the PMAP's segment table. 122 */ 123 124 if (va_to_slb_entry(pm, va, &entry) != 0) 125 return (allocate_vsid(pm, (uintptr_t)va >> ADDR_SR_SHFT, 0)); 126 --- 177 unchanged lines hidden --- | 112 /* 113 * If there is no vsid for this VA, we need to add a new entry 114 * to the PMAP's segment table. 115 */ 116 117 if (va_to_slb_entry(pm, va, &entry) != 0) 118 return (allocate_vsid(pm, (uintptr_t)va >> ADDR_SR_SHFT, 0)); 119 --- 177 unchanged lines hidden --- |