提交 2d5c99ba 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

amd64 asm nits and rcr3.

上级 ac0a9fb2
...@@ -110,23 +110,34 @@ writemsr(u32 msr, u64 val) ...@@ -110,23 +110,34 @@ writemsr(u32 msr, u64 val)
__asm volatile("wrmsr" : : "c" (msr), "a" (lo), "d" (hi)); __asm volatile("wrmsr" : : "c" (msr), "a" (lo), "d" (hi));
} }
static inline u64 rdtsc(void) static inline
u64 rdtsc(void)
{ {
u32 hi, lo; u32 hi, lo;
__asm volatile("rdtsc" : "=a"(lo), "=d"(hi)); __asm volatile("rdtsc" : "=a"(lo), "=d"(hi));
return ((u64)lo)|(((u64)hi)<<32); return ((u64)lo)|(((u64)hi)<<32);
} }
static inline void hlt(void) static inline
void hlt(void)
{ {
__asm volatile("hlt"); __asm volatile("hlt");
} }
static inline void lcr3(u64 val) static inline void
lcr3(u64 val)
{ {
__asm volatile("movq %0,%%cr3" : : "r" (val)); __asm volatile("movq %0,%%cr3" : : "r" (val));
} }
static inline u64
rcr3(void)
{
u64 val;
__asm volatile("movq %%cr3,%0" : "=r" (val));
return val;
}
static inline uptr static inline uptr
rcr2(void) rcr2(void)
{ {
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论