Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/include/cpufunc.h
Show First 20 Lines • Show All 483 Lines • ▼ Show 20 Lines | |||||
rcr4(void) | rcr4(void) | ||||
{ | { | ||||
u_long data; | u_long data; | ||||
__asm __volatile("movq %%cr4,%0" : "=r" (data)); | __asm __volatile("movq %%cr4,%0" : "=r" (data)); | ||||
return (data); | return (data); | ||||
} | } | ||||
static __inline void | |||||
load_cr8(u_long data) | |||||
{ | |||||
__asm __volatile("movq %0,%%cr8" : : "r" (data)); | |||||
} | |||||
static __inline u_long | static __inline u_long | ||||
rcr8(void) | |||||
{ | |||||
u_long data; | |||||
__asm __volatile("movq %%cr8,%0" : "=r" (data)); | |||||
return (data); | |||||
} | |||||
static __inline u_long | |||||
rxcr(u_int reg) | rxcr(u_int reg) | ||||
{ | { | ||||
u_int low, high; | u_int low, high; | ||||
__asm __volatile("xgetbv" : "=a" (low), "=d" (high) : "c" (reg)); | __asm __volatile("xgetbv" : "=a" (low), "=d" (high) : "c" (reg)); | ||||
return (low | ((uint64_t)high << 32)); | return (low | ((uint64_t)high << 32)); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 493 Lines • ▼ Show 20 Lines | |||||
void invlpg(u_int addr); | void invlpg(u_int addr); | ||||
void invltlb(void); | void invltlb(void); | ||||
u_short inw(u_int port); | u_short inw(u_int port); | ||||
void lidt(struct region_descriptor *addr); | void lidt(struct region_descriptor *addr); | ||||
void lldt(u_short sel); | void lldt(u_short sel); | ||||
void load_cr0(u_long cr0); | void load_cr0(u_long cr0); | ||||
void load_cr3(u_long cr3); | void load_cr3(u_long cr3); | ||||
void load_cr4(u_long cr4); | void load_cr4(u_long cr4); | ||||
void load_cr8(u_long cr8); | |||||
void load_dr0(uint64_t dr0); | void load_dr0(uint64_t dr0); | ||||
void load_dr1(uint64_t dr1); | void load_dr1(uint64_t dr1); | ||||
void load_dr2(uint64_t dr2); | void load_dr2(uint64_t dr2); | ||||
void load_dr3(uint64_t dr3); | void load_dr3(uint64_t dr3); | ||||
void load_dr6(uint64_t dr6); | void load_dr6(uint64_t dr6); | ||||
void load_dr7(uint64_t dr7); | void load_dr7(uint64_t dr7); | ||||
void load_fs(u_short sel); | void load_fs(u_short sel); | ||||
void load_gs(u_short sel); | void load_gs(u_short sel); | ||||
void ltr(u_short sel); | void ltr(u_short sel); | ||||
void outb(u_int port, u_char data); | void outb(u_int port, u_char data); | ||||
void outl(u_int port, u_int data); | void outl(u_int port, u_int data); | ||||
void outsb(u_int port, const void *addr, size_t count); | void outsb(u_int port, const void *addr, size_t count); | ||||
void outsl(u_int port, const void *addr, size_t count); | void outsl(u_int port, const void *addr, size_t count); | ||||
void outsw(u_int port, const void *addr, size_t count); | void outsw(u_int port, const void *addr, size_t count); | ||||
void outw(u_int port, u_short data); | void outw(u_int port, u_short data); | ||||
u_long rcr0(void); | u_long rcr0(void); | ||||
u_long rcr2(void); | u_long rcr2(void); | ||||
u_long rcr3(void); | u_long rcr3(void); | ||||
u_long rcr4(void); | u_long rcr4(void); | ||||
u_long rcr8(void); | |||||
uint64_t rdmsr(u_int msr); | uint64_t rdmsr(u_int msr); | ||||
uint32_t rdmsr32(u_int msr); | uint32_t rdmsr32(u_int msr); | ||||
uint64_t rdpmc(u_int pmc); | uint64_t rdpmc(u_int pmc); | ||||
uint64_t rdr0(void); | uint64_t rdr0(void); | ||||
uint64_t rdr1(void); | uint64_t rdr1(void); | ||||
uint64_t rdr2(void); | uint64_t rdr2(void); | ||||
uint64_t rdr3(void); | uint64_t rdr3(void); | ||||
uint64_t rdr6(void); | uint64_t rdr6(void); | ||||
Show All 19 Lines |