Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/pmap.c
Show First 20 Lines • Show All 7,415 Lines • ▼ Show 20 Lines | if ((*addr & PDRMASK) < superpage_offset) | ||||
*addr = (*addr & ~PDRMASK) + superpage_offset; | *addr = (*addr & ~PDRMASK) + superpage_offset; | ||||
else | else | ||||
*addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset; | *addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset; | ||||
} | } | ||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
static unsigned long num_dirty_emulations; | static unsigned long num_dirty_emulations; | ||||
SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_dirty_emulations, CTLFLAG_RW, | SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_dirty_emulations, CTLFLAG_RW, | ||||
&num_dirty_emulations, 0, NULL); | &num_dirty_emulations, 0, | ||||
"Number of dirty emulations"); | |||||
static unsigned long num_accessed_emulations; | static unsigned long num_accessed_emulations; | ||||
SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_accessed_emulations, CTLFLAG_RW, | SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_accessed_emulations, CTLFLAG_RW, | ||||
&num_accessed_emulations, 0, NULL); | &num_accessed_emulations, 0, | ||||
"Count of accessed bit emulations"); | |||||
static unsigned long num_superpage_accessed_emulations; | static unsigned long num_superpage_accessed_emulations; | ||||
SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_superpage_accessed_emulations, CTLFLAG_RW, | SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_superpage_accessed_emulations, CTLFLAG_RW, | ||||
&num_superpage_accessed_emulations, 0, NULL); | &num_superpage_accessed_emulations, 0, | ||||
"Count of accessed bit emulations for superpages"); | |||||
static unsigned long ad_emulation_superpage_promotions; | static unsigned long ad_emulation_superpage_promotions; | ||||
SYSCTL_ULONG(_vm_pmap, OID_AUTO, ad_emulation_superpage_promotions, CTLFLAG_RW, | SYSCTL_ULONG(_vm_pmap, OID_AUTO, ad_emulation_superpage_promotions, CTLFLAG_RW, | ||||
&ad_emulation_superpage_promotions, 0, NULL); | &ad_emulation_superpage_promotions, 0, | ||||
"Superpage promotions attempted by AD"); | |||||
#endif /* INVARIANTS */ | #endif /* INVARIANTS */ | ||||
int | int | ||||
pmap_emulate_accessed_dirty(pmap_t pmap, vm_offset_t va, int ftype) | pmap_emulate_accessed_dirty(pmap_t pmap, vm_offset_t va, int ftype) | ||||
{ | { | ||||
int rv; | int rv; | ||||
struct rwlock *lock; | struct rwlock *lock; | ||||
#if VM_NRESERVLEVEL > 0 | #if VM_NRESERVLEVEL > 0 | ||||
▲ Show 20 Lines • Show All 598 Lines • Show Last 20 Lines |