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