pmap.h revision 1.1.4.1 1 1.1.4.1 jruoho /* $NetBSD: pmap.h,v 1.1.4.1 2011/06/06 09:06:28 jruoho Exp $ */
2 1.1.4.1 jruoho /*-
3 1.1.4.1 jruoho * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
4 1.1.4.1 jruoho * All rights reserved.
5 1.1.4.1 jruoho *
6 1.1.4.1 jruoho * This code is derived from software contributed to The NetBSD Foundation
7 1.1.4.1 jruoho * by Raytheon BBN Technologies Corp and Defense Advanced Research Projects
8 1.1.4.1 jruoho * Agency and which was developed by Matt Thomas of 3am Software Foundry.
9 1.1.4.1 jruoho *
10 1.1.4.1 jruoho * This material is based upon work supported by the Defense Advanced Research
11 1.1.4.1 jruoho * Projects Agency and Space and Naval Warfare Systems Center, Pacific, under
12 1.1.4.1 jruoho * Contract No. N66001-09-C-2073.
13 1.1.4.1 jruoho * Approved for Public Release, Distribution Unlimited
14 1.1.4.1 jruoho *
15 1.1.4.1 jruoho * Redistribution and use in source and binary forms, with or without
16 1.1.4.1 jruoho * modification, are permitted provided that the following conditions
17 1.1.4.1 jruoho * are met:
18 1.1.4.1 jruoho * 1. Redistributions of source code must retain the above copyright
19 1.1.4.1 jruoho * notice, this list of conditions and the following disclaimer.
20 1.1.4.1 jruoho * 2. Redistributions in binary form must reproduce the above copyright
21 1.1.4.1 jruoho * notice, this list of conditions and the following disclaimer in the
22 1.1.4.1 jruoho * documentation and/or other materials provided with the distribution.
23 1.1.4.1 jruoho *
24 1.1.4.1 jruoho * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
25 1.1.4.1 jruoho * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
26 1.1.4.1 jruoho * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
27 1.1.4.1 jruoho * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
28 1.1.4.1 jruoho * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 1.1.4.1 jruoho * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 1.1.4.1 jruoho * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 1.1.4.1 jruoho * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 1.1.4.1 jruoho * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 1.1.4.1 jruoho * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 1.1.4.1 jruoho * POSSIBILITY OF SUCH DAMAGE.
35 1.1.4.1 jruoho */
36 1.1.4.1 jruoho #ifndef _POWERPC_BOOKE_PMAP_H_
37 1.1.4.1 jruoho #define _POWERPC_BOOKE_PMAP_H_
38 1.1.4.1 jruoho
39 1.1.4.1 jruoho #ifdef _LOCORE
40 1.1.4.1 jruoho #error use assym.h instead
41 1.1.4.1 jruoho #endif
42 1.1.4.1 jruoho
43 1.1.4.1 jruoho #include <sys/cpu.h>
44 1.1.4.1 jruoho #include <sys/kcore.h>
45 1.1.4.1 jruoho #include <uvm/uvm_page.h>
46 1.1.4.1 jruoho #ifdef __PMAP_PRIVATE
47 1.1.4.1 jruoho #include <powerpc/booke/cpuvar.h>
48 1.1.4.1 jruoho #include <powerpc/cpuset.h>
49 1.1.4.1 jruoho #endif
50 1.1.4.1 jruoho
51 1.1.4.1 jruoho #define PMAP_MD_NOCACHE 0x01000000
52 1.1.4.1 jruoho #define PMAP_NEED_PROCWR
53 1.1.4.1 jruoho
54 1.1.4.1 jruoho #include <powerpc/booke/pte.h>
55 1.1.4.1 jruoho
56 1.1.4.1 jruoho #define NBSEG (NBPG*NPTEPG)
57 1.1.4.1 jruoho #define SEGSHIFT (PGSHIFT + PGSHIFT - 2)
58 1.1.4.1 jruoho #define SEGOFSET ((1 << SEGSHIFT) - 1)
59 1.1.4.1 jruoho #define PMAP_SEGTABSIZE (1 << (32 - SEGSHIFT))
60 1.1.4.1 jruoho #define NPTEPG (NBPG >> 2)
61 1.1.4.1 jruoho
62 1.1.4.1 jruoho #define KERNEL_PID 0
63 1.1.4.1 jruoho
64 1.1.4.1 jruoho #define PMAP_TLB_NUM_PIDS 256
65 1.1.4.1 jruoho #define PMAP_INVALID_SEGTAB_ADDRESS ((struct pmap_segtab *)0xfeeddead)
66 1.1.4.1 jruoho
67 1.1.4.1 jruoho #ifndef _LOCORE
68 1.1.4.1 jruoho #define pmap_phys_address(x) (x)
69 1.1.4.1 jruoho
70 1.1.4.1 jruoho void pmap_procwr(struct proc *, vaddr_t, size_t);
71 1.1.4.1 jruoho #define PMAP_NEED_PROCWR
72 1.1.4.1 jruoho
73 1.1.4.1 jruoho struct vm_page *
74 1.1.4.1 jruoho pmap_md_alloc_poolpage(int flags);
75 1.1.4.1 jruoho vaddr_t pmap_md_map_poolpage(paddr_t);
76 1.1.4.1 jruoho bool pmap_md_direct_mapped_vaddr_p(vaddr_t);
77 1.1.4.1 jruoho bool pmap_md_io_vaddr_p(vaddr_t);
78 1.1.4.1 jruoho paddr_t pmap_md_direct_mapped_vaddr_to_paddr(vaddr_t);
79 1.1.4.1 jruoho vaddr_t pmap_md_direct_map_paddr(paddr_t);
80 1.1.4.1 jruoho void pmap_md_init(void);
81 1.1.4.1 jruoho
82 1.1.4.1 jruoho void pmap_md_page_syncicache(struct vm_page *, __cpuset_t);
83 1.1.4.1 jruoho void pmap_bootstrap(vaddr_t, vaddr_t, const phys_ram_seg_t *, size_t);
84 1.1.4.1 jruoho bool pmap_extract(struct pmap *, vaddr_t, paddr_t *);
85 1.1.4.1 jruoho
86 1.1.4.1 jruoho static inline paddr_t vtophys(vaddr_t);
87 1.1.4.1 jruoho
88 1.1.4.1 jruoho static inline paddr_t
89 1.1.4.1 jruoho vtophys(vaddr_t va)
90 1.1.4.1 jruoho {
91 1.1.4.1 jruoho paddr_t pa;
92 1.1.4.1 jruoho
93 1.1.4.1 jruoho if (pmap_extract(pmap_kernel(), va, &pa))
94 1.1.4.1 jruoho return pa;
95 1.1.4.1 jruoho KASSERT(0);
96 1.1.4.1 jruoho return (paddr_t) -1;
97 1.1.4.1 jruoho }
98 1.1.4.1 jruoho
99 1.1.4.1 jruoho /*
100 1.1.4.1 jruoho * Virtual Cache Alias helper routines. Not a problem for Booke CPUs.
101 1.1.4.1 jruoho */
102 1.1.4.1 jruoho static inline bool
103 1.1.4.1 jruoho pmap_md_vca_add(struct vm_page *pg, vaddr_t va, pt_entry_t *nptep)
104 1.1.4.1 jruoho {
105 1.1.4.1 jruoho return false;
106 1.1.4.1 jruoho }
107 1.1.4.1 jruoho
108 1.1.4.1 jruoho static inline void
109 1.1.4.1 jruoho pmap_md_vca_remove(struct vm_page *pg, vaddr_t va)
110 1.1.4.1 jruoho {
111 1.1.4.1 jruoho
112 1.1.4.1 jruoho }
113 1.1.4.1 jruoho
114 1.1.4.1 jruoho static inline void
115 1.1.4.1 jruoho pmap_md_vca_clean(struct vm_page *pg, vaddr_t va, int op)
116 1.1.4.1 jruoho {
117 1.1.4.1 jruoho }
118 1.1.4.1 jruoho
119 1.1.4.1 jruoho #define POOL_VTOPHYS(va) ((paddr_t)(vaddr_t)(va))
120 1.1.4.1 jruoho #define POOL_PHYSTOV(pa) ((vaddr_t)(paddr_t)(pa))
121 1.1.4.1 jruoho
122 1.1.4.1 jruoho #include <common/pmap/tlb/pmap.h>
123 1.1.4.1 jruoho #endif /* _LOCORE */
124 1.1.4.1 jruoho
125 1.1.4.1 jruoho #endif /* !_POWERPC_BOOKE_PMAP_H_ */
126