/*
- * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
* use remaining physical pages
* to allocate page frames.
*/
-extern void pmap_init(void); /* Initialization,
+extern void pmap_init(void) __attribute__((section("__TEXT, initcode")));
+ /* Initialization,
* after kernel runs
* in virtual memory.
*/
*/
extern pmap_t pmap_create( /* Create a pmap_t. */
vm_map_size_t size,
+#ifdef __i386__
boolean_t is_64bit);
+#else
+ __unused boolean_t is_64bit);
+#endif
extern pmap_t (pmap_kernel)(void); /* Return the kernel's pmap */
extern void pmap_reference(pmap_t pmap); /* Gain a reference. */
extern void pmap_destroy(pmap_t pmap); /* Release a reference. */
extern unsigned int (pmap_cache_attributes)(
ppnum_t pn);
+extern void pmap_sync_page_data_phys(ppnum_t pa);
+extern void pmap_sync_page_attributes_phys(ppnum_t pa);
+
/*
* debug/assertions. pmap_verify_free returns true iff
* the given physical page is mapped into no pmap.
* Statistics routines
*/
extern int (pmap_resident_count)(pmap_t pmap);
+extern int (pmap_resident_max)(pmap_t pmap);
/*
* Sundry required (internal) routines
*/
+#ifdef CURRENTLY_UNUSED_AND_UNTESTED
extern void pmap_collect(pmap_t pmap);/* Perform garbage
* collection, if any */
-
+#endif
/*
* Optional routines
*/
if (__pmap != kernel_pmap) { \
ASSERT_PAGE_DECRYPTED(__page); \
} \
+ if (__page->error) { \
+ panic("VM page %p should not have an error\n", \
+ __page); \
+ } \
pmap_enter(__pmap, \
(virtual_address), \
__page->phys_page, \
- (protection) & ~__page->page_lock, \
+ (protection), \
(flags), \
(wired)); \
MACRO_END
vm_map_offset_t end,
boolean_t pageable);
+#ifndef NO_NESTED_PMAP
+extern uint64_t pmap_nesting_size_min;
+extern uint64_t pmap_nesting_size_max;
+extern kern_return_t pmap_nest(pmap_t grand,
+ pmap_t subord,
+ addr64_t vstart,
+ addr64_t nstart,
+ uint64_t size);
+extern kern_return_t pmap_unnest(pmap_t grand,
+ addr64_t vaddr,
+ uint64_t size);
+#endif /* NO_NESTED_PMAP */
+
#endif /* MACH_KERNEL_PRIVATE */
/*
#define VM_WIMG_MASK 0xFF
#define VM_WIMG_USE_DEFAULT 0x80000000
-extern void pmap_modify_pages( /* Set modify bit for pages */
- pmap_t map,
- vm_map_offset_t s,
- vm_map_offset_t e);
-
extern vm_offset_t pmap_extract(pmap_t pmap,
vm_map_offset_t va);
/* LP64todo - switch to vm_map_offset_t when it grows */
extern void pmap_remove( /* Remove mappings. */
pmap_t map,
- addr64_t s,
- addr64_t e);
+ vm_map_offset_t s,
+ vm_map_offset_t e);
+
+extern void fillPage(ppnum_t pa, unsigned int fill);
+extern void pmap_map_sharedpage(task_t task, pmap_t pmap);
+extern void pmap_unmap_sharedpage(pmap_t pmap);
#endif /* KERNEL_PRIVATE */