|
Lines 178-183
Link Here
|
| 178 |
* VM_MIN_USER_ADDRESS and VM_MAX_USER_ADDRESS define the start and end of the |
178 |
* VM_MIN_USER_ADDRESS and VM_MAX_USER_ADDRESS define the start and end of the |
| 179 |
* user address space. |
179 |
* user address space. |
| 180 |
*/ |
180 |
*/ |
|
|
181 |
|
| 182 |
#ifndef LOCORE |
| 183 |
#define DMAP_FLAG_VALID (0x1) |
| 184 |
|
| 185 |
#define MAX_DMAP_ENTRIES 64 |
| 186 |
struct direct_map_desc { |
| 187 |
uint64_t pa_start; |
| 188 |
uint64_t va_start; |
| 189 |
uint64_t size; |
| 190 |
uint64_t flags; |
| 191 |
}; |
| 192 |
|
| 193 |
extern struct direct_map_desc dmap_desc[]; |
| 194 |
#endif |
| 195 |
|
| 181 |
#define VM_MIN_ADDRESS (0x0000000000000000UL) |
196 |
#define VM_MIN_ADDRESS (0x0000000000000000UL) |
| 182 |
#define VM_MAX_ADDRESS (0xffffffffffffffffUL) |
197 |
#define VM_MAX_ADDRESS (0xffffffffffffffffUL) |
| 183 |
|
198 |
|
|
Lines 223-234
Link Here
|
| 223 |
#define DMAP_MIN_PHYSADDR (dmap_phys_base) |
238 |
#define DMAP_MIN_PHYSADDR (dmap_phys_base) |
| 224 |
#define DMAP_MAX_PHYSADDR (dmap_phys_max) |
239 |
#define DMAP_MAX_PHYSADDR (dmap_phys_max) |
| 225 |
|
240 |
|
| 226 |
/* True if pa is in the dmap range */ |
241 |
#ifndef LOCORE |
| 227 |
#define PHYS_IN_DMAP(pa) ((pa) >= DMAP_MIN_PHYSADDR && \ |
242 |
static inline int |
| 228 |
(pa) < DMAP_MAX_PHYSADDR) |
243 |
PHYS_IN_DMAP(uint64_t pa) |
| 229 |
/* True if va is in the dmap range */ |
244 |
{ |
| 230 |
#define VIRT_IN_DMAP(va) ((va) >= DMAP_MIN_ADDRESS && \ |
245 |
struct direct_map_desc *desc; |
| 231 |
(va) < (dmap_max_addr)) |
246 |
int a; |
|
|
247 |
|
| 248 |
for (a = 0; a < MAX_DMAP_ENTRIES; a++) { |
| 249 |
desc = &dmap_desc[a]; |
| 250 |
if (desc->flags == DMAP_FLAG_VALID) { |
| 251 |
if (pa >= desc->pa_start && pa <= desc->pa_start + desc->size) |
| 252 |
return (1); |
| 253 |
} |
| 254 |
} |
| 255 |
|
| 256 |
return (0); |
| 257 |
} |
| 258 |
|
| 259 |
static inline int |
| 260 |
VIRT_IN_DMAP(uint64_t va) |
| 261 |
{ |
| 262 |
struct direct_map_desc *desc; |
| 263 |
int a; |
| 264 |
|
| 265 |
for (a = 0; a < MAX_DMAP_ENTRIES; a++) { |
| 266 |
desc = &dmap_desc[a]; |
| 267 |
if (desc->flags == DMAP_FLAG_VALID) { |
| 268 |
if (va >= desc->va_start && va <= desc->va_start + desc->size) |
| 269 |
return (1); |
| 270 |
} |
| 271 |
} |
| 272 |
|
| 273 |
return (0); |
| 274 |
} |
| 275 |
#endif |
| 232 |
|
276 |
|
| 233 |
#define PMAP_HAS_DMAP 1 |
277 |
#define PMAP_HAS_DMAP 1 |
| 234 |
#define PHYS_TO_DMAP(pa) \ |
278 |
#define PHYS_TO_DMAP(pa) \ |