Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/vm_machdep.c
Show First 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | |||||
#include <sys/vmmeter.h> | #include <sys/vmmeter.h> | ||||
#include <machine/cpu.h> | #include <machine/cpu.h> | ||||
#include <machine/md_var.h> | #include <machine/md_var.h> | ||||
#include <machine/pcb.h> | #include <machine/pcb.h> | ||||
#include <machine/smp.h> | #include <machine/smp.h> | ||||
#include <machine/specialreg.h> | #include <machine/specialreg.h> | ||||
#include <machine/tss.h> | #include <machine/tss.h> | ||||
#include <x86/ifunc.h> | |||||
#include <vm/vm.h> | #include <vm/vm.h> | ||||
#include <vm/vm_extern.h> | #include <vm/vm_extern.h> | ||||
#include <vm/vm_kern.h> | #include <vm/vm_kern.h> | ||||
#include <vm/vm_page.h> | #include <vm/vm_page.h> | ||||
#include <vm/vm_map.h> | #include <vm/vm_map.h> | ||||
#include <vm/vm_param.h> | #include <vm/vm_param.h> | ||||
▲ Show 20 Lines • Show All 632 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
/* | /* | ||||
* stuff other tests for known memory-mapped devices (PCI?) | * stuff other tests for known memory-mapped devices (PCI?) | ||||
* here | * here | ||||
*/ | */ | ||||
return 1; | return 1; | ||||
} | |||||
int fubyte_nosmap(volatile const void *base); | |||||
int fubyte_smap(volatile const void *base); | |||||
DEFINE_IFUNC(, int, fubyte, (volatile const void *), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
fubyte_smap : fubyte_nosmap); | |||||
} | |||||
int fuword16_nosmap(volatile const void *base); | |||||
int fuword16_smap(volatile const void *base); | |||||
DEFINE_IFUNC(, int, fuword16, (volatile const void *), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
fuword16_smap : fuword16_nosmap); | |||||
} | |||||
int fueword_nosmap(volatile const void *base, long *val); | |||||
int fueword_smap(volatile const void *base, long *val); | |||||
DEFINE_IFUNC(, int, fueword, (volatile const void *, long *), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
fueword_smap : fueword_nosmap); | |||||
} | |||||
DEFINE_IFUNC(, int, fueword64, (volatile const void *, int64_t *), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
fueword_smap : fueword_nosmap); | |||||
} | |||||
int fueword32_nosmap(volatile const void *base, int32_t *val); | |||||
int fueword32_smap(volatile const void *base, int32_t *val); | |||||
DEFINE_IFUNC(, int, fueword32, (volatile const void *, int32_t *), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
fueword32_smap : fueword32_nosmap); | |||||
} | |||||
int subyte_nosmap(volatile void *base, int byte); | |||||
int subyte_smap(volatile void *base, int byte); | |||||
DEFINE_IFUNC(, int, subyte, (volatile void *, int), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
subyte_smap : subyte_nosmap); | |||||
} | |||||
int suword16_nosmap(volatile void *base, int word); | |||||
int suword16_smap(volatile void *base, int word); | |||||
DEFINE_IFUNC(, int, suword16, (volatile void *, int), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
suword16_smap : suword16_nosmap); | |||||
} | |||||
int suword32_nosmap(volatile void *base, int32_t word); | |||||
int suword32_smap(volatile void *base, int32_t word); | |||||
DEFINE_IFUNC(, int, suword32, (volatile void *, int32_t), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
suword32_smap : suword32_nosmap); | |||||
} | |||||
int suword_nosmap(volatile void *base, long word); | |||||
int suword_smap(volatile void *base, long word); | |||||
DEFINE_IFUNC(, int, suword, (volatile void *, long), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
suword_smap : suword_nosmap); | |||||
} | |||||
DEFINE_IFUNC(, int, suword64, (volatile void *, int64_t), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
suword_smap : suword_nosmap); | |||||
} | |||||
int casueword32_nosmap(volatile uint32_t *base, uint32_t oldval, | |||||
uint32_t *oldvalp, uint32_t newval); | |||||
int casueword32_smap(volatile uint32_t *base, uint32_t oldval, | |||||
uint32_t *oldvalp, uint32_t newval); | |||||
DEFINE_IFUNC(, int, casueword32, (volatile uint32_t *, uint32_t, uint32_t *, | |||||
uint32_t), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
casueword32_smap : casueword32_nosmap); | |||||
} | |||||
int casueword_nosmap(volatile u_long *p, u_long oldval, u_long *oldvalp, | |||||
u_long newval); | |||||
int casueword_smap(volatile u_long *p, u_long oldval, u_long *oldvalp, | |||||
u_long newval); | |||||
DEFINE_IFUNC(, int, casueword, (volatile u_long *, u_long, u_long *, u_long), | |||||
static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
casueword_smap : casueword_nosmap); | |||||
} | |||||
int copyinstr_nosmap(const void *udaddr, void *kaddr, size_t len, | |||||
size_t *lencopied); | |||||
int copyinstr_smap(const void *udaddr, void *kaddr, size_t len, | |||||
size_t *lencopied); | |||||
DEFINE_IFUNC(, int, copyinstr, (const void *, void *, size_t, size_t *), | |||||
static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
copyinstr_smap : copyinstr_nosmap); | |||||
} | |||||
int copyin_nosmap(const void *udaddr, void *kaddr, size_t len); | |||||
int copyin_smap(const void *udaddr, void *kaddr, size_t len); | |||||
DEFINE_IFUNC(, int, copyin, (const void *, void *, size_t), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
copyin_smap : copyin_nosmap); | |||||
} | |||||
int copyout_nosmap(const void *kaddr, void *udaddr, size_t len); | |||||
int copyout_smap(const void *kaddr, void *udaddr, size_t len); | |||||
DEFINE_IFUNC(, int, copyout, (const void *, void *, size_t), static) | |||||
{ | |||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | |||||
copyout_smap : copyout_nosmap); | |||||
} | } |