| 96 | cpuid_info_t CPUID(); |
| 97 | |
| 98 | static inline void SetCPULocal(CPU* val){ |
| 99 | val->self = val; |
| 100 | asm volatile("wrmsr" :: "a"((uintptr_t)val & 0xFFFFFFFF) /*Value low*/, "d"(((uintptr_t)val >> 32) & 0xFFFFFFFF) /*Value high*/, "c"(0xC0000102) /*Set Kernel GS Base*/); |
| 101 | asm volatile("wrmsr" :: "a"((uintptr_t)val & 0xFFFFFFFF) /*Value low*/, "d"(((uintptr_t)val >> 32) & 0xFFFFFFFF) /*Value high*/, "c"(0xC0000101) /*Set Kernel GS Base*/); |
| 102 | } |
| 103 | |
| 104 | __attribute__((always_inline)) static inline CPU* GetCPULocal(){ |
| 105 | CPU* ret; |
no outgoing calls
no test coverage detected