Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/include/cpufunc.h
Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | |||||
#define readl(va) (*(volatile uint32_t *) (va)) | #define readl(va) (*(volatile uint32_t *) (va)) | ||||
#define readq(va) (*(volatile uint64_t *) (va)) | #define readq(va) (*(volatile uint64_t *) (va)) | ||||
#define writeb(va, d) (*(volatile uint8_t *) (va) = (d)) | #define writeb(va, d) (*(volatile uint8_t *) (va) = (d)) | ||||
#define writew(va, d) (*(volatile uint16_t *) (va) = (d)) | #define writew(va, d) (*(volatile uint16_t *) (va) = (d)) | ||||
#define writel(va, d) (*(volatile uint32_t *) (va) = (d)) | #define writel(va, d) (*(volatile uint32_t *) (va) = (d)) | ||||
#define writeq(va, d) (*(volatile uint64_t *) (va) = (d)) | #define writeq(va, d) (*(volatile uint64_t *) (va) = (d)) | ||||
#if defined(__GNUCLIKE_ASM) && defined(__CC_SUPPORTS___INLINE) | #if defined(__CC_SUPPORTS___INLINE) | ||||
static __inline void | static __inline void | ||||
breakpoint(void) | breakpoint(void) | ||||
{ | { | ||||
__asm __volatile("int $3"); | __asm __volatile("int $3"); | ||||
} | } | ||||
#define bsfl(mask) __builtin_ctz(mask) | #define bsfl(mask) __builtin_ctz(mask) | ||||
▲ Show 20 Lines • Show All 890 Lines • ▼ Show 20 Lines | |||||
static __inline int | static __inline int | ||||
sgx_eremove(void *epc) | sgx_eremove(void *epc) | ||||
{ | { | ||||
return (sgx_encls(SGX_EREMOVE, 0, (uint64_t)epc, 0)); | return (sgx_encls(SGX_EREMOVE, 0, (uint64_t)epc, 0)); | ||||
} | } | ||||
#else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */ | #else /* !__CC_SUPPORTS___INLINE */ | ||||
int breakpoint(void); | int breakpoint(void); | ||||
u_int bsfl(u_int mask); | u_int bsfl(u_int mask); | ||||
u_int bsrl(u_int mask); | u_int bsrl(u_int mask); | ||||
void clflush(u_long addr); | void clflush(u_long addr); | ||||
void clts(void); | void clts(void); | ||||
void cpuid_count(u_int ax, u_int cx, u_int *p); | void cpuid_count(u_int ax, u_int cx, u_int *p); | ||||
void disable_intr(void); | void disable_intr(void); | ||||
▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
uint64_t rdtsc(void); | uint64_t rdtsc(void); | ||||
u_long read_rflags(void); | u_long read_rflags(void); | ||||
u_int rfs(void); | u_int rfs(void); | ||||
u_int rgs(void); | u_int rgs(void); | ||||
void wbinvd(void); | void wbinvd(void); | ||||
void write_rflags(u_int rf); | void write_rflags(u_int rf); | ||||
void wrmsr(u_int msr, uint64_t newval); | void wrmsr(u_int msr, uint64_t newval); | ||||
#endif /* __GNUCLIKE_ASM && __CC_SUPPORTS___INLINE */ | #endif /* __CC_SUPPORTS___INLINE */ | ||||
void reset_dbregs(void); | void reset_dbregs(void); | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
int rdmsr_safe(u_int msr, uint64_t *val); | int rdmsr_safe(u_int msr, uint64_t *val); | ||||
int wrmsr_safe(u_int msr, uint64_t newval); | int wrmsr_safe(u_int msr, uint64_t newval); | ||||
#endif | #endif | ||||
#endif /* !_MACHINE_CPUFUNC_H_ */ | #endif /* !_MACHINE_CPUFUNC_H_ */ |